Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1344)

Unified Diff: third_party/typ/run

Issue 627763002: Add new 'typ' python testing framework to third_party/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: upload to typ v0.8.1, update README.chromium Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/typ/run
diff --git a/third_party/typ/run b/third_party/typ/run
new file mode 100755
index 0000000000000000000000000000000000000000..22ea7ad82e1605fcab8e82cf0d40d6961acab66b
--- /dev/null
+++ b/third_party/typ/run
@@ -0,0 +1,149 @@
+#!/usr/bin/env python
+
+from __future__ import print_function
+
+import argparse
+import os
+import subprocess
+import sys
+
+from tools import cov
+
+
+is_python3 = bool(sys.version_info.major == 3)
+has_python34 = False
+
+
+def call(*args, **kwargs):
+ ret = subprocess.call(*args, **kwargs)
+ if ret != 0:
+ sys.exit(ret)
+
+
+def main(argv):
+ parser = argparse.ArgumentParser()
+ subps = parser.add_subparsers()
+
+ subp = subps.add_parser('build', help='build the package')
+ subp.set_defaults(func=run_build)
+
+ subp = subps.add_parser('clean', help='Remove any local files.')
+ subp.set_defaults(func=run_clean)
+
+ subp = subps.add_parser('coverage',
+ help='Run the tests and report code coverage.')
+ subp.set_defaults(func=run_coverage)
+ cov.add_arguments(subp)
+
+ subp = subps.add_parser('develop',
+ help='Install a symlinked package locally.')
+ subp.set_defaults(func=run_develop)
+ subp.add_argument('--system', action='store_true',
+ help=('Install to the system site-package dir '
+ 'rather than the user\'s (requires root).'))
+
+ subp = subps.add_parser('format',
+ help='Reformat the source code.')
+ subp.set_defaults(func=run_format)
+
+ subp = subps.add_parser('help',
+ help='Get help on a subcommand.')
+ subp.add_argument(nargs='?', action='store', dest='subcommand',
+ help='The command to get help for.')
+ subp.set_defaults(func=run_help)
+
+ subp = subps.add_parser('install',
+ help='build the package and install locally.')
+ subp.set_defaults(func=run_install)
+ subp.add_argument('--system', action='store_true',
+ help=('Install to the system site-package dir '
+ 'rather than the user\'s (requires root).'))
+
+ subp = subps.add_parser('lint',
+ help='run lint over the source')
+ subp.set_defaults(func=run_lint)
+
+ subp = subps.add_parser('tests',
+ help='run the tests')
+ subp.set_defaults(func=run_tests)
+
+ args = parser.parse_args(argv)
+
+ global has_python34
+ try:
+ if subprocess.checkout(['python3', '--version']).startswith(
+ 'Python 3.4'):
+ has_python34 = True
+ except:
+ pass
+ args.func(args)
+
+
+def run_build(args):
+ call([sys.executable, 'setup.py', 'build', '--quiet'])
+
+
+def run_clean(args):
+ call(['git', 'clean', '-fxd'])
+
+
+def run_coverage(args):
+ repo_dir = os.path.abspath(os.path.dirname(__file__))
+ path_to_cov = os.path.join(repo_dir, 'tools', 'cov.py')
+ if not args.path:
+ args.path = [repo_dir]
+ if not args.source:
+ args.source = [os.path.join(repo_dir, 'typ')]
+ argv = cov.argv_from_args(args)
+ cov_args = ['-m', 'typ', '-q', '-j', '1']
+ call(['python', path_to_cov] + argv + cov_args)
+ if has_python34:
+ call(['python3', path_to_cov] + argv + cov_args)
+
+
+def run_develop(args):
+ call([sys.executable, 'setup.py', 'develop'])
+
+
+def run_format(args):
+ call('autopep8 --in-place *.py */*.py */*/*.py', shell=True)
+
+
+def run_help(args):
+ if args.subcommand:
+ main([args.subcommand, '--help'])
+ main(['--help'])
+
+
+def run_install(args):
+ if args.system:
+ argv = []
+ else:
+ argv = ['--user']
+ call([sys.executable, 'setup.py', 'install'] + argv)
+
+
+def run_lint(args):
+ call('pylint --rcfile=pylintrc */*.py */*/*.py', shell=True)
+ call('pep8 *.py */*.py */*/*.py', shell=True)
+
+
+def run_tests(args):
+ # Tests that we can run the command line directly if typ is in sys.path.
+ call(['python', os.path.join('typ', 'cmdline.py'), '-q',
+ 'typ.tests.main_test.TestMain.test_basic'])
+
+ # Test that we can run the command line directly if typ is not in sys.path.
+ repo_dir = os.path.abspath(os.path.dirname(__file__))
+ home_dir = os.environ['HOME']
+ call(['python', os.path.join(repo_dir, 'typ', 'cmdline.py'), '-q',
+ 'typ.tests.main_test.TestMain.test_basic'], cwd=home_dir)
+
+ # Now run all the tests under Python2 and Python3.
+ call(['python', '-m', 'typ', '-q'])
+ if has_python34:
+ call(['python3', '-m', 'typ', '-q'])
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))

Powered by Google App Engine
This is Rietveld 408576698