Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 """Tests that leaked mock objects can be caught be Google Mock."""
00033
00034 __author__ = 'wan@google.com (Zhanyong Wan)'
00035
00036
00037 import gmock_test_utils
00038
00039
00040 PROGRAM_PATH = gmock_test_utils.GetTestExecutablePath('gmock_leak_test_')
00041 TEST_WITH_EXPECT_CALL = [PROGRAM_PATH, '--gtest_filter=*ExpectCall*']
00042 TEST_WITH_ON_CALL = [PROGRAM_PATH, '--gtest_filter=*OnCall*']
00043 TEST_MULTIPLE_LEAKS = [PROGRAM_PATH, '--gtest_filter=*MultipleLeaked*']
00044
00045 environ = gmock_test_utils.environ
00046 SetEnvVar = gmock_test_utils.SetEnvVar
00047
00048
00049
00050
00051
00052
00053 SetEnvVar(gmock_test_utils.PREMATURE_EXIT_FILE_ENV_VAR, None)
00054
00055
00056 class GMockLeakTest(gmock_test_utils.TestCase):
00057
00058 def testCatchesLeakedMockByDefault(self):
00059 self.assertNotEqual(
00060 0,
00061 gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL,
00062 env=environ).exit_code)
00063 self.assertNotEqual(
00064 0,
00065 gmock_test_utils.Subprocess(TEST_WITH_ON_CALL,
00066 env=environ).exit_code)
00067
00068 def testDoesNotCatchLeakedMockWhenDisabled(self):
00069 self.assertEquals(
00070 0,
00071 gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL +
00072 ['--gmock_catch_leaked_mocks=0'],
00073 env=environ).exit_code)
00074 self.assertEquals(
00075 0,
00076 gmock_test_utils.Subprocess(TEST_WITH_ON_CALL +
00077 ['--gmock_catch_leaked_mocks=0'],
00078 env=environ).exit_code)
00079
00080 def testCatchesLeakedMockWhenEnabled(self):
00081 self.assertNotEqual(
00082 0,
00083 gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL +
00084 ['--gmock_catch_leaked_mocks'],
00085 env=environ).exit_code)
00086 self.assertNotEqual(
00087 0,
00088 gmock_test_utils.Subprocess(TEST_WITH_ON_CALL +
00089 ['--gmock_catch_leaked_mocks'],
00090 env=environ).exit_code)
00091
00092 def testCatchesLeakedMockWhenEnabledWithExplictFlagValue(self):
00093 self.assertNotEqual(
00094 0,
00095 gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL +
00096 ['--gmock_catch_leaked_mocks=1'],
00097 env=environ).exit_code)
00098
00099 def testCatchesMultipleLeakedMocks(self):
00100 self.assertNotEqual(
00101 0,
00102 gmock_test_utils.Subprocess(TEST_MULTIPLE_LEAKS +
00103 ['--gmock_catch_leaked_mocks'],
00104 env=environ).exit_code)
00105
00106
00107 if __name__ == '__main__':
00108 gmock_test_utils.Main()