def test_get_name_url(self): """Test naming function""" res = { 'name': 'vsc-install', 'url': 'https://github.com/hpcugent/vsc-install', 'download_url': 'https://github.com/hpcugent/vsc-install/archive/0.1.2.tar.gz', } for fn in ['PKG-INFO', 'git_config', 'git_config_1', 'git_config_2', 'git_config_3', 'git_config_4']: self.assertEqual(get_name_url(os.path.join(shared_setup.REPO_TEST_DIR, 'setup', fn), version='0.1.2'), res, msg='determined name and url from %s file' % fn) res.pop('download_url') fn = 'git_config' self.assertEqual(get_name_url(os.path.join(shared_setup.REPO_TEST_DIR, 'setup', fn), version='0.1.2', license_name='LGPLv2+'), res, msg='determined name and url from %s file with license' % fn)
def check_header(filename, script=False, write=False): """ Given filename, extract the header, verify it if script: treat first line as shebang if write: adapt file to new header If the header contains line '### External compatible license', one assumes the license is correct and should not be controlled by check_header Return if header is different from expected or not """ header, shebang = get_header(filename, script=script) header_end_pos = len(header) changed = False if shebang is not None: # original position header_end_pos += 1 + len(shebang) # 1 is from splitted newline if 'python' in shebang and shebang != SHEBANG_ENV_PYTHON: log.info('python in shebang, forcing env python (header modified)') changed = True shebang = SHEBANG_ENV_PYTHON if re.search(r'^### External compatible license\s*$', header, re.M): log.info('Header is an external compatible license. Leaving the header as-is.') return changed # genheader # version is irrelevant name_url = get_name_url(version='ALL_VERSIONS') license, _ = get_license() # begin and endyear from copyright rule beginyear, endyear = begin_end_from_header(header) data = { 'beginyear': beginyear, 'endyear': endyear, 'name': name_url['name'], 'url': name_url['url'], } gen_header = gen_license_header(license, **data) # force encoding? reg_enc = ENCODING_REGEXP.search(header) if reg_enc: enc_line = reg_enc.group(1) + "\n" # matches full line, but not newline gen_header = enc_line + gen_header if header != gen_header: log.info("Diff header vs gen_header\n" + "".join(nicediff(header, gen_header))) changed = True if write and changed: log.info('write enabled and different header. Going to modify file %s' % filename) wholetext = open(filename).read() newtext = '' if shebang is not None: newtext += shebang + "\n" newtext += gen_header newtext += wholetext[header_end_pos:] _write(filename, newtext) # return different or not return changed