from __future__ import print_function

import argparse
import re
import sys
from os.path import basename


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 else '.*_test.py'
    for filename in args.filenames:
        base = basename(filename)
        if (
                not re.match(test_name_pattern, base) and
                not base == '__init__.py' and
                not base == 'conftest.py'
        ):
            retcode = 1
            print(
                '{} does not match pattern "{}"'.format(
                    filename, test_name_pattern
                )
            )

    return retcode


if __name__ == '__main__':
    sys.exit(validate_files())
