diff options
Diffstat (limited to '')
-rwxr-xr-x | third_party/python/dlmanager/check.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/third_party/python/dlmanager/check.py b/third_party/python/dlmanager/check.py new file mode 100755 index 0000000000..bcc842305e --- /dev/null +++ b/third_party/python/dlmanager/check.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +""" +Run flake8 checks and tests. +""" + +import os +import argparse +import pipes +import shutil +import tempfile + +from subprocess import check_call + + +def parse_args(): + parser = argparse.ArgumentParser() + + parser.add_argument('-C', '--with-coverage', action='store_true', + help="Generate coverage data from the tests run") + parser.add_argument('-H', '--cover-html', action='store_true', + help='generate html files to see test coverage') + return parser.parse_args() + + +def run(cmd, **kwargs): + msg = 'Running: |%s|' % ' '.join(pipes.quote(c) for c in cmd) + if kwargs.get('cwd'): + msg += ' in %s' % kwargs['cwd'] + print(msg) + check_call(cmd, **kwargs) + + +def rm(path): + if os.path.isfile(path): + os.unlink(path) + elif os.path.isdir(path): + shutil.rmtree(path) + + +if __name__ == '__main__': + options = parse_args() + + here = os.path.dirname(os.path.abspath(__file__)) + os.chdir(here) + + run(['flake8', 'dlmanager', 'tests', 'setup.py', __file__]) + + if options.with_coverage: + rm('.coverage') + test_run_cmd = ['coverage', 'run'] + else: + test_run_cmd = ['python'] + + tmpdir = tempfile.gettempdir() + tmpfiles = set(os.listdir(tmpdir)) + run(test_run_cmd + ['setup.py', 'test']) + + remaining_tmpfiles = tmpfiles - set(os.listdir(tmpdir)) + assert not remaining_tmpfiles, "tests leaked some temp files: %s" % ( + ", ".join("`%s`" % os.path.join(tmpdir, f) for f in remaining_tmpfiles) + ) + + if options.with_coverage and options.cover_html: + rm('htmlcov') + run(['coverage', 'html']) + print("See coverage: |firefox %s|" + % os.path.join(here, 'htmlcov', 'index.html')) |