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 (
67
66
test_sftp_transport,
70
69
from bzrlib.trace import note
71
from bzrlib.transport import memory
70
from bzrlib.transport.memory import MemoryServer, MemoryTransport
72
71
from bzrlib.version import _get_bzr_source_tree
623
622
def test_get_readonly_url_none(self):
624
623
from bzrlib.transport import get_transport
624
from bzrlib.transport.memory import MemoryServer
625
625
from bzrlib.transport.readonly import ReadonlyTransportDecorator
626
self.vfs_transport_factory = memory.MemoryServer
626
self.vfs_transport_factory = MemoryServer
627
627
self.transport_readonly_server = None
628
628
# calling get_readonly_transport() constructs a decorator on the url
638
638
def test_get_readonly_url_http(self):
639
639
from bzrlib.tests.http_server import HttpServer
640
640
from bzrlib.transport import get_transport
641
from bzrlib.transport.local import LocalURLServer
641
642
from bzrlib.transport.http import HttpTransportBase
642
self.transport_server = test_server.LocalURLServer
643
self.transport_server = LocalURLServer
643
644
self.transport_readonly_server = HttpServer
644
645
# calling get_readonly_transport() gives us a HTTP server instance.
645
646
url = self.get_readonly_url()
678
679
super(TestTestCaseTransports, self).setUp()
679
self.vfs_transport_factory = memory.MemoryServer
680
self.vfs_transport_factory = MemoryServer
681
682
def test_make_bzrdir_preserves_transport(self):
682
683
t = self.get_transport()
683
684
result_bzrdir = self.make_bzrdir('subdir')
684
685
self.assertIsInstance(result_bzrdir.transport,
685
memory.MemoryTransport)
686
687
# should not be on disk, should only be in memory
687
688
self.failIfExists('subdir')
753
754
def _patch_get_bzr_source_tree(self):
754
755
# Reading from the actual source tree breaks isolation, but we don't
755
756
# want to assume that thats *all* that would happen.
756
self.overrideAttr(bzrlib.version, '_get_bzr_source_tree', lambda: None)
757
def _get_bzr_source_tree():
759
self.addAttrCleanup(bzrlib.version, '_get_bzr_source_tree')
760
bzrlib.version._get_bzr_source_tree = _get_bzr_source_tree
758
762
def test_assigned_benchmark_file_stores_date(self):
759
763
self._patch_get_bzr_source_tree()
1194
1198
# Reading from the actual source tree breaks isolation, but we don't
1195
1199
# want to assume that thats *all* that would happen.
1196
1200
self._get_source_tree_calls = []
1201
def _get_bzr_source_tree():
1198
1202
self._get_source_tree_calls.append("called")
1200
self.overrideAttr(bzrlib.version, '_get_bzr_source_tree', new_get)
1204
self.addAttrCleanup(bzrlib.version, '_get_bzr_source_tree')
1205
bzrlib.version._get_bzr_source_tree = _get_bzr_source_tree
1202
1207
def test_bench_history(self):
1203
1208
# tests that the running the benchmark passes bench_history into
1311
1316
self.assertEqual(flags, bzrlib.debug.debug_flags)
1313
1318
def change_selftest_debug_flags(self, new_flags):
1314
self.overrideAttr(tests, 'selftest_debug_flags', set(new_flags))
1319
self.addAttrCleanup(tests, 'selftest_debug_flags')
1320
tests.selftest_debug_flags = set(new_flags)
1316
1322
def test_allow_debug_flag(self):
1317
1323
"""The -Eallow_debug flag prevents bzrlib.debug.debug_flags from being
1469
1475
# Manually set one up (TestCase doesn't and shouldn't provide magic
1471
transport_server = memory.MemoryServer()
1477
transport_server = MemoryServer()
1472
1478
transport_server.start_server()
1473
1479
self.addCleanup(transport_server.stop_server)
1474
1480
t = transport.get_transport(transport_server.get_url())
1558
1564
def test_start_server_registers_url(self):
1559
transport_server = memory.MemoryServer()
1565
transport_server = MemoryServer()
1560
1566
# A little strict, but unlikely to be changed soon.
1561
1567
self.assertEqual([], self._bzr_selftest_roots)
1562
1568
self.start_server(transport_server)
1618
1624
self.assertRaises(AssertionError,
1619
1625
self.assertListRaises, _TestException, success_generator)
1621
def test_overrideAttr_without_value(self):
1627
def test_addAttrCleanup(self):
1622
1628
self.test_attr = 'original' # Define a test attribute
1623
1629
obj = self # Make 'obj' visible to the embedded test
1624
1630
class Test(tests.TestCase):
1626
1632
def setUp(self):
1627
1633
tests.TestCase.setUp(self)
1628
self.orig = self.overrideAttr(obj, 'test_attr')
1630
def test_value(self):
1631
self.assertEqual('original', self.orig)
1632
self.assertEqual('original', obj.test_attr)
1634
self.orig = self.addAttrCleanup(obj, 'test_attr')
1633
1635
obj.test_attr = 'modified'
1634
self.assertEqual('modified', obj.test_attr)
1636
test = Test('test_value')
1637
test.run(unittest.TestResult())
1638
self.assertEqual('original', obj.test_attr)
1640
def test_overrideAttr_with_value(self):
1641
self.test_attr = 'original' # Define a test attribute
1642
obj = self # Make 'obj' visible to the embedded test
1643
class Test(tests.TestCase):
1646
tests.TestCase.setUp(self)
1647
self.orig = self.overrideAttr(obj, 'test_attr', new='modified')
1649
1637
def test_value(self):
1650
1638
self.assertEqual('original', self.orig)
1803
1791
# make_branch_and_tree has to use local branch and repositories
1804
1792
# when the vfs transport and local disk are colocated, even if
1805
1793
# a different transport is in use for url generation.
1806
self.transport_server = test_server.FakeVFATServer
1794
from bzrlib.transport.fakevfat import FakeVFATServer
1795
self.transport_server = FakeVFATServer
1807
1796
self.assertFalse(self.get_url('t1').startswith('file://'))
1808
1797
tree = self.make_branch_and_tree('t1')
1809
1798
base = tree.bzrdir.root_transport.base
1947
1936
def test_transport_sftp(self):
1948
1937
self.requireFeature(features.paramiko)
1949
from bzrlib.tests import stub_sftp
1950
self.check_transport_set(stub_sftp.SFTPAbsoluteServer)
1938
self.check_transport_set(bzrlib.transport.sftp.SFTPAbsoluteServer)
1952
1940
def test_transport_memory(self):
1953
self.check_transport_set(memory.MemoryServer)
1941
self.check_transport_set(bzrlib.transport.memory.MemoryServer)
1956
1944
class TestSelftestWithIdList(tests.TestCaseInTempDir, SelfTestHelper):
2401
2389
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'
2390
'bzrlib.tests', 'UnicodeFilename',
2391
'bzrlib.tests.test_selftest.simple_thunk_feature',
2392
deprecated_in((2,1,0)))
2408
2394
class Test_CompatibilityFeature(tests.TestCase):
2414
2400
simple_thunk_feature.available)
2415
2401
self.assertEqual(tests.UnicodeFilename.available(), res)
2418
2404
class TestModuleAvailableFeature(tests.TestCase):
2420
2406
def test_available_module(self):
2621
2607
# Running bzr in blackbox mode, normal/expected/user errors should be
2622
2608
# caught in the regular way and turned into an error message plus exit
2624
transport_server = memory.MemoryServer()
2610
transport_server = MemoryServer()
2625
2611
transport_server.start_server()
2626
2612
self.addCleanup(transport_server.stop_server)
2627
2613
url = transport_server.get_url()
2773
2759
# Test that a plausible list of modules to doctest is returned
2774
2760
# by _test_suite_modules_to_doctest.
2775
2761
test_list = tests._test_suite_modules_to_doctest()
2777
# When docstrings are stripped, there are no modules to doctest
2778
self.assertEqual([], test_list)
2780
2762
self.assertSubset([
2781
2763
'bzrlib.timestamp',
2789
2771
# test doubles that supply a few sample tests to load, and check they
2792
def testmod_names():
2774
def _test_suite_testmod_names():
2793
2775
calls.append("testmod_names")
2795
2777
'bzrlib.tests.blackbox.test_branch',
2796
2778
'bzrlib.tests.per_transport',
2797
2779
'bzrlib.tests.test_selftest',
2799
self.overrideAttr(tests, '_test_suite_testmod_names', testmod_names)
2781
self.addAttrCleanup(tests, '_test_suite_testmod_names')
2782
self.addAttrCleanup(tests, '_test_suite_modules_to_doctest')
2783
def _test_suite_modules_to_doctest():
2801
2784
calls.append("modules_to_doctest")
2804
2785
return ['bzrlib.timestamp']
2805
self.overrideAttr(tests, '_test_suite_modules_to_doctest', doctests)
2786
tests._test_suite_testmod_names = _test_suite_testmod_names
2787
tests._test_suite_modules_to_doctest = _test_suite_modules_to_doctest
2806
2788
expected_test_list = [
2807
2789
# testmod_names
2808
2790
'bzrlib.tests.blackbox.test_branch.TestBranch.test_branch',
2809
2791
('bzrlib.tests.per_transport.TransportTests'
2810
2792
'.test_abspath(LocalTransport,LocalURLServer)'),
2811
2793
'bzrlib.tests.test_selftest.TestTestSuite.test_test_suite',
2794
# modules_to_doctest
2795
'bzrlib.timestamp.format_highres_date',
2812
2796
# plugins can't be tested that way since selftest may be run with
2815
if __doc__ is not None:
2816
expected_test_list.extend([
2817
# modules_to_doctest
2818
'bzrlib.timestamp.format_highres_date',
2820
2799
suite = tests.test_suite()
2821
2800
self.assertEqual(set(["testmod_names", "modules_to_doctest"]),