17db96d56Sopenharmony_ciimport io 27db96d56Sopenharmony_ciimport sys 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ciimport unittest 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_cidef resultFactory(*_): 87db96d56Sopenharmony_ci return unittest.TestResult() 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ciclass TestSetups(unittest.TestCase): 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ci def getRunner(self): 147db96d56Sopenharmony_ci return unittest.TextTestRunner(resultclass=resultFactory, 157db96d56Sopenharmony_ci stream=io.StringIO()) 167db96d56Sopenharmony_ci def runTests(self, *cases): 177db96d56Sopenharmony_ci suite = unittest.TestSuite() 187db96d56Sopenharmony_ci for case in cases: 197db96d56Sopenharmony_ci tests = unittest.defaultTestLoader.loadTestsFromTestCase(case) 207db96d56Sopenharmony_ci suite.addTests(tests) 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci runner = self.getRunner() 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci # creating a nested suite exposes some potential bugs 257db96d56Sopenharmony_ci realSuite = unittest.TestSuite() 267db96d56Sopenharmony_ci realSuite.addTest(suite) 277db96d56Sopenharmony_ci # adding empty suites to the end exposes potential bugs 287db96d56Sopenharmony_ci suite.addTest(unittest.TestSuite()) 297db96d56Sopenharmony_ci realSuite.addTest(unittest.TestSuite()) 307db96d56Sopenharmony_ci return runner.run(realSuite) 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci def test_setup_class(self): 337db96d56Sopenharmony_ci class Test(unittest.TestCase): 347db96d56Sopenharmony_ci setUpCalled = 0 357db96d56Sopenharmony_ci @classmethod 367db96d56Sopenharmony_ci def setUpClass(cls): 377db96d56Sopenharmony_ci Test.setUpCalled += 1 387db96d56Sopenharmony_ci unittest.TestCase.setUpClass() 397db96d56Sopenharmony_ci def test_one(self): 407db96d56Sopenharmony_ci pass 417db96d56Sopenharmony_ci def test_two(self): 427db96d56Sopenharmony_ci pass 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci result = self.runTests(Test) 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci self.assertEqual(Test.setUpCalled, 1) 477db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 2) 487db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci def test_teardown_class(self): 517db96d56Sopenharmony_ci class Test(unittest.TestCase): 527db96d56Sopenharmony_ci tearDownCalled = 0 537db96d56Sopenharmony_ci @classmethod 547db96d56Sopenharmony_ci def tearDownClass(cls): 557db96d56Sopenharmony_ci Test.tearDownCalled += 1 567db96d56Sopenharmony_ci unittest.TestCase.tearDownClass() 577db96d56Sopenharmony_ci def test_one(self): 587db96d56Sopenharmony_ci pass 597db96d56Sopenharmony_ci def test_two(self): 607db96d56Sopenharmony_ci pass 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci result = self.runTests(Test) 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci self.assertEqual(Test.tearDownCalled, 1) 657db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 2) 667db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci def test_teardown_class_two_classes(self): 697db96d56Sopenharmony_ci class Test(unittest.TestCase): 707db96d56Sopenharmony_ci tearDownCalled = 0 717db96d56Sopenharmony_ci @classmethod 727db96d56Sopenharmony_ci def tearDownClass(cls): 737db96d56Sopenharmony_ci Test.tearDownCalled += 1 747db96d56Sopenharmony_ci unittest.TestCase.tearDownClass() 757db96d56Sopenharmony_ci def test_one(self): 767db96d56Sopenharmony_ci pass 777db96d56Sopenharmony_ci def test_two(self): 787db96d56Sopenharmony_ci pass 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci class Test2(unittest.TestCase): 817db96d56Sopenharmony_ci tearDownCalled = 0 827db96d56Sopenharmony_ci @classmethod 837db96d56Sopenharmony_ci def tearDownClass(cls): 847db96d56Sopenharmony_ci Test2.tearDownCalled += 1 857db96d56Sopenharmony_ci unittest.TestCase.tearDownClass() 867db96d56Sopenharmony_ci def test_one(self): 877db96d56Sopenharmony_ci pass 887db96d56Sopenharmony_ci def test_two(self): 897db96d56Sopenharmony_ci pass 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci result = self.runTests(Test, Test2) 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci self.assertEqual(Test.tearDownCalled, 1) 947db96d56Sopenharmony_ci self.assertEqual(Test2.tearDownCalled, 1) 957db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 4) 967db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci def test_error_in_setupclass(self): 997db96d56Sopenharmony_ci class BrokenTest(unittest.TestCase): 1007db96d56Sopenharmony_ci @classmethod 1017db96d56Sopenharmony_ci def setUpClass(cls): 1027db96d56Sopenharmony_ci raise TypeError('foo') 1037db96d56Sopenharmony_ci def test_one(self): 1047db96d56Sopenharmony_ci pass 1057db96d56Sopenharmony_ci def test_two(self): 1067db96d56Sopenharmony_ci pass 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci result = self.runTests(BrokenTest) 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 0) 1117db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 1) 1127db96d56Sopenharmony_ci error, _ = result.errors[0] 1137db96d56Sopenharmony_ci self.assertEqual(str(error), 1147db96d56Sopenharmony_ci 'setUpClass (%s.%s)' % (__name__, BrokenTest.__qualname__)) 1157db96d56Sopenharmony_ci 1167db96d56Sopenharmony_ci def test_error_in_teardown_class(self): 1177db96d56Sopenharmony_ci class Test(unittest.TestCase): 1187db96d56Sopenharmony_ci tornDown = 0 1197db96d56Sopenharmony_ci @classmethod 1207db96d56Sopenharmony_ci def tearDownClass(cls): 1217db96d56Sopenharmony_ci Test.tornDown += 1 1227db96d56Sopenharmony_ci raise TypeError('foo') 1237db96d56Sopenharmony_ci def test_one(self): 1247db96d56Sopenharmony_ci pass 1257db96d56Sopenharmony_ci def test_two(self): 1267db96d56Sopenharmony_ci pass 1277db96d56Sopenharmony_ci 1287db96d56Sopenharmony_ci class Test2(unittest.TestCase): 1297db96d56Sopenharmony_ci tornDown = 0 1307db96d56Sopenharmony_ci @classmethod 1317db96d56Sopenharmony_ci def tearDownClass(cls): 1327db96d56Sopenharmony_ci Test2.tornDown += 1 1337db96d56Sopenharmony_ci raise TypeError('foo') 1347db96d56Sopenharmony_ci def test_one(self): 1357db96d56Sopenharmony_ci pass 1367db96d56Sopenharmony_ci def test_two(self): 1377db96d56Sopenharmony_ci pass 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci result = self.runTests(Test, Test2) 1407db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 4) 1417db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 2) 1427db96d56Sopenharmony_ci self.assertEqual(Test.tornDown, 1) 1437db96d56Sopenharmony_ci self.assertEqual(Test2.tornDown, 1) 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ci error, _ = result.errors[0] 1467db96d56Sopenharmony_ci self.assertEqual(str(error), 1477db96d56Sopenharmony_ci 'tearDownClass (%s.%s)' % (__name__, Test.__qualname__)) 1487db96d56Sopenharmony_ci 1497db96d56Sopenharmony_ci def test_class_not_torndown_when_setup_fails(self): 1507db96d56Sopenharmony_ci class Test(unittest.TestCase): 1517db96d56Sopenharmony_ci tornDown = False 1527db96d56Sopenharmony_ci @classmethod 1537db96d56Sopenharmony_ci def setUpClass(cls): 1547db96d56Sopenharmony_ci raise TypeError 1557db96d56Sopenharmony_ci @classmethod 1567db96d56Sopenharmony_ci def tearDownClass(cls): 1577db96d56Sopenharmony_ci Test.tornDown = True 1587db96d56Sopenharmony_ci raise TypeError('foo') 1597db96d56Sopenharmony_ci def test_one(self): 1607db96d56Sopenharmony_ci pass 1617db96d56Sopenharmony_ci 1627db96d56Sopenharmony_ci self.runTests(Test) 1637db96d56Sopenharmony_ci self.assertFalse(Test.tornDown) 1647db96d56Sopenharmony_ci 1657db96d56Sopenharmony_ci def test_class_not_setup_or_torndown_when_skipped(self): 1667db96d56Sopenharmony_ci class Test(unittest.TestCase): 1677db96d56Sopenharmony_ci classSetUp = False 1687db96d56Sopenharmony_ci tornDown = False 1697db96d56Sopenharmony_ci @classmethod 1707db96d56Sopenharmony_ci def setUpClass(cls): 1717db96d56Sopenharmony_ci Test.classSetUp = True 1727db96d56Sopenharmony_ci @classmethod 1737db96d56Sopenharmony_ci def tearDownClass(cls): 1747db96d56Sopenharmony_ci Test.tornDown = True 1757db96d56Sopenharmony_ci def test_one(self): 1767db96d56Sopenharmony_ci pass 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ci Test = unittest.skip("hop")(Test) 1797db96d56Sopenharmony_ci self.runTests(Test) 1807db96d56Sopenharmony_ci self.assertFalse(Test.classSetUp) 1817db96d56Sopenharmony_ci self.assertFalse(Test.tornDown) 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ci def test_setup_teardown_order_with_pathological_suite(self): 1847db96d56Sopenharmony_ci results = [] 1857db96d56Sopenharmony_ci 1867db96d56Sopenharmony_ci class Module1(object): 1877db96d56Sopenharmony_ci @staticmethod 1887db96d56Sopenharmony_ci def setUpModule(): 1897db96d56Sopenharmony_ci results.append('Module1.setUpModule') 1907db96d56Sopenharmony_ci @staticmethod 1917db96d56Sopenharmony_ci def tearDownModule(): 1927db96d56Sopenharmony_ci results.append('Module1.tearDownModule') 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ci class Module2(object): 1957db96d56Sopenharmony_ci @staticmethod 1967db96d56Sopenharmony_ci def setUpModule(): 1977db96d56Sopenharmony_ci results.append('Module2.setUpModule') 1987db96d56Sopenharmony_ci @staticmethod 1997db96d56Sopenharmony_ci def tearDownModule(): 2007db96d56Sopenharmony_ci results.append('Module2.tearDownModule') 2017db96d56Sopenharmony_ci 2027db96d56Sopenharmony_ci class Test1(unittest.TestCase): 2037db96d56Sopenharmony_ci @classmethod 2047db96d56Sopenharmony_ci def setUpClass(cls): 2057db96d56Sopenharmony_ci results.append('setup 1') 2067db96d56Sopenharmony_ci @classmethod 2077db96d56Sopenharmony_ci def tearDownClass(cls): 2087db96d56Sopenharmony_ci results.append('teardown 1') 2097db96d56Sopenharmony_ci def testOne(self): 2107db96d56Sopenharmony_ci results.append('Test1.testOne') 2117db96d56Sopenharmony_ci def testTwo(self): 2127db96d56Sopenharmony_ci results.append('Test1.testTwo') 2137db96d56Sopenharmony_ci 2147db96d56Sopenharmony_ci class Test2(unittest.TestCase): 2157db96d56Sopenharmony_ci @classmethod 2167db96d56Sopenharmony_ci def setUpClass(cls): 2177db96d56Sopenharmony_ci results.append('setup 2') 2187db96d56Sopenharmony_ci @classmethod 2197db96d56Sopenharmony_ci def tearDownClass(cls): 2207db96d56Sopenharmony_ci results.append('teardown 2') 2217db96d56Sopenharmony_ci def testOne(self): 2227db96d56Sopenharmony_ci results.append('Test2.testOne') 2237db96d56Sopenharmony_ci def testTwo(self): 2247db96d56Sopenharmony_ci results.append('Test2.testTwo') 2257db96d56Sopenharmony_ci 2267db96d56Sopenharmony_ci class Test3(unittest.TestCase): 2277db96d56Sopenharmony_ci @classmethod 2287db96d56Sopenharmony_ci def setUpClass(cls): 2297db96d56Sopenharmony_ci results.append('setup 3') 2307db96d56Sopenharmony_ci @classmethod 2317db96d56Sopenharmony_ci def tearDownClass(cls): 2327db96d56Sopenharmony_ci results.append('teardown 3') 2337db96d56Sopenharmony_ci def testOne(self): 2347db96d56Sopenharmony_ci results.append('Test3.testOne') 2357db96d56Sopenharmony_ci def testTwo(self): 2367db96d56Sopenharmony_ci results.append('Test3.testTwo') 2377db96d56Sopenharmony_ci 2387db96d56Sopenharmony_ci Test1.__module__ = Test2.__module__ = 'Module' 2397db96d56Sopenharmony_ci Test3.__module__ = 'Module2' 2407db96d56Sopenharmony_ci sys.modules['Module'] = Module1 2417db96d56Sopenharmony_ci sys.modules['Module2'] = Module2 2427db96d56Sopenharmony_ci 2437db96d56Sopenharmony_ci first = unittest.TestSuite((Test1('testOne'),)) 2447db96d56Sopenharmony_ci second = unittest.TestSuite((Test1('testTwo'),)) 2457db96d56Sopenharmony_ci third = unittest.TestSuite((Test2('testOne'),)) 2467db96d56Sopenharmony_ci fourth = unittest.TestSuite((Test2('testTwo'),)) 2477db96d56Sopenharmony_ci fifth = unittest.TestSuite((Test3('testOne'),)) 2487db96d56Sopenharmony_ci sixth = unittest.TestSuite((Test3('testTwo'),)) 2497db96d56Sopenharmony_ci suite = unittest.TestSuite((first, second, third, fourth, fifth, sixth)) 2507db96d56Sopenharmony_ci 2517db96d56Sopenharmony_ci runner = self.getRunner() 2527db96d56Sopenharmony_ci result = runner.run(suite) 2537db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 6) 2547db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 2557db96d56Sopenharmony_ci 2567db96d56Sopenharmony_ci self.assertEqual(results, 2577db96d56Sopenharmony_ci ['Module1.setUpModule', 'setup 1', 2587db96d56Sopenharmony_ci 'Test1.testOne', 'Test1.testTwo', 'teardown 1', 2597db96d56Sopenharmony_ci 'setup 2', 'Test2.testOne', 'Test2.testTwo', 2607db96d56Sopenharmony_ci 'teardown 2', 'Module1.tearDownModule', 2617db96d56Sopenharmony_ci 'Module2.setUpModule', 'setup 3', 2627db96d56Sopenharmony_ci 'Test3.testOne', 'Test3.testTwo', 2637db96d56Sopenharmony_ci 'teardown 3', 'Module2.tearDownModule']) 2647db96d56Sopenharmony_ci 2657db96d56Sopenharmony_ci def test_setup_module(self): 2667db96d56Sopenharmony_ci class Module(object): 2677db96d56Sopenharmony_ci moduleSetup = 0 2687db96d56Sopenharmony_ci @staticmethod 2697db96d56Sopenharmony_ci def setUpModule(): 2707db96d56Sopenharmony_ci Module.moduleSetup += 1 2717db96d56Sopenharmony_ci 2727db96d56Sopenharmony_ci class Test(unittest.TestCase): 2737db96d56Sopenharmony_ci def test_one(self): 2747db96d56Sopenharmony_ci pass 2757db96d56Sopenharmony_ci def test_two(self): 2767db96d56Sopenharmony_ci pass 2777db96d56Sopenharmony_ci Test.__module__ = 'Module' 2787db96d56Sopenharmony_ci sys.modules['Module'] = Module 2797db96d56Sopenharmony_ci 2807db96d56Sopenharmony_ci result = self.runTests(Test) 2817db96d56Sopenharmony_ci self.assertEqual(Module.moduleSetup, 1) 2827db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 2) 2837db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 2847db96d56Sopenharmony_ci 2857db96d56Sopenharmony_ci def test_error_in_setup_module(self): 2867db96d56Sopenharmony_ci class Module(object): 2877db96d56Sopenharmony_ci moduleSetup = 0 2887db96d56Sopenharmony_ci moduleTornDown = 0 2897db96d56Sopenharmony_ci @staticmethod 2907db96d56Sopenharmony_ci def setUpModule(): 2917db96d56Sopenharmony_ci Module.moduleSetup += 1 2927db96d56Sopenharmony_ci raise TypeError('foo') 2937db96d56Sopenharmony_ci @staticmethod 2947db96d56Sopenharmony_ci def tearDownModule(): 2957db96d56Sopenharmony_ci Module.moduleTornDown += 1 2967db96d56Sopenharmony_ci 2977db96d56Sopenharmony_ci class Test(unittest.TestCase): 2987db96d56Sopenharmony_ci classSetUp = False 2997db96d56Sopenharmony_ci classTornDown = False 3007db96d56Sopenharmony_ci @classmethod 3017db96d56Sopenharmony_ci def setUpClass(cls): 3027db96d56Sopenharmony_ci Test.classSetUp = True 3037db96d56Sopenharmony_ci @classmethod 3047db96d56Sopenharmony_ci def tearDownClass(cls): 3057db96d56Sopenharmony_ci Test.classTornDown = True 3067db96d56Sopenharmony_ci def test_one(self): 3077db96d56Sopenharmony_ci pass 3087db96d56Sopenharmony_ci def test_two(self): 3097db96d56Sopenharmony_ci pass 3107db96d56Sopenharmony_ci 3117db96d56Sopenharmony_ci class Test2(unittest.TestCase): 3127db96d56Sopenharmony_ci def test_one(self): 3137db96d56Sopenharmony_ci pass 3147db96d56Sopenharmony_ci def test_two(self): 3157db96d56Sopenharmony_ci pass 3167db96d56Sopenharmony_ci Test.__module__ = 'Module' 3177db96d56Sopenharmony_ci Test2.__module__ = 'Module' 3187db96d56Sopenharmony_ci sys.modules['Module'] = Module 3197db96d56Sopenharmony_ci 3207db96d56Sopenharmony_ci result = self.runTests(Test, Test2) 3217db96d56Sopenharmony_ci self.assertEqual(Module.moduleSetup, 1) 3227db96d56Sopenharmony_ci self.assertEqual(Module.moduleTornDown, 0) 3237db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 0) 3247db96d56Sopenharmony_ci self.assertFalse(Test.classSetUp) 3257db96d56Sopenharmony_ci self.assertFalse(Test.classTornDown) 3267db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 1) 3277db96d56Sopenharmony_ci error, _ = result.errors[0] 3287db96d56Sopenharmony_ci self.assertEqual(str(error), 'setUpModule (Module)') 3297db96d56Sopenharmony_ci 3307db96d56Sopenharmony_ci def test_testcase_with_missing_module(self): 3317db96d56Sopenharmony_ci class Test(unittest.TestCase): 3327db96d56Sopenharmony_ci def test_one(self): 3337db96d56Sopenharmony_ci pass 3347db96d56Sopenharmony_ci def test_two(self): 3357db96d56Sopenharmony_ci pass 3367db96d56Sopenharmony_ci Test.__module__ = 'Module' 3377db96d56Sopenharmony_ci sys.modules.pop('Module', None) 3387db96d56Sopenharmony_ci 3397db96d56Sopenharmony_ci result = self.runTests(Test) 3407db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 2) 3417db96d56Sopenharmony_ci 3427db96d56Sopenharmony_ci def test_teardown_module(self): 3437db96d56Sopenharmony_ci class Module(object): 3447db96d56Sopenharmony_ci moduleTornDown = 0 3457db96d56Sopenharmony_ci @staticmethod 3467db96d56Sopenharmony_ci def tearDownModule(): 3477db96d56Sopenharmony_ci Module.moduleTornDown += 1 3487db96d56Sopenharmony_ci 3497db96d56Sopenharmony_ci class Test(unittest.TestCase): 3507db96d56Sopenharmony_ci def test_one(self): 3517db96d56Sopenharmony_ci pass 3527db96d56Sopenharmony_ci def test_two(self): 3537db96d56Sopenharmony_ci pass 3547db96d56Sopenharmony_ci Test.__module__ = 'Module' 3557db96d56Sopenharmony_ci sys.modules['Module'] = Module 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci result = self.runTests(Test) 3587db96d56Sopenharmony_ci self.assertEqual(Module.moduleTornDown, 1) 3597db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 2) 3607db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 3617db96d56Sopenharmony_ci 3627db96d56Sopenharmony_ci def test_error_in_teardown_module(self): 3637db96d56Sopenharmony_ci class Module(object): 3647db96d56Sopenharmony_ci moduleTornDown = 0 3657db96d56Sopenharmony_ci @staticmethod 3667db96d56Sopenharmony_ci def tearDownModule(): 3677db96d56Sopenharmony_ci Module.moduleTornDown += 1 3687db96d56Sopenharmony_ci raise TypeError('foo') 3697db96d56Sopenharmony_ci 3707db96d56Sopenharmony_ci class Test(unittest.TestCase): 3717db96d56Sopenharmony_ci classSetUp = False 3727db96d56Sopenharmony_ci classTornDown = False 3737db96d56Sopenharmony_ci @classmethod 3747db96d56Sopenharmony_ci def setUpClass(cls): 3757db96d56Sopenharmony_ci Test.classSetUp = True 3767db96d56Sopenharmony_ci @classmethod 3777db96d56Sopenharmony_ci def tearDownClass(cls): 3787db96d56Sopenharmony_ci Test.classTornDown = True 3797db96d56Sopenharmony_ci def test_one(self): 3807db96d56Sopenharmony_ci pass 3817db96d56Sopenharmony_ci def test_two(self): 3827db96d56Sopenharmony_ci pass 3837db96d56Sopenharmony_ci 3847db96d56Sopenharmony_ci class Test2(unittest.TestCase): 3857db96d56Sopenharmony_ci def test_one(self): 3867db96d56Sopenharmony_ci pass 3877db96d56Sopenharmony_ci def test_two(self): 3887db96d56Sopenharmony_ci pass 3897db96d56Sopenharmony_ci Test.__module__ = 'Module' 3907db96d56Sopenharmony_ci Test2.__module__ = 'Module' 3917db96d56Sopenharmony_ci sys.modules['Module'] = Module 3927db96d56Sopenharmony_ci 3937db96d56Sopenharmony_ci result = self.runTests(Test, Test2) 3947db96d56Sopenharmony_ci self.assertEqual(Module.moduleTornDown, 1) 3957db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 4) 3967db96d56Sopenharmony_ci self.assertTrue(Test.classSetUp) 3977db96d56Sopenharmony_ci self.assertTrue(Test.classTornDown) 3987db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 1) 3997db96d56Sopenharmony_ci error, _ = result.errors[0] 4007db96d56Sopenharmony_ci self.assertEqual(str(error), 'tearDownModule (Module)') 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ci def test_skiptest_in_setupclass(self): 4037db96d56Sopenharmony_ci class Test(unittest.TestCase): 4047db96d56Sopenharmony_ci @classmethod 4057db96d56Sopenharmony_ci def setUpClass(cls): 4067db96d56Sopenharmony_ci raise unittest.SkipTest('foo') 4077db96d56Sopenharmony_ci def test_one(self): 4087db96d56Sopenharmony_ci pass 4097db96d56Sopenharmony_ci def test_two(self): 4107db96d56Sopenharmony_ci pass 4117db96d56Sopenharmony_ci 4127db96d56Sopenharmony_ci result = self.runTests(Test) 4137db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 0) 4147db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 4157db96d56Sopenharmony_ci self.assertEqual(len(result.skipped), 1) 4167db96d56Sopenharmony_ci skipped = result.skipped[0][0] 4177db96d56Sopenharmony_ci self.assertEqual(str(skipped), 4187db96d56Sopenharmony_ci 'setUpClass (%s.%s)' % (__name__, Test.__qualname__)) 4197db96d56Sopenharmony_ci 4207db96d56Sopenharmony_ci def test_skiptest_in_setupmodule(self): 4217db96d56Sopenharmony_ci class Test(unittest.TestCase): 4227db96d56Sopenharmony_ci def test_one(self): 4237db96d56Sopenharmony_ci pass 4247db96d56Sopenharmony_ci def test_two(self): 4257db96d56Sopenharmony_ci pass 4267db96d56Sopenharmony_ci 4277db96d56Sopenharmony_ci class Module(object): 4287db96d56Sopenharmony_ci @staticmethod 4297db96d56Sopenharmony_ci def setUpModule(): 4307db96d56Sopenharmony_ci raise unittest.SkipTest('foo') 4317db96d56Sopenharmony_ci 4327db96d56Sopenharmony_ci Test.__module__ = 'Module' 4337db96d56Sopenharmony_ci sys.modules['Module'] = Module 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci result = self.runTests(Test) 4367db96d56Sopenharmony_ci self.assertEqual(result.testsRun, 0) 4377db96d56Sopenharmony_ci self.assertEqual(len(result.errors), 0) 4387db96d56Sopenharmony_ci self.assertEqual(len(result.skipped), 1) 4397db96d56Sopenharmony_ci skipped = result.skipped[0][0] 4407db96d56Sopenharmony_ci self.assertEqual(str(skipped), 'setUpModule (Module)') 4417db96d56Sopenharmony_ci 4427db96d56Sopenharmony_ci def test_suite_debug_executes_setups_and_teardowns(self): 4437db96d56Sopenharmony_ci ordering = [] 4447db96d56Sopenharmony_ci 4457db96d56Sopenharmony_ci class Module(object): 4467db96d56Sopenharmony_ci @staticmethod 4477db96d56Sopenharmony_ci def setUpModule(): 4487db96d56Sopenharmony_ci ordering.append('setUpModule') 4497db96d56Sopenharmony_ci @staticmethod 4507db96d56Sopenharmony_ci def tearDownModule(): 4517db96d56Sopenharmony_ci ordering.append('tearDownModule') 4527db96d56Sopenharmony_ci 4537db96d56Sopenharmony_ci class Test(unittest.TestCase): 4547db96d56Sopenharmony_ci @classmethod 4557db96d56Sopenharmony_ci def setUpClass(cls): 4567db96d56Sopenharmony_ci ordering.append('setUpClass') 4577db96d56Sopenharmony_ci @classmethod 4587db96d56Sopenharmony_ci def tearDownClass(cls): 4597db96d56Sopenharmony_ci ordering.append('tearDownClass') 4607db96d56Sopenharmony_ci def test_something(self): 4617db96d56Sopenharmony_ci ordering.append('test_something') 4627db96d56Sopenharmony_ci 4637db96d56Sopenharmony_ci Test.__module__ = 'Module' 4647db96d56Sopenharmony_ci sys.modules['Module'] = Module 4657db96d56Sopenharmony_ci 4667db96d56Sopenharmony_ci suite = unittest.defaultTestLoader.loadTestsFromTestCase(Test) 4677db96d56Sopenharmony_ci suite.debug() 4687db96d56Sopenharmony_ci expectedOrder = ['setUpModule', 'setUpClass', 'test_something', 'tearDownClass', 'tearDownModule'] 4697db96d56Sopenharmony_ci self.assertEqual(ordering, expectedOrder) 4707db96d56Sopenharmony_ci 4717db96d56Sopenharmony_ci def test_suite_debug_propagates_exceptions(self): 4727db96d56Sopenharmony_ci class Module(object): 4737db96d56Sopenharmony_ci @staticmethod 4747db96d56Sopenharmony_ci def setUpModule(): 4757db96d56Sopenharmony_ci if phase == 0: 4767db96d56Sopenharmony_ci raise Exception('setUpModule') 4777db96d56Sopenharmony_ci @staticmethod 4787db96d56Sopenharmony_ci def tearDownModule(): 4797db96d56Sopenharmony_ci if phase == 1: 4807db96d56Sopenharmony_ci raise Exception('tearDownModule') 4817db96d56Sopenharmony_ci 4827db96d56Sopenharmony_ci class Test(unittest.TestCase): 4837db96d56Sopenharmony_ci @classmethod 4847db96d56Sopenharmony_ci def setUpClass(cls): 4857db96d56Sopenharmony_ci if phase == 2: 4867db96d56Sopenharmony_ci raise Exception('setUpClass') 4877db96d56Sopenharmony_ci @classmethod 4887db96d56Sopenharmony_ci def tearDownClass(cls): 4897db96d56Sopenharmony_ci if phase == 3: 4907db96d56Sopenharmony_ci raise Exception('tearDownClass') 4917db96d56Sopenharmony_ci def test_something(self): 4927db96d56Sopenharmony_ci if phase == 4: 4937db96d56Sopenharmony_ci raise Exception('test_something') 4947db96d56Sopenharmony_ci 4957db96d56Sopenharmony_ci Test.__module__ = 'Module' 4967db96d56Sopenharmony_ci sys.modules['Module'] = Module 4977db96d56Sopenharmony_ci 4987db96d56Sopenharmony_ci messages = ('setUpModule', 'tearDownModule', 'setUpClass', 'tearDownClass', 'test_something') 4997db96d56Sopenharmony_ci for phase, msg in enumerate(messages): 5007db96d56Sopenharmony_ci _suite = unittest.defaultTestLoader.loadTestsFromTestCase(Test) 5017db96d56Sopenharmony_ci suite = unittest.TestSuite([_suite]) 5027db96d56Sopenharmony_ci with self.assertRaisesRegex(Exception, msg): 5037db96d56Sopenharmony_ci suite.debug() 5047db96d56Sopenharmony_ci 5057db96d56Sopenharmony_ci 5067db96d56Sopenharmony_ciif __name__ == '__main__': 5077db96d56Sopenharmony_ci unittest.main() 508