Merge pull request #46 from guykisel/django-test-hook
Add --django flag to test name checker
diff --git a/pre_commit_hooks/tests_should_end_in_test.py b/pre_commit_hooks/tests_should_end_in_test.py
index 14c672e..5df6fd8 100644
--- a/pre_commit_hooks/tests_should_end_in_test.py
+++ b/pre_commit_hooks/tests_should_end_in_test.py
@@ -1,23 +1,35 @@
from __future__ import print_function
import argparse
+import re
import sys
def validate_files(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
+ parser.add_argument(
+ '--django', default=False, action='store_true',
+ help='Use Django-style test naming pattern (test*.py)'
+ )
args = parser.parse_args(argv)
retcode = 0
+ test_name_pattern = '.*_test.py'
+ if args.django:
+ test_name_pattern = 'test.*.py'
for filename in args.filenames:
if (
- not filename.endswith('_test.py') and
+ not re.match(test_name_pattern, filename) and
not filename.endswith('__init__.py') and
not filename.endswith('/conftest.py')
):
retcode = 1
- print('{0} does not end in _test.py'.format(filename))
+ print(
+ '{0} does not match pattern "{1}"'.format(
+ filename, test_name_pattern
+ )
+ )
return retcode
diff --git a/tests/tests_should_end_in_test_test.py b/tests/tests_should_end_in_test_test.py
index 3ba1617..ba27b19 100644
--- a/tests/tests_should_end_in_test_test.py
+++ b/tests/tests_should_end_in_test_test.py
@@ -9,3 +9,23 @@
def test_validate_files_one_fails():
ret = validate_files(['not_test_ending.py', 'foo_test.py'])
assert ret == 1
+
+
+def test_validate_files_django_all_pass():
+ ret = validate_files(['--django', 'test_foo.py', 'test_bar.py'])
+ assert ret == 0
+
+
+def test_validate_files_django_one_fails():
+ ret = validate_files(['--django', '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
+
+
+def test_validate_files_django_fails():
+ ret = validate_files(['--django', 'foo_test.py', 'test_bar.py', 'test_baz.py'])
+ assert ret == 1