Fixed regex matching
diff --git a/pre_commit_hooks/tests_should_end_in_test.py b/pre_commit_hooks/tests_should_end_in_test.py index 5df6fd8..4bfc767 100644 --- a/pre_commit_hooks/tests_should_end_in_test.py +++ b/pre_commit_hooks/tests_should_end_in_test.py
@@ -3,6 +3,7 @@ import argparse import re import sys +from os.path import basename def validate_files(argv=None): @@ -15,14 +16,13 @@ args = parser.parse_args(argv) retcode = 0 - test_name_pattern = '.*_test.py' - if args.django: - test_name_pattern = 'test.*.py' + test_name_pattern = 'test_.*.py' if args.django else '.*_test.py' for filename in args.filenames: + base = basename(filename) if ( - not re.match(test_name_pattern, filename) and - not filename.endswith('__init__.py') and - not filename.endswith('/conftest.py') + not re.match(test_name_pattern, base) and + not base == '__init__.py' and + not base == 'conftest.py' ): retcode = 1 print(
diff --git a/tests/tests_should_end_in_test_test.py b/tests/tests_should_end_in_test_test.py index ba27b19..a7aaf52 100644 --- a/tests/tests_should_end_in_test_test.py +++ b/tests/tests_should_end_in_test_test.py
@@ -12,7 +12,7 @@ def test_validate_files_django_all_pass(): - ret = validate_files(['--django', 'test_foo.py', 'test_bar.py']) + ret = validate_files(['--django', 'test_foo.py', 'test_bar.py', 'tests/test_baz.py']) assert ret == 0 @@ -21,6 +21,11 @@ assert ret == 1 +def test_validate_nested_files_django_one_fails(): + ret = validate_files(['--django', 'tests/not_test_ending.py', 'test_foo.py']) + assert ret == 1 + + def test_validate_files_not_django_fails(): ret = validate_files(['foo_test.py', 'bar_test.py', 'test_baz.py']) assert ret == 1