diff --git a/pre_commit/clientlib/validate_manifest.py b/pre_commit/clientlib/validate_manifest.py index 0bfb4a5a..e80e2f95 100644 --- a/pre_commit/clientlib/validate_manifest.py +++ b/pre_commit/clientlib/validate_manifest.py @@ -31,9 +31,9 @@ def additional_manifest_check(obj): for hook_config in obj: language = hook_config['language'] - if not any(language.startswith(lang) for lang in all_languages): + if language not in all_languages: raise InvalidManifestError( - 'Expected language {0} for {1} to start with one of {2!r}'.format( + 'Expected language {0} for {1} to be one of {2!r}'.format( hook_config['id'], hook_config['language'], all_languages, diff --git a/tests/clientlib/validate_manifest_test.py b/tests/clientlib/validate_manifest_test.py index ecacf10f..de8e01ac 100644 --- a/tests/clientlib/validate_manifest_test.py +++ b/tests/clientlib/validate_manifest_test.py @@ -27,14 +27,25 @@ def test_additional_manifest_check_raises_for_bad_language(): additional_manifest_check([{'id': 'foo', 'language': 'not valid'}]) -@pytest.mark.parametrize(('obj'), ( - [{'language': 'python'}], - [{'language': 'ruby'}], -)) +@pytest.mark.parametrize( + 'obj', ([{'language': 'python'}], [{'language': 'ruby'}]), +) def test_additional_manifest_check_languages(obj): additional_manifest_check(obj) +@pytest.mark.parametrize( + 'obj', + ( + [{'id': 'a', 'language': 'not a language'}], + [{'id': 'a', 'language': 'python3'}], + ), +) +def test_additional_manifest_check_languages_failing(obj): + with pytest.raises(InvalidManifestError): + additional_manifest_check(obj) + + @pytest.mark.parametrize(('manifest_obj', 'expected'), ( ([], False), ([{'id': 'a', 'name': 'b', 'entry': 'c', 'language': 'python'}], True),