| Index: third_party/recipe_engine/expect_tests/main.py
|
| diff --git a/third_party/recipe_engine/expect_tests/main.py b/third_party/recipe_engine/expect_tests/main.py
|
| deleted file mode 100644
|
| index 83800de232ab3d598c2facbb1e24af6ee2dd3a5a..0000000000000000000000000000000000000000
|
| --- a/third_party/recipe_engine/expect_tests/main.py
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -# Copyright 2014 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import argparse
|
| -import multiprocessing
|
| -import sys
|
| -
|
| -from .cover import CoverageContext
|
| -
|
| -from . import handle_list, handle_debug, handle_train, handle_test
|
| -
|
| -from .pipeline import result_loop
|
| -
|
| -
|
| -HANDLERS = {
|
| - 'list': handle_list.ListHandler,
|
| - 'debug': handle_debug.DebugHandler,
|
| - 'train': handle_train.TrainHandler,
|
| - 'test': handle_test.TestHandler,
|
| -}
|
| -
|
| -
|
| -class _test_completer(object):
|
| - """Implements the argcomplete completer interface for the test_glob command
|
| - line argument.
|
| -
|
| - See: https://pypi.python.org/pypi/argcomplete
|
| -
|
| - This is automatically wired up if you have enabled bash completion in the
|
| - infra repo: https://chromium.googlesource.com/infra/infra
|
| - """
|
| - class FakeOptions(object):
|
| - def __init__(self, **kwargs):
|
| - for k, v in kwargs.iteritems():
|
| - setattr(self, k, v)
|
| -
|
| - def __init__(self, gen):
|
| - self._gen = gen
|
| -
|
| - def __call__(self, prefix, **_):
|
| - handle_list.ListHandler.COMPLETION_LIST = []
|
| - options = self.FakeOptions(
|
| - handler=handle_list.ListHandler,
|
| - test_glob=[prefix],
|
| - jobs=1,
|
| - )
|
| - ctx = CoverageContext('', [], False, False)
|
| - result_loop(self._gen, ctx.create_subprocess_context(), options)
|
| - return handle_list.ListHandler.COMPLETION_LIST
|
| -
|
| -
|
| -def _parse_args(args, test_gen):
|
| - args = args or sys.argv[1:]
|
| -
|
| - # Set the default mode if not specified and not passing --help
|
| - search_names = set(HANDLERS.keys() + ['-h', '--help'])
|
| - if not any(arg in search_names for arg in args):
|
| - args.insert(0, 'test')
|
| -
|
| - parser = argparse.ArgumentParser()
|
| - subparsers = parser.add_subparsers(
|
| - title='Mode (default "test")', dest='mode',
|
| - help='See `[mode] --help` for more options.')
|
| -
|
| - for k, h in HANDLERS.iteritems():
|
| - doc = h.__doc__
|
| - if doc:
|
| - doc = doc[0].lower() + doc[1:]
|
| - sp = subparsers.add_parser(k, help=doc)
|
| - h.add_options(sp)
|
| -
|
| - mg = sp.add_mutually_exclusive_group()
|
| - mg.add_argument(
|
| - '--quiet', action='store_true',
|
| - help='be quiet (only print failures)')
|
| - mg.add_argument(
|
| - '--verbose', action='store_true', help='be verbose')
|
| -
|
| - if not h.SKIP_RUNLOOP:
|
| - sp.add_argument(
|
| - '--jobs', metavar='N', type=int,
|
| - default=multiprocessing.cpu_count(),
|
| - help='run N jobs in parallel (default %(default)s)')
|
| -
|
| - sp.add_argument(
|
| - '--test_list', metavar='FILE',
|
| - help='take the list of test globs from the FILE (use "-" for stdin)'
|
| - ).completer = lambda **_: []
|
| -
|
| - sp.add_argument(
|
| - '--html_report', metavar='DIR',
|
| - help='directory to write html report (default: disabled)'
|
| - ).completer = lambda **_: []
|
| -
|
| - sp.add_argument(
|
| - 'test_glob', nargs='*', help=(
|
| - 'glob to filter the tests acted on. If the glob begins with "-" '
|
| - 'then it acts as a negation glob and anything which matches it '
|
| - 'will be skipped. If a glob doesn\'t have "*" in it, "*" will be '
|
| - 'implicitly appended to the end')
|
| - ).completer = _test_completer(test_gen)
|
| -
|
| - opts = parser.parse_args(args)
|
| -
|
| - if not hasattr(opts, 'jobs'):
|
| - opts.jobs = 0
|
| - elif opts.jobs < 1:
|
| - parser.error('--jobs was less than 1')
|
| -
|
| - if opts.test_list:
|
| - fh = sys.stdin if opts.test_list == '-' else open(opts.test_list, 'rb')
|
| - with fh as tl:
|
| - opts.test_glob += [l.strip() for l in tl.readlines()]
|
| -
|
| - opts.handler = HANDLERS[opts.mode]
|
| -
|
| - del opts.test_list
|
| - del opts.mode
|
| -
|
| - return opts
|
| -
|
| -
|
| -def main(name, test_gen, cover_branches=False, cover_omit=None, args=None):
|
| - """Entry point for tests using expect_tests.
|
| -
|
| - Example:
|
| - import expect_tests
|
| -
|
| - def happy_fn(val):
|
| - # Usually you would return data which is the result of some deterministic
|
| - # computation.
|
| - return expect_tests.Result({'neet': '%s string value' % val})
|
| -
|
| - def Gen():
|
| - yield expect_tests.Test('happy', happy_fn, args=('happy',))
|
| -
|
| - if __name__ == '__main__':
|
| - expect_tests.main('happy_test_suite', Gen)
|
| -
|
| - @param name: Name of the test suite.
|
| - @param test_gen: A Generator which yields Test objects.
|
| - @param cover_branches: Include branch coverage data (rather than just line
|
| - coverage)
|
| - @param args: Commandline args (starting at argv[1])
|
| - """
|
| - try:
|
| - opts = _parse_args(args, test_gen)
|
| -
|
| - cover_ctx = CoverageContext(name, cover_branches, opts.html_report,
|
| - not opts.handler.SKIP_RUNLOOP)
|
| -
|
| - error, killed = result_loop(
|
| - test_gen, cover_ctx.create_subprocess_context(), opts)
|
| -
|
| - cover_ctx.cleanup()
|
| - if not killed and not opts.test_glob:
|
| - if not cover_ctx.report(verbose=opts.verbose, omit=cover_omit):
|
| - sys.exit(2)
|
| -
|
| - sys.exit(error or killed)
|
| - except KeyboardInterrupt:
|
| - pass
|
|
|