1233
1240
test = LogTester('test_success')
1234
1241
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)
1243
self.assertLogDeleted(test)
1245
def test_skipped_log_deleted(self):
1246
"""Skipped tests have their log deleted"""
1248
class LogTester(TestCase):
1250
def test_skipped(self):
1251
self.log('this will be removed\n')
1252
raise tests.TestSkipped()
1254
sio = cStringIO.StringIO()
1255
runner = TextTestRunner(stream=sio)
1256
test = LogTester('test_skipped')
1257
result = self.run_test_runner(runner, test)
1259
self.assertLogDeleted(test)
1261
def test_not_aplicable_log_deleted(self):
1262
"""Not applicable tests have their log deleted"""
1264
class LogTester(TestCase):
1266
def test_not_applicable(self):
1267
self.log('this will be removed\n')
1268
raise tests.TestNotApplicable()
1270
sio = cStringIO.StringIO()
1271
runner = TextTestRunner(stream=sio)
1272
test = LogTester('test_not_applicable')
1273
result = self.run_test_runner(runner, test)
1275
self.assertLogDeleted(test)
1277
def test_known_failure_log_deleted(self):
1278
"""Know failure tests have their log deleted"""
1280
class LogTester(TestCase):
1282
def test_known_failure(self):
1283
self.log('this will be removed\n')
1284
raise tests.KnownFailure()
1286
sio = cStringIO.StringIO()
1287
runner = TextTestRunner(stream=sio)
1288
test = LogTester('test_known_failure')
1289
result = self.run_test_runner(runner, test)
1291
self.assertLogDeleted(test)
1241
1293
def test_fail_log_kept(self):
1242
1294
"""Failed tests have their log kept"""
1682
1734
condition_id_re('test_condition_id_re'))
1683
1735
self.assertEqual([test_name], self._test_ids(filtered_suite))
1737
def test_condition_id_in_list(self):
1738
test_names = ['bzrlib.tests.test_selftest.TestSelftestFiltering.'
1739
'test_condition_id_in_list']
1740
id_list = tests.TestIdList(test_names)
1741
filtered_suite = filter_suite_by_condition(
1742
self.suite, tests.condition_id_in_list(id_list))
1743
my_pattern = 'TestSelftestFiltering.*test_condition_id_in_list'
1744
re_filtered = filter_suite_by_re(self.suite, my_pattern)
1745
self.assertEqual(self._test_ids(re_filtered),
1746
self._test_ids(filtered_suite))
1685
1748
def test_condition_isinstance(self):
1686
1749
filtered_suite = filter_suite_by_condition(self.suite,
1687
1750
condition_isinstance(self.__class__))
1727
1790
self.assertEqual(filtered_names, ['bzrlib.tests.test_selftest.'
1728
1791
'TestSelftestFiltering.test_filter_suite_by_re'])
1793
def test_filter_suite_by_id_list(self):
1794
test_list = ['bzrlib.tests.test_selftest.'
1795
'TestSelftestFiltering.test_filter_suite_by_id_list']
1796
filtered_suite = tests.filter_suite_by_id_list(
1797
self.suite, tests.TestIdList(test_list))
1798
filtered_names = self._test_ids(filtered_suite)
1801
['bzrlib.tests.test_selftest.'
1802
'TestSelftestFiltering.test_filter_suite_by_id_list'])
1730
1804
def test_preserve_input(self):
1731
1805
# NB: Surely this is something in the stdlib to do this?
1732
1806
self.assertTrue(self.suite is preserve_input(self.suite))
1842
1916
module.__class__.load_tests = load_tests
1843
1917
self.assertEqual(2, loader.loadTestsFromModule(module).countTestCases())
1920
class TestTestIdList(tests.TestCase):
1922
def _create_id_list(self, test_list):
1923
return tests.TestIdList(test_list)
1925
def _create_suite(self, test_id_list):
1927
class Stub(TestCase):
1931
def _create_test_id(id):
1934
suite = TestUtil.TestSuite()
1935
for id in test_id_list:
1936
t = Stub('test_foo')
1937
t.id = _create_test_id(id)
1941
def _test_ids(self, test_suite):
1942
"""Get the ids for the tests in a test suite."""
1943
return [t.id() for t in iter_suite_tests(test_suite)]
1945
def test_empty_list(self):
1946
id_list = self._create_id_list([])
1947
self.assertEquals({}, id_list.tests)
1948
self.assertEquals({}, id_list.modules)
1950
def test_valid_list(self):
1951
id_list = self._create_id_list(
1952
['mod1.cl1.meth1', 'mod1.cl1.meth2',
1953
'mod1.func1', 'mod1.cl2.meth2',
1955
'mod1.submod2.cl1.meth1', 'mod1.submod2.cl2.meth2',
1957
self.assertTrue(id_list.is_module_name_used('mod1'))
1958
self.assertTrue(id_list.is_module_name_used('mod1.submod1'))
1959
self.assertTrue(id_list.is_module_name_used('mod1.submod2'))
1960
self.assertTrue(id_list.test_in('mod1.cl1.meth1'))
1961
self.assertTrue(id_list.test_in('mod1.submod1'))
1962
self.assertTrue(id_list.test_in('mod1.func1'))
1964
def test_bad_chars_in_params(self):
1965
id_list = self._create_id_list(['mod1.cl1.meth1(xx.yy)'])
1966
self.assertTrue(id_list.is_module_name_used('mod1'))
1967
self.assertTrue(id_list.test_in('mod1.cl1.meth1(xx.yy)'))
1969
def test_module_used(self):
1970
id_list = self._create_id_list(['mod.class.meth'])
1971
self.assertTrue(id_list.is_module_name_used('mod'))
1972
self.assertTrue(id_list.is_module_name_used('mod.class'))
1973
self.assertTrue(id_list.is_module_name_used('mod.class.meth'))
1975
def test_test_suite(self):
1976
# This test is slow, so we do a single test with one test in each
1980
'bzrlib.tests.test_selftest.TestTestIdList.test_test_suite',
1981
# transport implementations
1982
'bzrlib.tests.test_transport_implementations.TransportTests'
1983
'.test_abspath(LocalURLServer)',
1984
# packages_to_test()
1985
'bzrlib.tests.blackbox.test_branch.TestBranch.test_branch',
1986
# MODULES_TO_DOCTEST
1987
'bzrlib.timestamp.format_highres_date',
1988
# plugins can't be tested that way since selftest may be run with
1991
suite = tests.test_suite(test_list)
1992
self.assertEquals(test_list, self._test_ids(suite))
1995
class TestLoadTestIdList(tests.TestCaseInTempDir):
1997
def _create_test_list_file(self, file_name, content):
1998
fl = open(file_name, 'wt')
2002
def test_load_unknown(self):
2003
self.assertRaises(errors.NoSuchFile,
2004
tests.load_test_id_list, 'i_do_not_exist')
2006
def test_load_test_list(self):
2007
test_list_fname = 'test.list'
2008
self._create_test_list_file(test_list_fname,
2009
'mod1.cl1.meth1\nmod2.cl2.meth2\n')
2010
tlist = tests.load_test_id_list(test_list_fname)
2011
self.assertEquals(2, len(tlist))
2012
self.assertEquals('mod1.cl1.meth1', tlist[0])
2013
self.assertEquals('mod2.cl2.meth2', tlist[1])
2015
def test_load_dirty_file(self):
2016
test_list_fname = 'test.list'
2017
self._create_test_list_file(test_list_fname,
2018
' mod1.cl1.meth1\n\nmod2.cl2.meth2 \n'
2020
tlist = tests.load_test_id_list(test_list_fname)
2021
self.assertEquals(4, len(tlist))
2022
self.assertEquals('mod1.cl1.meth1', tlist[0])
2023
self.assertEquals('', tlist[1])
2024
self.assertEquals('mod2.cl2.meth2', tlist[2])
2025
self.assertEquals('bar baz', tlist[3])