~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_selftest.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-01-14 00:01:32 UTC
  • mfrom: (4957.1.1 jam-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20100114000132-3p3rabnonjw3gzqb
(jam) Merge bzr.stable, bringing in bug fixes #175839, #504390

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
62
62
    )
63
63
from bzrlib.tests import (
64
64
    features,
65
 
    stub_sftp,
66
65
    test_lsprof,
67
 
    test_server,
68
66
    test_sftp_transport,
69
67
    TestUtil,
70
68
    )
71
69
from bzrlib.trace import note
72
 
from bzrlib.transport import memory
 
70
from bzrlib.transport.memory import MemoryServer, MemoryTransport
73
71
from bzrlib.version import _get_bzr_source_tree
74
72
 
75
73
 
623
621
 
624
622
    def test_get_readonly_url_none(self):
625
623
        from bzrlib.transport import get_transport
 
624
        from bzrlib.transport.memory import MemoryServer
626
625
        from bzrlib.transport.readonly import ReadonlyTransportDecorator
627
 
        self.vfs_transport_factory = memory.MemoryServer
 
626
        self.vfs_transport_factory = MemoryServer
628
627
        self.transport_readonly_server = None
629
628
        # calling get_readonly_transport() constructs a decorator on the url
630
629
        # for the server
639
638
    def test_get_readonly_url_http(self):
640
639
        from bzrlib.tests.http_server import HttpServer
641
640
        from bzrlib.transport import get_transport
 
641
        from bzrlib.transport.local import LocalURLServer
642
642
        from bzrlib.transport.http import HttpTransportBase
643
 
        self.transport_server = test_server.LocalURLServer
 
643
        self.transport_server = LocalURLServer
644
644
        self.transport_readonly_server = HttpServer
645
645
        # calling get_readonly_transport() gives us a HTTP server instance.
646
646
        url = self.get_readonly_url()
677
677
 
678
678
    def setUp(self):
679
679
        super(TestTestCaseTransports, self).setUp()
680
 
        self.vfs_transport_factory = memory.MemoryServer
 
680
        self.vfs_transport_factory = MemoryServer
681
681
 
682
682
    def test_make_bzrdir_preserves_transport(self):
683
683
        t = self.get_transport()
684
684
        result_bzrdir = self.make_bzrdir('subdir')
685
685
        self.assertIsInstance(result_bzrdir.transport,
686
 
                              memory.MemoryTransport)
 
686
                              MemoryTransport)
687
687
        # should not be on disk, should only be in memory
688
688
        self.failIfExists('subdir')
689
689
 
754
754
    def _patch_get_bzr_source_tree(self):
755
755
        # Reading from the actual source tree breaks isolation, but we don't
756
756
        # want to assume that thats *all* that would happen.
757
 
        self.overrideAttr(bzrlib.version, '_get_bzr_source_tree', lambda: None)
 
757
        def _get_bzr_source_tree():
 
758
            return None
 
759
        orig_get_bzr_source_tree = bzrlib.version._get_bzr_source_tree
 
760
        bzrlib.version._get_bzr_source_tree = _get_bzr_source_tree
 
761
        def restore():
 
762
            bzrlib.version._get_bzr_source_tree = orig_get_bzr_source_tree
 
763
        self.addCleanup(restore)
758
764
 
759
765
    def test_assigned_benchmark_file_stores_date(self):
760
766
        self._patch_get_bzr_source_tree()
1051
1057
            '(?sm)^bzr selftest.*$'
1052
1058
            '.*'
1053
1059
            '^======================================================================\n'
1054
 
            '^FAIL: failing_test\n'
 
1060
            '^FAIL: unittest.FunctionTestCase \\(failing_test\\)\n'
1055
1061
            '^----------------------------------------------------------------------\n'
1056
1062
            'Traceback \\(most recent call last\\):\n'
1057
1063
            '  .*' # File .*, line .*, in failing_test' - but maybe not from .pyc
1195
1201
        # Reading from the actual source tree breaks isolation, but we don't
1196
1202
        # want to assume that thats *all* that would happen.
1197
1203
        self._get_source_tree_calls = []
1198
 
        def new_get():
 
1204
        def _get_bzr_source_tree():
1199
1205
            self._get_source_tree_calls.append("called")
1200
1206
            return None
1201
 
        self.overrideAttr(bzrlib.version, '_get_bzr_source_tree',  new_get)
 
1207
        orig_get_bzr_source_tree = bzrlib.version._get_bzr_source_tree
 
1208
        bzrlib.version._get_bzr_source_tree = _get_bzr_source_tree
 
1209
        def restore():
 
1210
            bzrlib.version._get_bzr_source_tree = orig_get_bzr_source_tree
 
1211
        self.addCleanup(restore)
1202
1212
 
1203
1213
    def test_bench_history(self):
1204
1214
        # tests that the running the benchmark passes bench_history into
1312
1322
        self.assertEqual(flags, bzrlib.debug.debug_flags)
1313
1323
 
1314
1324
    def change_selftest_debug_flags(self, new_flags):
1315
 
        self.overrideAttr(tests, 'selftest_debug_flags', set(new_flags))
 
1325
        orig_selftest_flags = tests.selftest_debug_flags
 
1326
        self.addCleanup(self._restore_selftest_debug_flags, orig_selftest_flags)
 
1327
        tests.selftest_debug_flags = set(new_flags)
 
1328
 
 
1329
    def _restore_selftest_debug_flags(self, flags):
 
1330
        tests.selftest_debug_flags = flags
1316
1331
 
1317
1332
    def test_allow_debug_flag(self):
1318
1333
        """The -Eallow_debug flag prevents bzrlib.debug.debug_flags from being
1469
1484
        # permitted.
1470
1485
        # Manually set one up (TestCase doesn't and shouldn't provide magic
1471
1486
        # machinery)
1472
 
        transport_server = memory.MemoryServer()
 
1487
        transport_server = MemoryServer()
1473
1488
        transport_server.start_server()
1474
1489
        self.addCleanup(transport_server.stop_server)
1475
1490
        t = transport.get_transport(transport_server.get_url())
1557
1572
            result.calls)
1558
1573
 
1559
1574
    def test_start_server_registers_url(self):
1560
 
        transport_server = memory.MemoryServer()
 
1575
        transport_server = MemoryServer()
1561
1576
        # A little strict, but unlikely to be changed soon.
1562
1577
        self.assertEqual([], self._bzr_selftest_roots)
1563
1578
        self.start_server(transport_server)
1619
1634
        self.assertRaises(AssertionError,
1620
1635
            self.assertListRaises, _TestException, success_generator)
1621
1636
 
1622
 
    def test_overrideAttr_without_value(self):
1623
 
        self.test_attr = 'original' # Define a test attribute
1624
 
        obj = self # Make 'obj' visible to the embedded test
1625
 
        class Test(tests.TestCase):
1626
 
 
1627
 
            def setUp(self):
1628
 
                tests.TestCase.setUp(self)
1629
 
                self.orig = self.overrideAttr(obj, 'test_attr')
1630
 
 
1631
 
            def test_value(self):
1632
 
                self.assertEqual('original', self.orig)
1633
 
                self.assertEqual('original', obj.test_attr)
1634
 
                obj.test_attr = 'modified'
1635
 
                self.assertEqual('modified', obj.test_attr)
1636
 
 
1637
 
        test = Test('test_value')
1638
 
        test.run(unittest.TestResult())
1639
 
        self.assertEqual('original', obj.test_attr)
1640
 
 
1641
 
    def test_overrideAttr_with_value(self):
1642
 
        self.test_attr = 'original' # Define a test attribute
1643
 
        obj = self # Make 'obj' visible to the embedded test
1644
 
        class Test(tests.TestCase):
1645
 
 
1646
 
            def setUp(self):
1647
 
                tests.TestCase.setUp(self)
1648
 
                self.orig = self.overrideAttr(obj, 'test_attr', new='modified')
1649
 
 
1650
 
            def test_value(self):
1651
 
                self.assertEqual('original', self.orig)
1652
 
                self.assertEqual('modified', obj.test_attr)
1653
 
 
1654
 
        test = Test('test_value')
1655
 
        test.run(unittest.TestResult())
1656
 
        self.assertEqual('original', obj.test_attr)
1657
 
 
1658
1637
 
1659
1638
# NB: Don't delete this; it's not actually from 0.11!
1660
1639
@deprecated_function(deprecated_in((0, 11, 0)))
1804
1783
        # make_branch_and_tree has to use local branch and repositories
1805
1784
        # when the vfs transport and local disk are colocated, even if
1806
1785
        # a different transport is in use for url generation.
1807
 
        self.transport_server = test_server.FakeVFATServer
 
1786
        from bzrlib.transport.fakevfat import FakeVFATServer
 
1787
        self.transport_server = FakeVFATServer
1808
1788
        self.assertFalse(self.get_url('t1').startswith('file://'))
1809
1789
        tree = self.make_branch_and_tree('t1')
1810
1790
        base = tree.bzrdir.root_transport.base
1947
1927
 
1948
1928
    def test_transport_sftp(self):
1949
1929
        self.requireFeature(features.paramiko)
1950
 
        self.check_transport_set(stub_sftp.SFTPAbsoluteServer)
 
1930
        self.check_transport_set(bzrlib.transport.sftp.SFTPAbsoluteServer)
1951
1931
 
1952
1932
    def test_transport_memory(self):
1953
 
        self.check_transport_set(memory.MemoryServer)
 
1933
        self.check_transport_set(bzrlib.transport.memory.MemoryServer)
1954
1934
 
1955
1935
 
1956
1936
class TestSelftestWithIdList(tests.TestCaseInTempDir, SelfTestHelper):
2399
2379
 
2400
2380
 
2401
2381
simple_thunk_feature = tests._CompatabilityThunkFeature(
2402
 
    deprecated_in((2, 1, 0)),
2403
 
    'bzrlib.tests.test_selftest',
2404
 
    'simple_thunk_feature','UnicodeFilename',
2405
 
    replacement_module='bzrlib.tests'
2406
 
    )
 
2382
    'bzrlib.tests', 'UnicodeFilename',
 
2383
    'bzrlib.tests.test_selftest.simple_thunk_feature',
 
2384
    deprecated_in((2,1,0)))
2407
2385
 
2408
2386
class Test_CompatibilityFeature(tests.TestCase):
2409
2387
 
2414
2392
            simple_thunk_feature.available)
2415
2393
        self.assertEqual(tests.UnicodeFilename.available(), res)
2416
2394
 
2417
 
 
 
2395
        
2418
2396
class TestModuleAvailableFeature(tests.TestCase):
2419
2397
 
2420
2398
    def test_available_module(self):
2621
2599
        # Running bzr in blackbox mode, normal/expected/user errors should be
2622
2600
        # caught in the regular way and turned into an error message plus exit
2623
2601
        # code.
2624
 
        transport_server = memory.MemoryServer()
 
2602
        transport_server = MemoryServer()
2625
2603
        transport_server.start_server()
2626
2604
        self.addCleanup(transport_server.stop_server)
2627
2605
        url = transport_server.get_url()
2785
2763
        # test doubles that supply a few sample tests to load, and check they
2786
2764
        # are loaded.
2787
2765
        calls = []
2788
 
        def testmod_names():
 
2766
        def _test_suite_testmod_names():
2789
2767
            calls.append("testmod_names")
2790
2768
            return [
2791
2769
                'bzrlib.tests.blackbox.test_branch',
2792
2770
                'bzrlib.tests.per_transport',
2793
2771
                'bzrlib.tests.test_selftest',
2794
2772
                ]
2795
 
        self.overrideAttr(tests, '_test_suite_testmod_names', testmod_names)
2796
 
        def doctests():
 
2773
        original_testmod_names = tests._test_suite_testmod_names
 
2774
        def _test_suite_modules_to_doctest():
2797
2775
            calls.append("modules_to_doctest")
2798
2776
            return ['bzrlib.timestamp']
2799
 
        self.overrideAttr(tests, '_test_suite_modules_to_doctest', doctests)
 
2777
        orig_modules_to_doctest = tests._test_suite_modules_to_doctest
 
2778
        def restore_names():
 
2779
            tests._test_suite_testmod_names = original_testmod_names
 
2780
            tests._test_suite_modules_to_doctest = orig_modules_to_doctest
 
2781
        self.addCleanup(restore_names)
 
2782
        tests._test_suite_testmod_names = _test_suite_testmod_names
 
2783
        tests._test_suite_modules_to_doctest = _test_suite_modules_to_doctest
2800
2784
        expected_test_list = [
2801
2785
            # testmod_names
2802
2786
            'bzrlib.tests.blackbox.test_branch.TestBranch.test_branch',