1
# Copyright (C) 2005-2010 Canonical Ltd
1
# Copyright (C) 2005, 2006, 2007, 2008, 2009 Canonical Ltd
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
63
63
from bzrlib.tests import (
68
66
test_sftp_transport,
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
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
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()
679
679
super(TestTestCaseTransports, self).setUp()
680
self.vfs_transport_factory = memory.MemoryServer
680
self.vfs_transport_factory = MemoryServer
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)
687
687
# should not be on disk, should only be in memory
688
688
self.failIfExists('subdir')
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():
759
orig_get_bzr_source_tree = bzrlib.version._get_bzr_source_tree
760
bzrlib.version._get_bzr_source_tree = _get_bzr_source_tree
762
bzrlib.version._get_bzr_source_tree = orig_get_bzr_source_tree
763
self.addCleanup(restore)
759
765
def test_assigned_benchmark_file_stores_date(self):
760
766
self._patch_get_bzr_source_tree()
1051
1057
'(?sm)^bzr selftest.*$'
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 = []
1204
def _get_bzr_source_tree():
1199
1205
self._get_source_tree_calls.append("called")
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
1210
bzrlib.version._get_bzr_source_tree = orig_get_bzr_source_tree
1211
self.addCleanup(restore)
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)
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)
1329
def _restore_selftest_debug_flags(self, flags):
1330
tests.selftest_debug_flags = flags
1317
1332
def test_allow_debug_flag(self):
1318
1333
"""The -Eallow_debug flag prevents bzrlib.debug.debug_flags from being
1470
1485
# Manually set one up (TestCase doesn't and shouldn't provide magic
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())
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)
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):
1628
tests.TestCase.setUp(self)
1629
self.orig = self.overrideAttr(obj, 'test_attr')
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)
1637
test = Test('test_value')
1638
test.run(unittest.TestResult())
1639
self.assertEqual('original', obj.test_attr)
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):
1647
tests.TestCase.setUp(self)
1648
self.orig = self.overrideAttr(obj, 'test_attr', new='modified')
1650
def test_value(self):
1651
self.assertEqual('original', self.orig)
1652
self.assertEqual('modified', obj.test_attr)
1654
test = Test('test_value')
1655
test.run(unittest.TestResult())
1656
self.assertEqual('original', obj.test_attr)
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
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)
1952
1932
def test_transport_memory(self):
1953
self.check_transport_set(memory.MemoryServer)
1933
self.check_transport_set(bzrlib.transport.memory.MemoryServer)
1956
1936
class TestSelftestWithIdList(tests.TestCaseInTempDir, SelfTestHelper):
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'
2382
'bzrlib.tests', 'UnicodeFilename',
2383
'bzrlib.tests.test_selftest.simple_thunk_feature',
2384
deprecated_in((2,1,0)))
2408
2386
class Test_CompatibilityFeature(tests.TestCase):
2414
2392
simple_thunk_feature.available)
2415
2393
self.assertEqual(tests.UnicodeFilename.available(), res)
2418
2396
class TestModuleAvailableFeature(tests.TestCase):
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
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
2788
def testmod_names():
2766
def _test_suite_testmod_names():
2789
2767
calls.append("testmod_names")
2791
2769
'bzrlib.tests.blackbox.test_branch',
2792
2770
'bzrlib.tests.per_transport',
2793
2771
'bzrlib.tests.test_selftest',
2795
self.overrideAttr(tests, '_test_suite_testmod_names', testmod_names)
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',