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

Side by Side Diff: expect_tests/unittest_helper.py

Issue 2121343004: Expose whether unittest failed to tearDown(). (Closed) Base URL: https://chromium.googlesource.com/infra/testing/expect_tests.git@master
Patch Set: Created 4 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import unittest 5 import unittest
6 6
7 from expect_tests.type_definitions import ( 7 from expect_tests.type_definitions import (
8 Test, Result, MultiTest, FuncCall, Bind) 8 Test, Result, MultiTest, FuncCall, Bind)
9 9
10 from expect_tests.util import covers 10 from expect_tests.util import covers
11 11
12 12
13 def _SetUpClass(test_class): 13 def _SetUpClass(test_class):
14 inst = test_class('__init__') 14 inst = test_class('__init__')
15 inst.setUpClass() 15 inst.setUpClass()
16 return inst 16 return inst
17 17
18 18
19 def _TearDownClass(test_class_inst): 19 def _TearDownClass(test_class_inst):
20 test_class_inst.tearDownClass() 20 test_class_inst.tearDownClass()
21 21
22 22
23 def _RunTestCaseSingle(test_case, test_name, test_instance=None): 23 def _RunTestCaseSingle(test_case, test_name, test_instance=None):
24 # The hack is so that unittest.TestCase has something to pretend is the 24 # The hack is so that unittest.TestCase has something to pretend is the
25 # test method without the BS of wrapping each method in a new TestCase 25 # test method without the BS of wrapping each method in a new TestCase
26 # class... 26 # class...
27 test_instance = test_instance or test_case('__init__') 27 test_instance = test_instance or test_case('__init__')
28 test_instance.setUp() 28 test_instance.setUp()
29 test_instance._test_failed_with_exception = False
29 try: 30 try:
30 return Result(getattr(test_instance, test_name)()) 31 return Result(getattr(test_instance, test_name)())
32 except KeyboardInterrupt:
33 raise
34 except:
35 test_instance._test_failed_with_exception = True
36 raise
31 finally: 37 finally:
32 test_instance.tearDown() 38 test_instance.tearDown()
33 39
34 40
35 def UnittestTestCase(test_case): 41 def UnittestTestCase(test_case):
36 """Yield a MultiTest or multiple Test instances for the unittest.TestCase 42 """Yield a MultiTest or multiple Test instances for the unittest.TestCase
37 derived |test_case|. 43 derived |test_case|.
38 44
39 If the TestCase has a field `__expect_tests_serial__` defined to be True, then 45 If the TestCase has a field `__expect_tests_serial__` defined to be True, then
40 all test methods in the TestCase will be guaranteed to run in a single process 46 all test methods in the TestCase will be guaranteed to run in a single process
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 contains zero or more unittest.TestCase implementations. 105 contains zero or more unittest.TestCase implementations.
100 106
101 @type test_module: types.ModuleType 107 @type test_module: types.ModuleType
102 """ 108 """
103 for name in dir(test_module): 109 for name in dir(test_module):
104 obj = getattr(test_module, name) 110 obj = getattr(test_module, name)
105 if _is_unittest(obj): 111 if _is_unittest(obj):
106 for test in UnittestTestCase(obj)(): 112 for test in UnittestTestCase(obj)():
107 yield test 113 yield test
108 # TODO(iannucci): Make this compatible with the awful load_tests hack? 114 # TODO(iannucci): Make this compatible with the awful load_tests hack?
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698