Source

flake8 / run_tests.py

#!/usr/bin/env python

import unittest
import os
import re
import sys
sys.path.insert(0, '.')

TEST_DIR = 'flake8.tests'


def collect_tests():
    # list files in directory tests/
    names = os.listdir(TEST_DIR.replace('.', '/'))
    regex = re.compile("(?!_+)\w+\.py$")
    join = '.'.join
    # Make a list of the names like 'tests.test_name'
    names = [join([TEST_DIR, f[:-3]]) for f in names if regex.match(f)]
    modules = [__import__(name, fromlist=[TEST_DIR]) for name in names]
    load_tests = unittest.defaultTestLoader.loadTestsFromModule
    suites = [load_tests(m) for m in modules]
    suite = suites.pop()
    for s in suites:
        suite.addTests(s)
    return suite

if __name__ == "__main__":
    suite = collect_tests()
    res = unittest.TextTestRunner(verbosity=1).run(suite)

    # If it was successful, we don't want to exit with code 1
    raise SystemExit(not res.wasSuccessful())