/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_selftest.py

  • Committer: Neil Martinsen-Burrell
  • Date: 2011-05-19 01:42:12 UTC
  • mfrom: (5876 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5899.
  • Revision ID: nmb@wartburg.edu-20110519014212-d48xtqqeauq164al
merge bzr.dev, fix release notes conflict

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
    tests,
53
53
    transport,
54
54
    workingtree,
 
55
    workingtree_3,
 
56
    workingtree_4,
55
57
    )
56
58
from bzrlib.repofmt import (
57
59
    groupcompress_repo,
106
108
 
107
109
        filename = u'hell\u00d8'
108
110
        self.build_tree_contents([(filename, 'contents of hello')])
109
 
        self.failUnlessExists(filename)
 
111
        self.assertPathExists(filename)
110
112
 
111
113
 
112
114
class TestClassesAvailable(tests.TestCase):
338
340
        from bzrlib.tests.per_workingtree import make_scenarios
339
341
        server1 = "a"
340
342
        server2 = "b"
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',
375
377
            )
376
378
        server1 = "a"
377
379
        server2 = "b"
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 (
454
456
            make_scenarios,
455
457
            )
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")
459
462
        server1 = "a"
510
513
        self.assertRaises(AssertionError, self.assertEqualStat,
511
514
            os.lstat("foo"), os.lstat("longname"))
512
515
 
 
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')
 
528
 
 
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')
 
534
 
513
535
 
514
536
class TestTestCaseWithMemoryTransport(tests.TestCaseWithMemoryTransport):
515
537
 
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)
554
576
 
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'))
573
595
 
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'))
638
660
 
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'))
653
675
 
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')
688
710
 
689
711
 
690
712
class TestChrootedTest(tests.ChrootedTestCase):
749
771
        self.check_timing(ShortDelayTestCase('test_short_delay'),
750
772
                          r"^ +[0-9]+ms$")
751
773
 
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)
756
 
 
757
 
    def test_assigned_benchmark_file_stores_date(self):
758
 
        self._patch_get_bzr_source_tree()
759
 
        output = StringIO()
760
 
        result = bzrlib.tests.TextTestResult(self._log_file,
761
 
                                        descriptions=0,
762
 
                                        verbosity=1,
763
 
                                        bench_history=output
764
 
                                        )
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.]+")
770
 
 
771
 
    def test_benchhistory_records_test_times(self):
772
 
        self._patch_get_bzr_source_tree()
773
 
        result_stream = StringIO()
774
 
        result = bzrlib.tests.TextTestResult(
775
 
            self._log_file,
776
 
            descriptions=0,
777
 
            verbosity=1,
778
 
            bench_history=result_stream
779
 
            )
780
 
 
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")
791
 
 
792
774
    def _time_hello_world_encoding(self):
793
775
        """Profile two sleep calls
794
776
 
1213
1195
            ],
1214
1196
            lines[-3:])
1215
1197
 
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 = []
1220
 
        def new_get():
1221
 
            self._get_source_tree_calls.append("called")
1222
 
            return None
1223
 
        self.overrideAttr(bzrlib.version, '_get_bzr_source_tree',  new_get)
1224
 
 
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')
1231
 
        output = StringIO()
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)
1238
 
 
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)
 
1449
        self.assertEqual(
 
1450
            bzrlib.smart.server.SmartServerHooks(),
1492
1451
            bzrlib.smart.server.SmartTCPServer.hooks)
1493
 
        self.assertEqual(bzrlib.commands.CommandHooks(),
1494
 
            bzrlib.commands.Command.hooks)
 
1452
        self.assertEqual(
 
1453
            bzrlib.commands.CommandHooks(), bzrlib.commands.Command.hooks)
1495
1454
 
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:])
2550
2509
 
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'])
2561
2520
 
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']
2574
2533
 
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]))
2855
2814
 
2856
2815
 
2857
 
class TestCheckInventoryShape(tests.TestCaseWithTransport):
 
2816
class TestCheckTreeShape(tests.TestCaseWithTransport):
2858
2817
 
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()
2865
2824
        try:
2866
 
            self.check_inventory_shape(tree.inventory, files)
 
2825
            self.check_tree_shape(tree, files)
2867
2826
        finally:
2868
2827
            tree.unlock()
2869
2828
 
3405
3364
class TestEnvironHandling(tests.TestCase):
3406
3365
 
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):