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

Unified Diff: third_party/recipe_engine/expect_tests/unittest_helper.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/unittest_helper.py
diff --git a/third_party/recipe_engine/expect_tests/unittest_helper.py b/third_party/recipe_engine/expect_tests/unittest_helper.py
deleted file mode 100644
index ed46917f7e4c08cfef16a651e81a1e71c8c6588f..0000000000000000000000000000000000000000
--- a/third_party/recipe_engine/expect_tests/unittest_helper.py
+++ /dev/null
@@ -1,94 +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 unittest
-
-from .type_definitions import Test, Result, MultiTest, FuncCall, Bind
-
-
-def _SetUpClass(test_class):
- inst = test_class('__init__')
- inst.setUpClass()
- return inst
-
-
-def _TearDownClass(test_class_inst):
- test_class_inst.tearDownClass()
-
-
-def _RunTestCaseSingle(test_case, test_name, test_instance=None):
- # The hack is so that unittest.TestCase has something to pretend is the
- # test method without the BS of wrapping each method in a new TestCase
- # class...
- test_instance = test_instance or test_case('__init__')
- test_instance.setUp()
- try:
- return Result(getattr(test_instance, test_name)())
- finally:
- test_instance.tearDown()
-
-
-def UnittestTestCase(test_case, name_prefix='', ext='json'):
- """Yield a MultiTest or multiple Test instances for the unittest.TestCase
- derived |test_case|.
-
- If the TestCase has a field `__expect_tests_serial__` defined to be True, then
- all test methods in the TestCase will be guaranteed to run in a single process
- with the same instance. This is automatically set to True if your test class
- relies on setUpClass/tearDownClass.
-
- If the TestCase has a field `__expect_tests_atomic__` defined to be True, then
- in the event of a test filter which matches any test method in |test_case|,
- the ENTIRE |test_case| will be executed (i.e. the TestCase has interdependant
- test methods). This should only need to be set for very poorly designed tests.
-
- `__expect_tests_atomic__` implies `__expect_tests_serial__`.
-
- @type test_case: unittest.TestCase
- """
- name_prefix = name_prefix + test_case.__name__
- def _tests_from_class(cls, *args, **kwargs):
- for test_name in unittest.defaultTestLoader.getTestCaseNames(cls):
- yield Test(
- name_prefix + '.' + test_name,
- FuncCall(_RunTestCaseSingle, cls, test_name, *args, **kwargs),
- ext=ext, break_funcs=[getattr(cls, test_name)],
- )
-
- if hasattr(test_case, '__expect_tests_serial__'):
- serial = getattr(test_case, '__expect_tests_serial__', False)
- else:
- default_setup = unittest.TestCase.setUpClass.im_func
- default_teardown = unittest.TestCase.tearDownClass.im_func
- serial = (
- test_case.setUpClass.im_func is not default_setup or
- test_case.tearDownClass.im_func is not default_teardown)
-
- atomic = getattr(test_case, '__expect_tests_atomic__', False)
- if atomic or serial:
- yield MultiTest(
- name_prefix,
- FuncCall(_SetUpClass, test_case),
- FuncCall(_TearDownClass, Bind(name='context')),
- list(_tests_from_class(test_case, test_instance=Bind(name='context'))),
- atomic
- )
- else:
- for test in _tests_from_class(test_case):
- yield test
-
-
-def UnitTestModule(test_module, name_prefix='', ext='json'):
- """Yield MultiTest's and/or Test's for the python module |test_module| which
- contains zero or more unittest.TestCase implementations.
-
- @type test_module: types.ModuleType
- """
- name_prefix = name_prefix + test_module.__name__ + '.'
- for name in dir(test_module):
- obj = getattr(test_module, name)
- if isinstance(obj, type) and issubclass(obj, unittest.TestCase):
- for test in UnittestTestCase(obj, name_prefix, ext):
- yield test
- # TODO(iannucci): Make this compatible with the awful load_tests hack?
« no previous file with comments | « third_party/recipe_engine/expect_tests/type_definitions.py ('k') | third_party/recipe_engine/expect_tests/util.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698