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

Unified Diff: third_party/recipe_engine/expect_tests/main.py

Issue 1241323004: Cross-repo recipe package system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Roll to latest recipes-py Created 5 years, 3 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/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
« no previous file with comments | « third_party/recipe_engine/expect_tests/handle_train.py ('k') | third_party/recipe_engine/expect_tests/pipeline.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698