def make_config_from_repo( repo_path, sha=None, hooks=None, check=True, legacy=False, ): filename = C.MANIFEST_FILE_LEGACY if legacy else C.MANIFEST_FILE manifest = load_manifest(os.path.join(repo_path, filename)) config = OrderedDict(( ('repo', repo_path), ('sha', sha or get_head_sha(repo_path)), ( 'hooks', hooks or [OrderedDict((('id', hook['id']), )) for hook in manifest], ), )) if check: wrapped = validate([config], CONFIG_SCHEMA) config, = apply_defaults(wrapped, CONFIG_SCHEMA) return config else: return config
def check_useless_excludes(config_file): config = load_config(config_file) files = git.get_all_files() retv = 0 exclude = config['exclude'] if not exclude_matches_any(files, '', exclude): print( 'The global exclude pattern {!r} does not match any files'.format( exclude), ) retv = 1 for repo in config['repos']: for hook in repo['hooks']: # Not actually a manifest dict, but this more accurately reflects # the defaults applied during runtime hook = apply_defaults(hook, MANIFEST_HOOK_DICT) include, exclude = hook['files'], hook['exclude'] if not exclude_matches_any(files, include, exclude): print( 'The exclude pattern {!r} for {} does not match any files'. format(exclude, hook['id']), ) retv = 1 return retv
def hooks(self): return tuple(( hook['id'], _validate_minimum_version( apply_defaults( validate(hook, MANIFEST_HOOK_DICT), MANIFEST_HOOK_DICT, ), ), ) for hook in self.repo_config['hooks'])
def hooks(self): return tuple( ( hook['id'], _validate_minimum_version( apply_defaults( validate(hook, MANIFEST_HOOK_DICT), MANIFEST_HOOK_DICT, ), ), ) for hook in self.repo_config['hooks'] )
def make_config_from_repo(repo_path, sha=None, hooks=None, check=True): manifest = load_manifest(os.path.join(repo_path, C.MANIFEST_FILE)) config = OrderedDict(( ('repo', 'file://{}'.format(repo_path)), ('sha', sha or git.head_sha(repo_path)), ( 'hooks', hooks or [OrderedDict((('id', hook['id']),)) for hook in manifest], ), )) if check: wrapped = validate({'repos': [config]}, CONFIG_SCHEMA) wrapped = apply_defaults(wrapped, CONFIG_SCHEMA) config, = wrapped['repos'] return config else: return config
def make_config_from_repo(repo_path, sha=None, hooks=None, check=True): manifest = load_manifest(os.path.join(repo_path, C.MANIFEST_FILE)) config = OrderedDict(( ('repo', 'file://{}'.format(repo_path)), ('sha', sha or get_head_sha(repo_path)), ( 'hooks', hooks or [OrderedDict((('id', hook['id']),)) for hook in manifest], ), )) if check: wrapped = validate({'repos': [config]}, CONFIG_SCHEMA) wrapped = apply_defaults(wrapped, CONFIG_SCHEMA) config, = wrapped['repos'] return config else: return config
def make_config_from_repo( repo_path, sha=None, hooks=None, check=True, legacy=False, ): filename = C.MANIFEST_FILE_LEGACY if legacy else C.MANIFEST_FILE manifest = load_manifest(os.path.join(repo_path, filename)) config = OrderedDict(( ('repo', repo_path), ('sha', sha or get_head_sha(repo_path)), ( 'hooks', hooks or [OrderedDict((('id', hook['id']),)) for hook in manifest], ), )) if check: wrapped = validate([config], CONFIG_SCHEMA) config, = apply_defaults(wrapped, CONFIG_SCHEMA) return config else: return config
def test_apply_defaults_nested(): val = {'repo': 'repo1', 'hooks': [{}]} ret = apply_defaults(val, nested_schema_optional) assert ret == {'repo': 'repo1', 'hooks': [{'key': False}]}
def _hook_from_manifest_dct(dct): dct = validate(apply_defaults(dct, MANIFEST_HOOK_DICT), MANIFEST_HOOK_DICT) dct = _hook(dct) return dct
def test_apply_defaults_does_nothing_on_non_optional(): ret = apply_defaults({}, map_required) assert ret == {}
def test_apply_defaults_map_in_list(): ret = apply_defaults([{}], Array(map_optional)) assert ret == [{'key': False}]
def test_apply_defaults_sets_default(): ret = apply_defaults({}, map_optional) assert ret == {'key': False}
def test_apply_defaults_does_not_change_non_default(): ret = apply_defaults({'key': True}, map_optional) assert ret == {'key': True}
def test_apply_defaults_copies_object(): val = {} ret = apply_defaults(val, map_optional) assert ret is not val