From 7e1df7a0cb59bce741c45ef8c0a6081659da226d Mon Sep 17 00:00:00 2001 From: Adler Medrado Date: Fri, 23 Feb 2018 16:04:04 -0300 Subject: [PATCH] Add new hook --- pre_commit_hooks/detect_datetime_now.py | 24 ++++++++++++++++++++++++ tests/detect_datetime_now_test.py | 17 +++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 pre_commit_hooks/detect_datetime_now.py create mode 100644 tests/detect_datetime_now_test.py diff --git a/pre_commit_hooks/detect_datetime_now.py b/pre_commit_hooks/detect_datetime_now.py new file mode 100644 index 0000000..a0dd14b --- /dev/null +++ b/pre_commit_hooks/detect_datetime_now.py @@ -0,0 +1,24 @@ +from __future__ import absolute_import +from __future__ import print_function +from __future__ import unicode_literals + +import argparse +import os + + +def main(argv=None): + parser = argparse.ArgumentParser(description='Check if datetime.now is being used.') + parser.add_argument('filenames', nargs='*', help='Filenames to check') + args = parser.parse_args(argv) + + for filename in args.filenames: + if os.path.isfile(filename): + with open(filename, 'rb') as f: + if b'datetime.now()' in f.read(): + return 1 + + return 0 + + +if __name__ == '__main__': + exit(main()) diff --git a/tests/detect_datetime_now_test.py b/tests/detect_datetime_now_test.py new file mode 100644 index 0000000..d53d216 --- /dev/null +++ b/tests/detect_datetime_now_test.py @@ -0,0 +1,17 @@ +import pytest + +from pre_commit_hooks.detect_datetime_now import main + +TESTS = ( + ('from datetime import datetime\ncurrent_date = datetime.now()', 1), + ('from datetime import datetime', 0), +) + + +@pytest.mark.parametrize(('input_s', 'expected_return_value'), TESTS) +def test_datetime_now_usage(input_s, expected_return_value, tmpdir): + """Test behavior with no datetime.now being used on code.""" + path = tmpdir.join('test_script.py') + path.write(input_s) + using_datetime = main([path.strpath]) + assert using_datetime == expected_return_value