1130
1132
self.fail('test reached')
1132
1134
def cleanup(self):
1135
calls.append('cleanup')
1135
1137
runner = TextTestRunner(stream=self._log_file)
1136
1138
test = SkippedSetupTest('test_skip')
1137
1139
result = self.run_test_runner(runner, test)
1138
1140
self.assertTrue(result.wasSuccessful())
1139
1141
# Check if cleanup was called the right number of times.
1140
self.assertEqual(0, test.counter)
1142
self.assertEqual(['setUp', 'cleanup'], calls)
1142
1144
def test_skipped_from_test(self):
1143
1146
class SkippedTest(TestCase):
1145
1148
def setUp(self):
1149
calls.append('setUp')
1147
1150
self.addCleanup(self.cleanup)
1149
1152
def test_skip(self):
1150
1153
raise TestSkipped('skipped test')
1152
1155
def cleanup(self):
1156
calls.append('cleanup')
1155
1158
runner = TextTestRunner(stream=self._log_file)
1156
1159
test = SkippedTest('test_skip')
1157
1160
result = self.run_test_runner(runner, test)
1158
1161
self.assertTrue(result.wasSuccessful())
1159
1162
# Check if cleanup was called the right number of times.
1160
self.assertEqual(0, test.counter)
1163
self.assertEqual(['setUp', 'cleanup'], calls)
1162
1165
def test_not_applicable(self):
1163
1166
# run a test that is skipped because it's not applicable
1233
1242
test = LogTester('test_success')
1234
1243
result = self.run_test_runner(runner, test)
1236
log = test._get_log()
1237
self.assertEqual("DELETED log file to reduce memory footprint", log)
1238
self.assertEqual('', test._log_contents)
1239
self.assertIs(None, test._log_file_name)
1245
self.assertLogDeleted(test)
1247
def test_skipped_log_deleted(self):
1248
"""Skipped tests have their log deleted"""
1250
class LogTester(TestCase):
1252
def test_skipped(self):
1253
self.log('this will be removed\n')
1254
raise tests.TestSkipped()
1256
sio = cStringIO.StringIO()
1257
runner = TextTestRunner(stream=sio)
1258
test = LogTester('test_skipped')
1259
result = self.run_test_runner(runner, test)
1261
self.assertLogDeleted(test)
1263
def test_not_aplicable_log_deleted(self):
1264
"""Not applicable tests have their log deleted"""
1266
class LogTester(TestCase):
1268
def test_not_applicable(self):
1269
self.log('this will be removed\n')
1270
raise tests.TestNotApplicable()
1272
sio = cStringIO.StringIO()
1273
runner = TextTestRunner(stream=sio)
1274
test = LogTester('test_not_applicable')
1275
result = self.run_test_runner(runner, test)
1277
self.assertLogDeleted(test)
1279
def test_known_failure_log_deleted(self):
1280
"""Know failure tests have their log deleted"""
1282
class LogTester(TestCase):
1284
def test_known_failure(self):
1285
self.log('this will be removed\n')
1286
raise tests.KnownFailure()
1288
sio = cStringIO.StringIO()
1289
runner = TextTestRunner(stream=sio)
1290
test = LogTester('test_known_failure')
1291
result = self.run_test_runner(runner, test)
1293
self.assertLogDeleted(test)
1241
1295
def test_fail_log_kept(self):
1242
1296
"""Failed tests have their log kept"""
1682
1736
condition_id_re('test_condition_id_re'))
1683
1737
self.assertEqual([test_name], self._test_ids(filtered_suite))
1739
def test_condition_id_in_list(self):
1740
test_names = ['bzrlib.tests.test_selftest.TestSelftestFiltering.'
1741
'test_condition_id_in_list']
1742
id_list = tests.TestIdList(test_names)
1743
filtered_suite = filter_suite_by_condition(
1744
self.suite, tests.condition_id_in_list(id_list))
1745
my_pattern = 'TestSelftestFiltering.*test_condition_id_in_list'
1746
re_filtered = filter_suite_by_re(self.suite, my_pattern)
1747
self.assertEqual(self._test_ids(re_filtered),
1748
self._test_ids(filtered_suite))
1685
1750
def test_condition_isinstance(self):
1686
1751
filtered_suite = filter_suite_by_condition(self.suite,
1687
1752
condition_isinstance(self.__class__))
1727
1792
self.assertEqual(filtered_names, ['bzrlib.tests.test_selftest.'
1728
1793
'TestSelftestFiltering.test_filter_suite_by_re'])
1795
def test_filter_suite_by_id_list(self):
1796
test_list = ['bzrlib.tests.test_selftest.'
1797
'TestSelftestFiltering.test_filter_suite_by_id_list']
1798
filtered_suite = tests.filter_suite_by_id_list(
1799
self.suite, tests.TestIdList(test_list))
1800
filtered_names = self._test_ids(filtered_suite)
1803
['bzrlib.tests.test_selftest.'
1804
'TestSelftestFiltering.test_filter_suite_by_id_list'])
1730
1806
def test_preserve_input(self):
1731
1807
# NB: Surely this is something in the stdlib to do this?
1732
1808
self.assertTrue(self.suite is preserve_input(self.suite))
1842
1918
module.__class__.load_tests = load_tests
1843
1919
self.assertEqual(2, loader.loadTestsFromModule(module).countTestCases())
1922
class TestTestIdList(tests.TestCase):
1924
def _create_id_list(self, test_list):
1925
return tests.TestIdList(test_list)
1927
def _create_suite(self, test_id_list):
1929
class Stub(TestCase):
1933
def _create_test_id(id):
1936
suite = TestUtil.TestSuite()
1937
for id in test_id_list:
1938
t = Stub('test_foo')
1939
t.id = _create_test_id(id)
1943
def _test_ids(self, test_suite):
1944
"""Get the ids for the tests in a test suite."""
1945
return [t.id() for t in iter_suite_tests(test_suite)]
1947
def test_empty_list(self):
1948
id_list = self._create_id_list([])
1949
self.assertEquals({}, id_list.tests)
1950
self.assertEquals({}, id_list.modules)
1952
def test_valid_list(self):
1953
id_list = self._create_id_list(
1954
['mod1.cl1.meth1', 'mod1.cl1.meth2',
1955
'mod1.func1', 'mod1.cl2.meth2',
1957
'mod1.submod2.cl1.meth1', 'mod1.submod2.cl2.meth2',
1959
self.assertTrue(id_list.is_module_name_used('mod1'))
1960
self.assertTrue(id_list.is_module_name_used('mod1.submod1'))
1961
self.assertTrue(id_list.is_module_name_used('mod1.submod2'))
1962
self.assertTrue(id_list.test_in('mod1.cl1.meth1'))
1963
self.assertTrue(id_list.test_in('mod1.submod1'))
1964
self.assertTrue(id_list.test_in('mod1.func1'))
1966
def test_bad_chars_in_params(self):
1967
id_list = self._create_id_list(['mod1.cl1.meth1(xx.yy)'])
1968
self.assertTrue(id_list.is_module_name_used('mod1'))
1969
self.assertTrue(id_list.test_in('mod1.cl1.meth1(xx.yy)'))
1971
def test_module_used(self):
1972
id_list = self._create_id_list(['mod.class.meth'])
1973
self.assertTrue(id_list.is_module_name_used('mod'))
1974
self.assertTrue(id_list.is_module_name_used('mod.class'))
1975
self.assertTrue(id_list.is_module_name_used('mod.class.meth'))
1977
def test_test_suite(self):
1978
# This test is slow, so we do a single test with one test in each
1982
'bzrlib.tests.test_selftest.TestTestIdList.test_test_suite',
1983
# transport implementations
1984
'bzrlib.tests.test_transport_implementations.TransportTests'
1985
'.test_abspath(LocalURLServer)',
1986
# packages_to_test()
1987
'bzrlib.tests.blackbox.test_branch.TestBranch.test_branch',
1988
# MODULES_TO_DOCTEST
1989
'bzrlib.timestamp.format_highres_date',
1990
# plugins can't be tested that way since selftest may be run with
1993
suite = tests.test_suite(test_list)
1994
self.assertEquals(test_list, self._test_ids(suite))
1997
class TestLoadTestIdList(tests.TestCaseInTempDir):
1999
def _create_test_list_file(self, file_name, content):
2000
fl = open(file_name, 'wt')
2004
def test_load_unknown(self):
2005
self.assertRaises(errors.NoSuchFile,
2006
tests.load_test_id_list, 'i_do_not_exist')
2008
def test_load_test_list(self):
2009
test_list_fname = 'test.list'
2010
self._create_test_list_file(test_list_fname,
2011
'mod1.cl1.meth1\nmod2.cl2.meth2\n')
2012
tlist = tests.load_test_id_list(test_list_fname)
2013
self.assertEquals(2, len(tlist))
2014
self.assertEquals('mod1.cl1.meth1', tlist[0])
2015
self.assertEquals('mod2.cl2.meth2', tlist[1])
2017
def test_load_dirty_file(self):
2018
test_list_fname = 'test.list'
2019
self._create_test_list_file(test_list_fname,
2020
' mod1.cl1.meth1\n\nmod2.cl2.meth2 \n'
2022
tlist = tests.load_test_id_list(test_list_fname)
2023
self.assertEquals(4, len(tlist))
2024
self.assertEquals('mod1.cl1.meth1', tlist[0])
2025
self.assertEquals('', tlist[1])
2026
self.assertEquals('mod2.cl2.meth2', tlist[2])
2027
self.assertEquals('bar baz', tlist[3])