337
336
formats = [workingtree_4.WorkingTreeFormat4(),
338
workingtree_3.WorkingTreeFormat3(),
339
workingtree_4.WorkingTreeFormat6()]
340
scenarios = make_scenarios(server1, server2, formats,
341
remote_server='c', remote_readonly_server='d',
342
remote_backing_server='e')
337
workingtree_3.WorkingTreeFormat3(),]
338
scenarios = make_scenarios(server1, server2, formats)
343
339
self.assertEqual([
344
340
('WorkingTreeFormat4',
345
341
{'bzrdir_format': formats[0]._matchingbzrdir,
350
346
{'bzrdir_format': formats[1]._matchingbzrdir,
351
347
'transport_readonly_server': 'b',
352
348
'transport_server': 'a',
353
'workingtree_format': formats[1]}),
354
('WorkingTreeFormat6',
355
{'bzrdir_format': formats[2]._matchingbzrdir,
356
'transport_readonly_server': 'b',
357
'transport_server': 'a',
358
'workingtree_format': formats[2]}),
359
('WorkingTreeFormat6,remote',
360
{'bzrdir_format': formats[2]._matchingbzrdir,
361
'repo_is_remote': True,
362
'transport_readonly_server': 'd',
363
'transport_server': 'c',
364
'vfs_transport_factory': 'e',
365
'workingtree_format': formats[2]}),
349
'workingtree_format': formats[1]})],
369
353
class TestTreeScenarios(tests.TestCase):
371
355
def test_scenarios(self):
372
356
# the tree implementation scenario generator is meant to setup one
373
# instance for each working tree format, one additional instance
357
# instance for each working tree format, and one additional instance
374
358
# that will use the default wt format, but create a revision tree for
375
# the tests, and one more that uses the default wt format as a
376
# lightweight checkout of a remote repository. This means that the wt
377
# ones should have the workingtree_to_test_tree attribute set to
378
# 'return_parameter' and the revision one set to
379
# revision_tree_from_workingtree.
359
# the tests. this means that the wt ones should have the
360
# workingtree_to_test_tree attribute set to 'return_parameter' and the
361
# revision one set to revision_tree_from_workingtree.
381
363
from bzrlib.tests.per_tree import (
382
364
_dirstate_tree_from_workingtree,
391
smart_server = test_server.SmartTCPServer_for_testing
392
smart_readonly_server = test_server.ReadonlySmartTCPServer_for_testing
393
mem_server = memory.MemoryServer
394
373
formats = [workingtree_4.WorkingTreeFormat4(),
395
374
workingtree_3.WorkingTreeFormat3(),]
396
375
scenarios = make_scenarios(server1, server2, formats)
397
self.assertEqual(8, len(scenarios))
376
self.assertEqual(7, len(scenarios))
398
377
default_wt_format = workingtree.format_registry.get_default()
399
378
wt4_format = workingtree_4.WorkingTreeFormat4()
400
379
wt5_format = workingtree_4.WorkingTreeFormat5()
401
wt6_format = workingtree_4.WorkingTreeFormat6()
402
380
expected_scenarios = [
403
381
('WorkingTreeFormat4',
404
382
{'bzrdir_format': formats[0]._matchingbzrdir,
414
392
'workingtree_format': formats[1],
415
393
'_workingtree_to_test_tree': return_parameter,
417
('WorkingTreeFormat6,remote',
418
{'bzrdir_format': wt6_format._matchingbzrdir,
419
'repo_is_remote': True,
420
'transport_readonly_server': smart_readonly_server,
421
'transport_server': smart_server,
422
'vfs_transport_factory': mem_server,
423
'workingtree_format': wt6_format,
424
'_workingtree_to_test_tree': return_parameter,
427
396
{'_workingtree_to_test_tree': revision_tree_from_workingtree,
428
397
'bzrdir_format': default_wt_format._matchingbzrdir,
640
609
# Guard against regression into MemoryTransport leaking
641
610
# files to disk instead of keeping them in memory.
642
611
self.assertFalse(osutils.lexists('dir'))
643
dir_format = controldir.format_registry.make_bzrdir('knit')
612
dir_format = bzrdir.format_registry.make_bzrdir('knit')
644
613
self.assertEqual(dir_format.repository_format.__class__,
645
614
the_branch.repository._format.__class__)
646
615
self.assertEqual('Bazaar-NG Knit Repository Format 1',
709
678
builder = self.make_branch_builder('dir')
710
679
rev_id = builder.build_commit()
711
680
self.assertPathExists('dir')
712
a_dir = controldir.ControlDir.open('dir')
681
a_dir = bzrdir.BzrDir.open('dir')
713
682
self.assertRaises(errors.NoWorkingTree, a_dir.open_workingtree)
714
683
a_branch = a_dir.open_branch()
715
684
builder_branch = builder.get_branch()
1014
983
unittest.FunctionTestCase(lambda: None),
1015
984
unittest.FunctionTestCase(lambda: None)])
1016
985
suite.run(result)
1017
self.assertEqual(1, result.calls)
1018
self.assertEqual(2, result.count)
986
self.assertEquals(1, result.calls)
987
self.assertEquals(2, result.count)
1021
990
class TestRunner(tests.TestCase):
1508
1477
transport_server.start_server()
1509
1478
self.addCleanup(transport_server.stop_server)
1510
1479
t = transport.get_transport_from_url(transport_server.get_url())
1511
controldir.ControlDir.create(t.base)
1480
bzrdir.BzrDir.create(t.base)
1512
1481
self.assertRaises(errors.BzrError,
1513
controldir.ControlDir.open_from_transport, t)
1482
bzrdir.BzrDir.open_from_transport, t)
1514
1483
# But if we declare this as safe, we can open the bzrdir.
1515
1484
self.permit_url(t.base)
1516
1485
self._bzr_selftest_roots.append(t.base)
1517
controldir.ControlDir.open_from_transport(t)
1486
bzrdir.BzrDir.open_from_transport(t)
1519
1488
def test_requireFeature_available(self):
1520
1489
"""self.requireFeature(available) is a no-op."""
1654
1623
self.assertRaises(AssertionError,
1655
1624
self.assertListRaises, _TestException, success_generator)
1657
def _run_successful_test(self, test):
1658
result = testtools.TestResult()
1660
self.assertTrue(result.wasSuccessful())
1663
1626
def test_overrideAttr_without_value(self):
1664
1627
self.test_attr = 'original' # Define a test attribute
1665
1628
obj = self # Make 'obj' visible to the embedded test
1666
1629
class Test(tests.TestCase):
1668
1631
def setUp(self):
1669
super(Test, self).setUp()
1632
tests.TestCase.setUp(self)
1670
1633
self.orig = self.overrideAttr(obj, 'test_attr')
1672
1635
def test_value(self):
1675
1638
obj.test_attr = 'modified'
1676
1639
self.assertEqual('modified', obj.test_attr)
1678
self._run_successful_test(Test('test_value'))
1641
test = Test('test_value')
1642
test.run(unittest.TestResult())
1679
1643
self.assertEqual('original', obj.test_attr)
1681
1645
def test_overrideAttr_with_value(self):
1684
1648
class Test(tests.TestCase):
1686
1650
def setUp(self):
1687
super(Test, self).setUp()
1651
tests.TestCase.setUp(self)
1688
1652
self.orig = self.overrideAttr(obj, 'test_attr', new='modified')
1690
1654
def test_value(self):
1691
1655
self.assertEqual('original', self.orig)
1692
1656
self.assertEqual('modified', obj.test_attr)
1694
self._run_successful_test(Test('test_value'))
1658
test = Test('test_value')
1659
test.run(unittest.TestResult())
1695
1660
self.assertEqual('original', obj.test_attr)
1697
def test_overrideAttr_with_no_existing_value_and_value(self):
1698
# Do not define the test_attribute
1699
obj = self # Make 'obj' visible to the embedded test
1700
class Test(tests.TestCase):
1703
tests.TestCase.setUp(self)
1704
self.orig = self.overrideAttr(obj, 'test_attr', new='modified')
1706
def test_value(self):
1707
self.assertEqual(tests._unitialized_attr, self.orig)
1708
self.assertEqual('modified', obj.test_attr)
1710
self._run_successful_test(Test('test_value'))
1711
self.assertRaises(AttributeError, getattr, obj, 'test_attr')
1713
def test_overrideAttr_with_no_existing_value_and_no_value(self):
1714
# Do not define the test_attribute
1715
obj = self # Make 'obj' visible to the embedded test
1716
class Test(tests.TestCase):
1719
tests.TestCase.setUp(self)
1720
self.orig = self.overrideAttr(obj, 'test_attr')
1722
def test_value(self):
1723
self.assertEqual(tests._unitialized_attr, self.orig)
1724
self.assertRaises(AttributeError, getattr, obj, 'test_attr')
1726
self._run_successful_test(Test('test_value'))
1727
self.assertRaises(AttributeError, getattr, obj, 'test_attr')
1729
1662
def test_recordCalls(self):
1730
1663
from bzrlib.tests import test_selftest
1731
1664
calls = self.recordCalls(
1732
1665
test_selftest, '_add_numbers')
1733
1666
self.assertEqual(test_selftest._add_numbers(2, 10),
1735
self.assertEqual(calls, [((2, 10), {})])
1668
self.assertEquals(calls, [((2, 10), {})])
1738
1671
def _add_numbers(a, b):
1912
1845
self.assertIsInstance(2, int)
1913
1846
self.assertIsInstance(u'', basestring)
1914
1847
e = self.assertRaises(AssertionError, self.assertIsInstance, None, int)
1915
self.assertEqual(str(e),
1848
self.assertEquals(str(e),
1916
1849
"None is an instance of <type 'NoneType'> rather than <type 'int'>")
1917
1850
self.assertRaises(AssertionError, self.assertIsInstance, 23.3, int)
1918
1851
e = self.assertRaises(AssertionError,
1919
1852
self.assertIsInstance, None, int, "it's just not")
1920
self.assertEqual(str(e),
1853
self.assertEquals(str(e),
1921
1854
"None is an instance of <type 'NoneType'> rather than <type 'int'>"
1922
1855
": it's just not")
1928
1861
def test_assertEqualDiff(self):
1929
1862
e = self.assertRaises(AssertionError,
1930
1863
self.assertEqualDiff, '', '\n')
1931
self.assertEqual(str(e),
1864
self.assertEquals(str(e),
1932
1865
# Don't blink ! The '+' applies to the second string
1933
1866
'first string is missing a final newline.\n+ \n')
1934
1867
e = self.assertRaises(AssertionError,
1935
1868
self.assertEqualDiff, '\n', '')
1936
self.assertEqual(str(e),
1869
self.assertEquals(str(e),
1937
1870
# Don't blink ! The '-' applies to the second string
1938
1871
'second string is missing a final newline.\n- \n')
1996
1929
warnings.warn("this is your last warning")
1998
1931
wlist, result = self.callCatchWarnings(meth, 1, 2)
1999
self.assertEqual(3, result)
1932
self.assertEquals(3, result)
2000
1933
# would like just to compare them, but UserWarning doesn't implement
2003
1936
self.assertIsInstance(w0, UserWarning)
2004
self.assertEqual("this is your last warning", str(w0))
1937
self.assertEquals("this is your last warning", str(w0))
2007
1940
class TestConvenienceMakers(tests.TestCaseWithTransport):
2010
1943
def test_make_branch_and_tree_with_format(self):
2011
1944
# we should be able to supply a format to make_branch_and_tree
2012
1945
self.make_branch_and_tree('a', format=bzrlib.bzrdir.BzrDirMetaFormat1())
2013
self.assertIsInstance(bzrlib.controldir.ControlDir.open('a')._format,
1946
self.assertIsInstance(bzrlib.bzrdir.BzrDir.open('a')._format,
2014
1947
bzrlib.bzrdir.BzrDirMetaFormat1)
2016
1949
def test_make_branch_and_memory_tree(self):
2028
1961
tree = self.make_branch_and_tree('t1')
2029
1962
base = tree.bzrdir.root_transport.base
2030
1963
self.assertStartsWith(base, 'file://')
2031
self.assertEqual(tree.bzrdir.root_transport,
1964
self.assertEquals(tree.bzrdir.root_transport,
2032
1965
tree.branch.bzrdir.root_transport)
2033
self.assertEqual(tree.bzrdir.root_transport,
1966
self.assertEquals(tree.bzrdir.root_transport,
2034
1967
tree.branch.repository.bzrdir.root_transport)
2300
2233
self.assertEqual(['rocks'], self.argv)
2301
2234
self.assertEqual(34, self.retcode)
2302
2235
self.assertEqual('It sure does!\n', out)
2303
self.assertEqual(out, self.out)
2236
self.assertEquals(out, self.out)
2304
2237
self.assertEqual('', err)
2305
self.assertEqual(err, self.err)
2238
self.assertEquals(err, self.err)
2307
2240
def test_run_bzr_error_regexes(self):
2448
2381
"""Base class for tests testing how we might run bzr."""
2450
2383
def setUp(self):
2451
super(TestWithFakedStartBzrSubprocess, self).setUp()
2384
tests.TestCaseWithTransport.setUp(self)
2452
2385
self.subprocess_calls = []
2454
2387
def start_bzr_subprocess(self, process_args, env_changes=None,
2847
2780
self.run_bzr, ['assert-fail'])
2848
2781
# make sure we got the real thing, not an error from somewhere else in
2849
2782
# the test framework
2850
self.assertEqual('always fails', str(e))
2783
self.assertEquals('always fails', str(e))
2851
2784
# check that there's no traceback in the test log
2852
2785
self.assertNotContainsRe(self.get_log(), r'Traceback')
2902
2835
def test_load_tests_from_module_name_smoke_test(self):
2903
2836
loader = TestUtil.TestLoader()
2904
2837
suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
2905
self.assertEqual(['bzrlib.tests.test_sampler.DemoTest.test_nothing'],
2838
self.assertEquals(['bzrlib.tests.test_sampler.DemoTest.test_nothing'],
2906
2839
_test_ids(suite))
2908
2841
def test_load_tests_from_module_name_with_bogus_module_name(self):
2938
2871
def test_empty_list(self):
2939
2872
id_list = self._create_id_list([])
2940
self.assertEqual({}, id_list.tests)
2941
self.assertEqual({}, id_list.modules)
2873
self.assertEquals({}, id_list.tests)
2874
self.assertEquals({}, id_list.modules)
2943
2876
def test_valid_list(self):
2944
2877
id_list = self._create_id_list(
2971
2904
test_list = ['bzrlib.tests.test_sampler.DemoTest.test_nothing',
2973
2906
not_found, duplicates = tests.suite_matches_id_list(suite, test_list)
2974
self.assertEqual(['bogus'], not_found)
2975
self.assertEqual([], duplicates)
2907
self.assertEquals(['bogus'], not_found)
2908
self.assertEquals([], duplicates)
2977
2910
def test_suite_matches_id_list_with_duplicates(self):
2978
2911
loader = TestUtil.TestLoader()
2985
2918
test_list = ['bzrlib.tests.test_sampler.DemoTest.test_nothing',]
2986
2919
not_found, duplicates = tests.suite_matches_id_list(
2987
2920
dupes, test_list)
2988
self.assertEqual([], not_found)
2989
self.assertEqual(['bzrlib.tests.test_sampler.DemoTest.test_nothing'],
2921
self.assertEquals([], not_found)
2922
self.assertEquals(['bzrlib.tests.test_sampler.DemoTest.test_nothing'],
3065
2998
suite = tests.test_suite(test_list,
3066
2999
['bzrlib.tests.test_selftest.TestTestSuite'])
3067
3000
# test_test_suite_list_and_start is not included
3068
self.assertEqual(test_list, _test_ids(suite))
3001
self.assertEquals(test_list, _test_ids(suite))
3071
3004
class TestLoadTestIdList(tests.TestCaseInTempDir):
3084
3017
self._create_test_list_file(test_list_fname,
3085
3018
'mod1.cl1.meth1\nmod2.cl2.meth2\n')
3086
3019
tlist = tests.load_test_id_list(test_list_fname)
3087
self.assertEqual(2, len(tlist))
3088
self.assertEqual('mod1.cl1.meth1', tlist[0])
3089
self.assertEqual('mod2.cl2.meth2', tlist[1])
3020
self.assertEquals(2, len(tlist))
3021
self.assertEquals('mod1.cl1.meth1', tlist[0])
3022
self.assertEquals('mod2.cl2.meth2', tlist[1])
3091
3024
def test_load_dirty_file(self):
3092
3025
test_list_fname = 'test.list'
3094
3027
' mod1.cl1.meth1\n\nmod2.cl2.meth2 \n'
3096
3029
tlist = tests.load_test_id_list(test_list_fname)
3097
self.assertEqual(4, len(tlist))
3098
self.assertEqual('mod1.cl1.meth1', tlist[0])
3099
self.assertEqual('', tlist[1])
3100
self.assertEqual('mod2.cl2.meth2', tlist[2])
3101
self.assertEqual('bar baz', tlist[3])
3030
self.assertEquals(4, len(tlist))
3031
self.assertEquals('mod1.cl1.meth1', tlist[0])
3032
self.assertEquals('', tlist[1])
3033
self.assertEquals('mod2.cl2.meth2', tlist[2])
3034
self.assertEquals('bar baz', tlist[3])
3104
3037
class TestFilteredByModuleTestLoader(tests.TestCase):
3112
3045
test_list = ['bzrlib.tests.test_sampler.DemoTest.test_nothing']
3113
3046
loader = self._create_loader(test_list)
3114
3047
suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
3115
self.assertEqual(test_list, _test_ids(suite))
3048
self.assertEquals(test_list, _test_ids(suite))
3117
3050
def test_exclude_tests(self):
3118
3051
test_list = ['bogus']
3119
3052
loader = self._create_loader(test_list)
3120
3053
suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
3121
self.assertEqual([], _test_ids(suite))
3054
self.assertEquals([], _test_ids(suite))
3124
3057
class TestFilteredByNameStartTestLoader(tests.TestCase):
3134
3067
loader = self._create_loader('bzrlib.tests.test_samp')
3136
3069
suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
3137
self.assertEqual(test_list, _test_ids(suite))
3070
self.assertEquals(test_list, _test_ids(suite))
3139
3072
def test_load_tests_inside_module(self):
3140
3073
test_list = ['bzrlib.tests.test_sampler.DemoTest.test_nothing']
3141
3074
loader = self._create_loader('bzrlib.tests.test_sampler.Demo')
3143
3076
suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
3144
self.assertEqual(test_list, _test_ids(suite))
3077
self.assertEquals(test_list, _test_ids(suite))
3146
3079
def test_exclude_tests(self):
3147
3080
test_list = ['bogus']
3148
3081
loader = self._create_loader('bogus')
3150
3083
suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
3151
self.assertEqual([], _test_ids(suite))
3084
self.assertEquals([], _test_ids(suite))
3154
3087
class TestTestPrefixRegistry(tests.TestCase):
3160
3093
def test_register_new_prefix(self):
3161
3094
tpr = self._get_registry()
3162
3095
tpr.register('foo', 'fff.ooo.ooo')
3163
self.assertEqual('fff.ooo.ooo', tpr.get('foo'))
3096
self.assertEquals('fff.ooo.ooo', tpr.get('foo'))
3165
3098
def test_register_existing_prefix(self):
3166
3099
tpr = self._get_registry()
3167
3100
tpr.register('bar', 'bbb.aaa.rrr')
3168
3101
tpr.register('bar', 'bBB.aAA.rRR')
3169
self.assertEqual('bbb.aaa.rrr', tpr.get('bar'))
3102
self.assertEquals('bbb.aaa.rrr', tpr.get('bar'))
3170
3103
self.assertThat(self.get_log(),
3171
3104
DocTestMatches("...bar...bbb.aaa.rrr...BB.aAA.rRR",
3172
3105
doctest.ELLIPSIS))
3178
3111
def test_resolve_prefix(self):
3179
3112
tpr = self._get_registry()
3180
3113
tpr.register('bar', 'bb.aa.rr')
3181
self.assertEqual('bb.aa.rr', tpr.resolve_alias('bar'))
3114
self.assertEquals('bb.aa.rr', tpr.resolve_alias('bar'))
3183
3116
def test_resolve_unknown_alias(self):
3184
3117
tpr = self._get_registry()
3188
3121
def test_predefined_prefixes(self):
3189
3122
tpr = tests.test_prefix_alias_registry
3190
self.assertEqual('bzrlib', tpr.resolve_alias('bzrlib'))
3191
self.assertEqual('bzrlib.doc', tpr.resolve_alias('bd'))
3192
self.assertEqual('bzrlib.utils', tpr.resolve_alias('bu'))
3193
self.assertEqual('bzrlib.tests', tpr.resolve_alias('bt'))
3194
self.assertEqual('bzrlib.tests.blackbox', tpr.resolve_alias('bb'))
3195
self.assertEqual('bzrlib.plugins', tpr.resolve_alias('bp'))
3123
self.assertEquals('bzrlib', tpr.resolve_alias('bzrlib'))
3124
self.assertEquals('bzrlib.doc', tpr.resolve_alias('bd'))
3125
self.assertEquals('bzrlib.utils', tpr.resolve_alias('bu'))
3126
self.assertEquals('bzrlib.tests', tpr.resolve_alias('bt'))
3127
self.assertEquals('bzrlib.tests.blackbox', tpr.resolve_alias('bb'))
3128
self.assertEquals('bzrlib.plugins', tpr.resolve_alias('bp'))
3198
3131
class TestThreadLeakDetection(tests.TestCase):
3521
3454
def test_me(self):
3522
3455
# The first call save the 42 value
3523
3456
self.overrideEnv('MYVAR', None)
3524
self.assertEqual(None, os.environ.get('MYVAR'))
3457
self.assertEquals(None, os.environ.get('MYVAR'))
3525
3458
# Make sure we can call it twice
3526
3459
self.overrideEnv('MYVAR', None)
3527
self.assertEqual(None, os.environ.get('MYVAR'))
3460
self.assertEquals(None, os.environ.get('MYVAR'))
3528
3461
output = StringIO()
3529
3462
result = tests.TextTestResult(output, 0, 1)
3530
3463
Test('test_me').run(result)
3531
3464
if not result.wasStrictlySuccessful():
3532
3465
self.fail(output.getvalue())
3533
3466
# We get our value back
3534
self.assertEqual('42', os.environ.get('MYVAR'))
3467
self.assertEquals('42', os.environ.get('MYVAR'))
3537
3470
class TestIsolatedEnv(tests.TestCase):
3553
3486
# Make sure we know the definition of BZR_HOME: not part of os.environ
3554
3487
# for tests.TestCase.
3555
3488
self.assertTrue('BZR_HOME' in tests.isolated_environ)
3556
self.assertEqual(None, tests.isolated_environ['BZR_HOME'])
3489
self.assertEquals(None, tests.isolated_environ['BZR_HOME'])
3557
3490
# Being part of isolated_environ, BZR_HOME should not appear here
3558
3491
self.assertFalse('BZR_HOME' in os.environ)
3559
3492
# Make sure we know the definition of LINES: part of os.environ for
3560
3493
# tests.TestCase
3561
3494
self.assertTrue('LINES' in tests.isolated_environ)
3562
self.assertEqual('25', tests.isolated_environ['LINES'])
3563
self.assertEqual('25', os.environ['LINES'])
3495
self.assertEquals('25', tests.isolated_environ['LINES'])
3496
self.assertEquals('25', os.environ['LINES'])
3565
3498
def test_injecting_unknown_variable(self):
3566
3499
# BZR_HOME is known to be absent from os.environ
3567
3500
test = self.ScratchMonkey('test_me')
3568
3501
tests.override_os_environ(test, {'BZR_HOME': 'foo'})
3569
self.assertEqual('foo', os.environ['BZR_HOME'])
3502
self.assertEquals('foo', os.environ['BZR_HOME'])
3570
3503
tests.restore_os_environ(test)
3571
3504
self.assertFalse('BZR_HOME' in os.environ)
3574
3507
test = self.ScratchMonkey('test_me')
3575
3508
# LINES is known to be present in os.environ
3576
3509
tests.override_os_environ(test, {'LINES': '42'})
3577
self.assertEqual('42', os.environ['LINES'])
3510
self.assertEquals('42', os.environ['LINES'])
3578
3511
tests.restore_os_environ(test)
3579
self.assertEqual('25', os.environ['LINES'])
3512
self.assertEquals('25', os.environ['LINES'])
3581
3514
def test_deleting_variable(self):
3582
3515
test = self.ScratchMonkey('test_me')
3584
3517
tests.override_os_environ(test, {'LINES': None})
3585
3518
self.assertTrue('LINES' not in os.environ)
3586
3519
tests.restore_os_environ(test)
3587
self.assertEqual('25', os.environ['LINES'])
3520
self.assertEquals('25', os.environ['LINES'])
3590
3523
class TestDocTestSuiteIsolation(tests.TestCase):
3677
3610
# test at the command level without loading the whole test suite
3678
3611
out, err = self.run_bzr(('selftest', '--list') + selftest_args)
3679
3612
actual = out.splitlines()
3680
self.assertEqual(expected, actual)
3613
self.assertEquals(expected, actual)
3682
3615
def test_full_list(self):
3683
3616
self.assertTestList(['a', 'b', 'c'])
3718
3651
test.run(result)
3719
3652
self.assertTrue(hasattr(test, '_counters'))
3720
3653
self.assertTrue(test._counters.has_key('myhook'))
3721
self.assertEqual(expected_calls, test._counters['myhook'])
3654
self.assertEquals(expected_calls, test._counters['myhook'])
3723
3656
def test_no_hook(self):
3724
3657
self.assertHookCalls(0, 'no_hook')