X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=googletest%2Ftest%2Fgoogletest-catch-exceptions-test.py;h=180e18de0f9bd7a16ef41637c27087cda374ca19;hb=35012fd0964a1a5455ccd93dd34531ce90728a08;hp=d38d91a62a43cb1a0bce169c4b747dbbf042d6d6;hpb=97dde157c1ee3bddda75c6eaf3787507f21e674e;p=platform%2Fupstream%2Fgtest.git diff --git a/googletest/test/googletest-catch-exceptions-test.py b/googletest/test/googletest-catch-exceptions-test.py index d38d91a..180e18d 100755 --- a/googletest/test/googletest-catch-exceptions-test.py +++ b/googletest/test/googletest-catch-exceptions-test.py @@ -46,12 +46,14 @@ FILTER_FLAG = FLAG_PREFIX + 'filter' # Path to the googletest-catch-exceptions-ex-test_ binary, compiled with # exceptions enabled. EX_EXE_PATH = gtest_test_utils.GetTestExecutablePath( - 'googletest-catch-exceptions-ex-test_') + 'googletest-catch-exceptions-ex-test_' +) # Path to the googletest-catch-exceptions-test_ binary, compiled with # exceptions disabled. EXE_PATH = gtest_test_utils.GetTestExecutablePath( - 'googletest-catch-exceptions-no-ex-test_') + 'googletest-catch-exceptions-no-ex-test_' +) environ = gtest_test_utils.environ SetEnvVar = gtest_test_utils.SetEnvVar @@ -64,7 +66,8 @@ SetEnvVar = gtest_test_utils.SetEnvVar SetEnvVar(gtest_test_utils.PREMATURE_EXIT_FILE_ENV_VAR, None) TEST_LIST = gtest_test_utils.Subprocess( - [EXE_PATH, LIST_TESTS_FLAG], env=environ).output + [EXE_PATH, LIST_TESTS_FLAG], env=environ +).output SUPPORTS_SEH_EXCEPTIONS = 'ThrowsSehException' in TEST_LIST @@ -72,33 +75,47 @@ if SUPPORTS_SEH_EXCEPTIONS: BINARY_OUTPUT = gtest_test_utils.Subprocess([EXE_PATH], env=environ).output EX_BINARY_OUTPUT = gtest_test_utils.Subprocess( - [EX_EXE_PATH], env=environ).output + [EX_EXE_PATH], env=environ +).output # The tests. if SUPPORTS_SEH_EXCEPTIONS: - # pylint:disable-msg=C6302 + class CatchSehExceptionsTest(gtest_test_utils.TestCase): """Tests exception-catching behavior.""" - def TestSehExceptions(self, test_output): - self.assert_('SEH exception with code 0x2a thrown ' - 'in the test fixture\'s constructor' - in test_output) - self.assert_('SEH exception with code 0x2a thrown ' - 'in the test fixture\'s destructor' - in test_output) - self.assert_('SEH exception with code 0x2a thrown in SetUpTestSuite()' - in test_output) - self.assert_('SEH exception with code 0x2a thrown in TearDownTestSuite()' - in test_output) - self.assert_('SEH exception with code 0x2a thrown in SetUp()' - in test_output) - self.assert_('SEH exception with code 0x2a thrown in TearDown()' - in test_output) - self.assert_('SEH exception with code 0x2a thrown in the test body' - in test_output) + self.assertIn( + ( + 'SEH exception with code 0x2a thrown ' + "in the test fixture's constructor" + ), + test_output, + ) + self.assertIn( + ( + 'SEH exception with code 0x2a thrown ' + "in the test fixture's destructor" + ), + test_output, + ) + self.assertIn( + 'SEH exception with code 0x2a thrown in SetUpTestSuite()', test_output + ) + self.assertIn( + 'SEH exception with code 0x2a thrown in TearDownTestSuite()', + test_output, + ) + self.assertIn( + 'SEH exception with code 0x2a thrown in SetUp()', test_output + ) + self.assertIn( + 'SEH exception with code 0x2a thrown in TearDown()', test_output + ) + self.assertIn( + 'SEH exception with code 0x2a thrown in the test body', test_output + ) def testCatchesSehExceptionsWithCxxExceptionsEnabled(self): self.TestSehExceptions(EX_BINARY_OUTPUT) @@ -110,126 +127,188 @@ if SUPPORTS_SEH_EXCEPTIONS: class CatchCxxExceptionsTest(gtest_test_utils.TestCase): """Tests C++ exception-catching behavior. - Tests in this test case verify that: - * C++ exceptions are caught and logged as C++ (not SEH) exceptions - * Exception thrown affect the remainder of the test work flow in the - expected manner. + Tests in this test case verify that: + * C++ exceptions are caught and logged as C++ (not SEH) exceptions + * Exception thrown affect the remainder of the test work flow in the + expected manner. """ def testCatchesCxxExceptionsInFixtureConstructor(self): self.assertTrue( 'C++ exception with description ' '"Standard C++ exception" thrown ' - 'in the test fixture\'s constructor' in EX_BINARY_OUTPUT, - EX_BINARY_OUTPUT) - self.assert_('unexpected' not in EX_BINARY_OUTPUT, - 'This failure belongs in this test only if ' - '"CxxExceptionInConstructorTest" (no quotes) ' - 'appears on the same line as words "called unexpectedly"') - - if ('CxxExceptionInDestructorTest.ThrowsExceptionInDestructor' in - EX_BINARY_OUTPUT): + "in the test fixture's constructor" + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) + self.assertTrue( + 'unexpected' not in EX_BINARY_OUTPUT, + ( + 'This failure belongs in this test only if ' + '"CxxExceptionInConstructorTest" (no quotes) ' + 'appears on the same line as words "called unexpectedly"' + ), + ) + + if ( + 'CxxExceptionInDestructorTest.ThrowsExceptionInDestructor' + in EX_BINARY_OUTPUT + ): def testCatchesCxxExceptionsInFixtureDestructor(self): self.assertTrue( 'C++ exception with description ' '"Standard C++ exception" thrown ' - 'in the test fixture\'s destructor' in EX_BINARY_OUTPUT, - EX_BINARY_OUTPUT) + "in the test fixture's destructor" + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( 'CxxExceptionInDestructorTest::TearDownTestSuite() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) def testCatchesCxxExceptionsInSetUpTestCase(self): self.assertTrue( 'C++ exception with description "Standard C++ exception"' - ' thrown in SetUpTestSuite()' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + ' thrown in SetUpTestSuite()' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInConstructorTest::TearDownTestSuite() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInConstructorTest::TearDownTestSuite() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertFalse( - 'CxxExceptionInSetUpTestSuiteTest constructor ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInSetUpTestSuiteTest constructor called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertFalse( - 'CxxExceptionInSetUpTestSuiteTest destructor ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInSetUpTestSuiteTest destructor called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertFalse( - 'CxxExceptionInSetUpTestSuiteTest::SetUp() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInSetUpTestSuiteTest::SetUp() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertFalse( - 'CxxExceptionInSetUpTestSuiteTest::TearDown() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInSetUpTestSuiteTest::TearDown() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertFalse( - 'CxxExceptionInSetUpTestSuiteTest test body ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInSetUpTestSuiteTest test body called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) def testCatchesCxxExceptionsInTearDownTestCase(self): self.assertTrue( 'C++ exception with description "Standard C++ exception"' - ' thrown in TearDownTestSuite()' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + ' thrown in TearDownTestSuite()' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) def testCatchesCxxExceptionsInSetUp(self): self.assertTrue( 'C++ exception with description "Standard C++ exception"' - ' thrown in SetUp()' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + ' thrown in SetUp()' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) + self.assertTrue( + 'CxxExceptionInSetUpTest::TearDownTestSuite() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInSetUpTest::TearDownTestSuite() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInSetUpTest destructor called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInSetUpTest destructor ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInSetUpTest::TearDown() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInSetUpTest::TearDown() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) - self.assert_('unexpected' not in EX_BINARY_OUTPUT, - 'This failure belongs in this test only if ' - '"CxxExceptionInSetUpTest" (no quotes) ' - 'appears on the same line as words "called unexpectedly"') + 'unexpected' not in EX_BINARY_OUTPUT, + ( + 'This failure belongs in this test only if ' + '"CxxExceptionInSetUpTest" (no quotes) ' + 'appears on the same line as words "called unexpectedly"' + ), + ) def testCatchesCxxExceptionsInTearDown(self): self.assertTrue( 'C++ exception with description "Standard C++ exception"' - ' thrown in TearDown()' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + ' thrown in TearDown()' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInTearDownTest::TearDownTestSuite() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInTearDownTest::TearDownTestSuite() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInTearDownTest destructor ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInTearDownTest destructor called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) def testCatchesCxxExceptionsInTestBody(self): self.assertTrue( 'C++ exception with description "Standard C++ exception"' - ' thrown in the test body' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + ' thrown in the test body' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInTestBodyTest::TearDownTestSuite() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInTestBodyTest::TearDownTestSuite() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInTestBodyTest destructor ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInTestBodyTest destructor called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) self.assertTrue( - 'CxxExceptionInTestBodyTest::TearDown() ' - 'called as expected.' in EX_BINARY_OUTPUT, EX_BINARY_OUTPUT) + 'CxxExceptionInTestBodyTest::TearDown() called as expected.' + in EX_BINARY_OUTPUT, + EX_BINARY_OUTPUT, + ) def testCatchesNonStdCxxExceptions(self): self.assertTrue( 'Unknown C++ exception thrown in the test body' in EX_BINARY_OUTPUT, - EX_BINARY_OUTPUT) + EX_BINARY_OUTPUT, + ) def testUnhandledCxxExceptionsAbortTheProgram(self): # Filters out SEH exception tests on Windows. Unhandled SEH exceptions # cause tests to show pop-up windows there. - FITLER_OUT_SEH_TESTS_FLAG = FILTER_FLAG + '=-*Seh*' + filter_out_seh_tests_flag = FILTER_FLAG + '=-*Seh*' # By default, Google Test doesn't catch the exceptions. uncaught_exceptions_ex_binary_output = gtest_test_utils.Subprocess( - [EX_EXE_PATH, - NO_CATCH_EXCEPTIONS_FLAG, - FITLER_OUT_SEH_TESTS_FLAG], - env=environ).output - - self.assert_('Unhandled C++ exception terminating the program' - in uncaught_exceptions_ex_binary_output) - self.assert_('unexpected' not in uncaught_exceptions_ex_binary_output) + [EX_EXE_PATH, NO_CATCH_EXCEPTIONS_FLAG, filter_out_seh_tests_flag], + env=environ, + ).output + + self.assertIn( + 'Unhandled C++ exception terminating the program', + uncaught_exceptions_ex_binary_output, + ) + self.assertNotIn('unexpected', uncaught_exceptions_ex_binary_output) if __name__ == '__main__':