| Index: run
|
| diff --git a/run b/run
|
| index 4c0e8097fc0135f86871ce54a9c557f757ba7efb..401296bd33d50634a900d1a6824513d430ce39d3 100755
|
| --- a/run
|
| +++ b/run
|
| @@ -10,94 +10,89 @@ import sys
|
| from tools import cov
|
|
|
|
|
| -verbose = False
|
| -
|
| -repo_dir = os.path.abspath(os.path.dirname(__file__))
|
| -path_to_cov = os.path.join(repo_dir, 'tools', 'cov.py')
|
| -path_to_runner = os.path.join(repo_dir, 'typ', 'runner.py')
|
| -
|
| -
|
| -def call(*args, **kwargs):
|
| - if verbose:
|
| - print(' '.join(args[0]))
|
| - ret = subprocess.call(*args, **kwargs)
|
| - if ret != 0:
|
| - sys.exit(ret)
|
| -
|
| -
|
| -def main(argv):
|
| - parser = argparse.ArgumentParser(prog='run')
|
| - parser.add_argument('-v', '--verbose', action='store_true')
|
| - subps = parser.add_subparsers()
|
| -
|
| - 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('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('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 verbose
|
| - if args.verbose:
|
| - verbose = True
|
| - args.func(args)
|
| -
|
| -
|
| -def run_clean(args):
|
| - call(['git', 'clean', '-fxd'])
|
| -
|
| -
|
| -def run_coverage(args):
|
| - 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 = [path_to_runner, '-j', '1']
|
| - python = sys.executable
|
| - call([python, path_to_cov] + argv + cov_args)
|
| -
|
| -
|
| -def run_help(args):
|
| - if args.subcommand:
|
| - main([args.subcommand, '--help'])
|
| - main(['--help'])
|
| -
|
| -
|
| -def run_lint(args):
|
| - call('pylint --rcfile=pylintrc */*.py */*/*.py', shell=True)
|
| -
|
| -
|
| -def run_tests(args):
|
| - python = sys.executable
|
| - # Test running the typ module directly if it is in sys.path.
|
| - call([python, '-m', 'typ', 'typ.tests.main_test.TestMain.test_basic'])
|
| -
|
| - # Testing running the runner directly if nothing is in sys.path.'
|
| - home_dir = os.environ['HOME']
|
| - call([python, path_to_runner, 'typ.tests.main_test.TestMain.test_basic'],
|
| - cwd=home_dir)
|
| -
|
| - # Run the remaining tests.
|
| - call([python, path_to_runner])
|
| +class Runner(object):
|
| +
|
| + def __init__(self):
|
| + self._verbose = False
|
| + self._repo_dir = os.path.abspath(os.path.dirname(__file__))
|
| + self._path_to_cov = os.path.join(self._repo_dir, 'tools', 'cov.py')
|
| + self._path_to_runner = os.path.join(self._repo_dir, 'typ', 'runner.py')
|
| + self._python = sys.executable
|
| +
|
| + def main(self, argv):
|
| + parser = argparse.ArgumentParser(prog='run')
|
| + parser.add_argument('-v', '--verbose', action='store_true')
|
| + subps = parser.add_subparsers()
|
| +
|
| + subp = subps.add_parser('clean', help='Remove any local files.')
|
| + subp.set_defaults(func=self.run_clean)
|
| +
|
| + subp = subps.add_parser('coverage',
|
| + help='Run the tests and report code coverage.')
|
| + subp.set_defaults(func=self.run_coverage)
|
| + cov.add_arguments(subp)
|
| +
|
| + 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=self.run_help)
|
| +
|
| + subp = subps.add_parser('lint',
|
| + help='run lint over the source')
|
| + subp.set_defaults(func=self.run_lint)
|
| +
|
| + subp = subps.add_parser('tests',
|
| + help='run the tests')
|
| + subp.set_defaults(func=self.run_tests)
|
| +
|
| + args = parser.parse_args(argv)
|
| +
|
| + self._verbose = args.verbose
|
| + args.func(args)
|
| +
|
| + def call(self, *args, **kwargs):
|
| + if self._verbose:
|
| + print(' '.join(args[0]))
|
| + ret = subprocess.call(*args, **kwargs)
|
| + if ret != 0:
|
| + sys.exit(ret)
|
| +
|
| + def run_clean(self, _args):
|
| + self.call(['git', 'clean', '-fxd'])
|
| +
|
| + def run_coverage(self, args):
|
| + if not args.path:
|
| + args.path = [self._repo_dir]
|
| + if not args.source:
|
| + args.source = [os.path.join(self._repo_dir, 'typ')]
|
| + argv = cov.argv_from_args(args)
|
| + cov_args = [self._path_to_runner, '-j', '1']
|
| + self.call([self._python, self._path_to_cov] + argv + cov_args)
|
| +
|
| + def run_help(self, args):
|
| + if args.subcommand:
|
| + self.main([args.subcommand, '--help'])
|
| + self.main(['--help'])
|
| +
|
| + def run_lint(self, _args):
|
| + self.call('pylint --rcfile=pylintrc */*.py */*/*.py', shell=True)
|
| +
|
| + def run_tests(self, _args):
|
| + # Test running the typ module directly if it is in sys.path.
|
| + self.call([
|
| + self._python, '-m', 'typ',
|
| + 'typ.tests.main_test.TestMain.test_basic',
|
| + ])
|
| +
|
| + # Testing running the runner directly if nothing is in sys.path.
|
| + home_dir = os.environ['HOME']
|
| + self.call([self._python, self._path_to_runner,
|
| + 'typ.tests.main_test.TestMain.test_basic'], cwd=home_dir)
|
| +
|
| + # Run the remaining tests.
|
| + self.call([self._python, self._path_to_runner])
|
|
|
|
|
| if __name__ == '__main__':
|
| - sys.exit(main(sys.argv[1:]))
|
| + sys.exit(Runner().main(sys.argv[1:]))
|
|
|