107
109
filename = u'hell\u00d8'
108
110
self.build_tree_contents([(filename, 'contents of hello')])
109
self.failUnlessExists(filename)
111
self.assertPathExists(filename)
112
114
class TestClassesAvailable(tests.TestCase):
338
340
from bzrlib.tests.per_workingtree import make_scenarios
341
formats = [workingtree.WorkingTreeFormat4(),
342
workingtree.WorkingTreeFormat3(),]
343
formats = [workingtree_4.WorkingTreeFormat4(),
344
workingtree_3.WorkingTreeFormat3(),]
343
345
scenarios = make_scenarios(server1, server2, formats)
344
346
self.assertEqual([
345
347
('WorkingTreeFormat4',
378
formats = [workingtree.WorkingTreeFormat4(),
379
workingtree.WorkingTreeFormat3(),]
380
formats = [workingtree_4.WorkingTreeFormat4(),
381
workingtree_3.WorkingTreeFormat3(),]
380
382
scenarios = make_scenarios(server1, server2, formats)
381
383
self.assertEqual(7, len(scenarios))
382
384
default_wt_format = workingtree.format_registry.get_default()
383
wt4_format = workingtree.WorkingTreeFormat4()
384
wt5_format = workingtree.WorkingTreeFormat5()
385
wt4_format = workingtree_4.WorkingTreeFormat4()
386
wt5_format = workingtree_4.WorkingTreeFormat5()
385
387
expected_scenarios = [
386
388
('WorkingTreeFormat4',
387
389
{'bzrdir_format': formats[0]._matchingbzrdir,
453
455
from bzrlib.tests.per_intertree import (
456
from bzrlib.workingtree import WorkingTreeFormat3, WorkingTreeFormat4
458
from bzrlib.workingtree_3 import WorkingTreeFormat3
459
from bzrlib.workingtree_4 import WorkingTreeFormat4
457
460
input_test = TestInterTreeScenarios(
458
461
"test_scenarios")
510
513
self.assertRaises(AssertionError, self.assertEqualStat,
511
514
os.lstat("foo"), os.lstat("longname"))
516
def test_failUnlessExists(self):
517
"""Deprecated failUnlessExists and failIfExists"""
518
self.applyDeprecated(
519
deprecated_in((2, 4)),
520
self.failUnlessExists, '.')
521
self.build_tree(['foo/', 'foo/bar'])
522
self.applyDeprecated(
523
deprecated_in((2, 4)),
524
self.failUnlessExists, 'foo/bar')
525
self.applyDeprecated(
526
deprecated_in((2, 4)),
527
self.failIfExists, 'foo/foo')
529
def test_assertPathExists(self):
530
self.assertPathExists('.')
531
self.build_tree(['foo/', 'foo/bar'])
532
self.assertPathExists('foo/bar')
533
self.assertPathDoesNotExist('foo/foo')
514
536
class TestTestCaseWithMemoryTransport(tests.TestCaseWithMemoryTransport):
549
571
tree = self.make_branch_and_memory_tree('dir')
550
572
# Guard against regression into MemoryTransport leaking
551
573
# files to disk instead of keeping them in memory.
552
self.failIf(osutils.lexists('dir'))
574
self.assertFalse(osutils.lexists('dir'))
553
575
self.assertIsInstance(tree, memorytree.MemoryTree)
555
577
def test_make_branch_and_memory_tree_with_format(self):
559
581
tree = self.make_branch_and_memory_tree('dir', format=format)
560
582
# Guard against regression into MemoryTransport leaking
561
583
# files to disk instead of keeping them in memory.
562
self.failIf(osutils.lexists('dir'))
584
self.assertFalse(osutils.lexists('dir'))
563
585
self.assertIsInstance(tree, memorytree.MemoryTree)
564
586
self.assertEqual(format.repository_format.__class__,
565
587
tree.branch.repository._format.__class__)
569
591
self.assertIsInstance(builder, branchbuilder.BranchBuilder)
570
592
# Guard against regression into MemoryTransport leaking
571
593
# files to disk instead of keeping them in memory.
572
self.failIf(osutils.lexists('dir'))
594
self.assertFalse(osutils.lexists('dir'))
574
596
def test_make_branch_builder_with_format(self):
575
597
# Use a repo layout that doesn't conform to a 'named' layout, to ensure
581
603
the_branch = builder.get_branch()
582
604
# Guard against regression into MemoryTransport leaking
583
605
# files to disk instead of keeping them in memory.
584
self.failIf(osutils.lexists('dir'))
606
self.assertFalse(osutils.lexists('dir'))
585
607
self.assertEqual(format.repository_format.__class__,
586
608
the_branch.repository._format.__class__)
587
609
self.assertEqual(repo_format.get_format_string(),
593
615
the_branch = builder.get_branch()
594
616
# Guard against regression into MemoryTransport leaking
595
617
# files to disk instead of keeping them in memory.
596
self.failIf(osutils.lexists('dir'))
618
self.assertFalse(osutils.lexists('dir'))
597
619
dir_format = bzrdir.format_registry.make_bzrdir('knit')
598
620
self.assertEqual(dir_format.repository_format.__class__,
599
621
the_branch.repository._format.__class__)
632
654
url2 = self.get_readonly_url('foo/bar')
633
655
t = transport.get_transport(url)
634
656
t2 = transport.get_transport(url2)
635
self.failUnless(isinstance(t, ReadonlyTransportDecorator))
636
self.failUnless(isinstance(t2, ReadonlyTransportDecorator))
657
self.assertIsInstance(t, ReadonlyTransportDecorator)
658
self.assertIsInstance(t2, ReadonlyTransportDecorator)
637
659
self.assertEqual(t2.base[:-1], t.abspath('foo/bar'))
639
661
def test_get_readonly_url_http(self):
647
669
# the transport returned may be any HttpTransportBase subclass
648
670
t = transport.get_transport(url)
649
671
t2 = transport.get_transport(url2)
650
self.failUnless(isinstance(t, HttpTransportBase))
651
self.failUnless(isinstance(t2, HttpTransportBase))
672
self.assertIsInstance(t, HttpTransportBase)
673
self.assertIsInstance(t2, HttpTransportBase)
652
674
self.assertEqual(t2.base[:-1], t.abspath('foo/bar'))
654
676
def test_is_directory(self):
662
684
def test_make_branch_builder(self):
663
685
builder = self.make_branch_builder('dir')
664
686
rev_id = builder.build_commit()
665
self.failUnlessExists('dir')
687
self.assertPathExists('dir')
666
688
a_dir = bzrdir.BzrDir.open('dir')
667
689
self.assertRaises(errors.NoWorkingTree, a_dir.open_workingtree)
668
690
a_branch = a_dir.open_branch()
684
706
self.assertIsInstance(result_bzrdir.transport,
685
707
memory.MemoryTransport)
686
708
# should not be on disk, should only be in memory
687
self.failIfExists('subdir')
709
self.assertPathDoesNotExist('subdir')
690
712
class TestChrootedTest(tests.ChrootedTestCase):
749
771
self.check_timing(ShortDelayTestCase('test_short_delay'),
752
def _patch_get_bzr_source_tree(self):
753
# Reading from the actual source tree breaks isolation, but we don't
754
# want to assume that thats *all* that would happen.
755
self.overrideAttr(bzrlib.version, '_get_bzr_source_tree', lambda: None)
757
def test_assigned_benchmark_file_stores_date(self):
758
self._patch_get_bzr_source_tree()
760
result = bzrlib.tests.TextTestResult(self._log_file,
765
output_string = output.getvalue()
766
# if you are wondering about the regexp please read the comment in
767
# test_bench_history (bzrlib.tests.test_selftest.TestRunner)
768
# XXX: what comment? -- Andrew Bennetts
769
self.assertContainsRe(output_string, "--date [0-9.]+")
771
def test_benchhistory_records_test_times(self):
772
self._patch_get_bzr_source_tree()
773
result_stream = StringIO()
774
result = bzrlib.tests.TextTestResult(
778
bench_history=result_stream
781
# we want profile a call and check that its test duration is recorded
782
# make a new test instance that when run will generate a benchmark
783
example_test_case = TestTestResult("_time_hello_world_encoding")
784
# execute the test, which should succeed and record times
785
example_test_case.run(result)
786
lines = result_stream.getvalue().splitlines()
787
self.assertEqual(2, len(lines))
788
self.assertContainsRe(lines[1],
789
" *[0-9]+ms bzrlib.tests.test_selftest.TestTestResult"
790
"._time_hello_world_encoding")
792
774
def _time_hello_world_encoding(self):
793
775
"""Profile two sleep calls
1216
def _patch_get_bzr_source_tree(self):
1217
# Reading from the actual source tree breaks isolation, but we don't
1218
# want to assume that thats *all* that would happen.
1219
self._get_source_tree_calls = []
1221
self._get_source_tree_calls.append("called")
1223
self.overrideAttr(bzrlib.version, '_get_bzr_source_tree', new_get)
1225
def test_bench_history(self):
1226
# tests that the running the benchmark passes bench_history into
1227
# the test result object. We can tell that happens if
1228
# _get_bzr_source_tree is called.
1229
self._patch_get_bzr_source_tree()
1230
test = TestRunner('dummy_test')
1232
runner = tests.TextTestRunner(stream=self._log_file,
1233
bench_history=output)
1234
result = self.run_test_runner(runner, test)
1235
output_string = output.getvalue()
1236
self.assertContainsRe(output_string, "--date [0-9.]+")
1237
self.assertLength(1, self._get_source_tree_calls)
1239
1198
def test_verbose_test_count(self):
1240
1199
"""A verbose test run reports the right test count at the start"""
1241
1200
suite = TestUtil.TestSuite([
1486
1445
# Note this test won't fail with hooks that the core library doesn't
1487
1446
# use - but it trigger with a plugin that adds hooks, so its still a
1488
1447
# useful warning in that case.
1489
self.assertEqual(bzrlib.branch.BranchHooks(),
1490
bzrlib.branch.Branch.hooks)
1491
self.assertEqual(bzrlib.smart.server.SmartServerHooks(),
1448
self.assertEqual(bzrlib.branch.BranchHooks(), bzrlib.branch.Branch.hooks)
1450
bzrlib.smart.server.SmartServerHooks(),
1492
1451
bzrlib.smart.server.SmartTCPServer.hooks)
1493
self.assertEqual(bzrlib.commands.CommandHooks(),
1494
bzrlib.commands.Command.hooks)
1453
bzrlib.commands.CommandHooks(), bzrlib.commands.Command.hooks)
1496
1455
def test__gather_lsprof_in_benchmarks(self):
1497
1456
"""When _gather_lsprof_in_benchmarks is on, accumulate profile data.
2361
2320
# stdout and stderr of the invoked run_bzr
2362
2321
current_factory = bzrlib.ui.ui_factory
2363
2322
self.run_bzr(['foo'])
2364
self.failIf(current_factory is self.factory)
2323
self.assertFalse(current_factory is self.factory)
2365
2324
self.assertNotEqual(sys.stdout, self.factory.stdout)
2366
2325
self.assertNotEqual(sys.stderr, self.factory.stderr)
2367
2326
self.assertEqual('foo\n', self.factory.stdout.getvalue())
2549
2508
self.assertEqual([], command[2:])
2551
2510
def test_set_env(self):
2552
self.failIf('EXISTANT_ENV_VAR' in os.environ)
2511
self.assertFalse('EXISTANT_ENV_VAR' in os.environ)
2553
2512
# set in the child
2554
2513
def check_environment():
2555
2514
self.assertEqual('set variable', os.environ['EXISTANT_ENV_VAR'])
2562
2521
def test_run_bzr_subprocess_env_del(self):
2563
2522
"""run_bzr_subprocess can remove environment variables too."""
2564
self.failIf('EXISTANT_ENV_VAR' in os.environ)
2523
self.assertFalse('EXISTANT_ENV_VAR' in os.environ)
2565
2524
def check_environment():
2566
2525
self.assertFalse('EXISTANT_ENV_VAR' in os.environ)
2567
2526
os.environ['EXISTANT_ENV_VAR'] = 'set variable'
2573
2532
del os.environ['EXISTANT_ENV_VAR']
2575
2534
def test_env_del_missing(self):
2576
self.failIf('NON_EXISTANT_ENV_VAR' in os.environ)
2535
self.assertFalse('NON_EXISTANT_ENV_VAR' in os.environ)
2577
2536
def check_environment():
2578
2537
self.assertFalse('NON_EXISTANT_ENV_VAR' in os.environ)
2579
2538
self.check_popen_state = check_environment
2854
2813
self.assertEqual(remaining_names, _test_ids(split_suite[1]))
2857
class TestCheckInventoryShape(tests.TestCaseWithTransport):
2816
class TestCheckTreeShape(tests.TestCaseWithTransport):
2859
def test_check_inventory_shape(self):
2818
def test_check_tree_shape(self):
2860
2819
files = ['a', 'b/', 'b/c']
2861
2820
tree = self.make_branch_and_tree('.')
2862
2821
self.build_tree(files)
2863
2822
tree.add(files)
2864
2823
tree.lock_read()
2866
self.check_inventory_shape(tree.inventory, files)
2825
self.check_tree_shape(tree, files)
3405
3364
class TestEnvironHandling(tests.TestCase):
3407
3366
def test_overrideEnv_None_called_twice_doesnt_leak(self):
3408
self.failIf('MYVAR' in os.environ)
3367
self.assertFalse('MYVAR' in os.environ)
3409
3368
self.overrideEnv('MYVAR', '42')
3410
3369
# We use an embedded test to make sure we fix the _captureVar bug
3411
3370
class Test(tests.TestCase):