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
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)
758
765
def test_assigned_benchmark_file_stores_date(self):
759
766
self._patch_get_bzr_source_tree()
1050
1057
'(?sm)^bzr selftest.*$'
1052
1059
'^======================================================================\n'
1053
'^FAIL: failing_test\n'
1060
'^FAIL: unittest.FunctionTestCase \\(failing_test\\)\n'
1054
1061
'^----------------------------------------------------------------------\n'
1055
1062
'Traceback \\(most recent call last\\):\n'
1056
1063
' .*' # File .*, line .*, in failing_test' - but maybe not from .pyc
1194
1201
# Reading from the actual source tree breaks isolation, but we don't
1195
1202
# want to assume that thats *all* that would happen.
1196
1203
self._get_source_tree_calls = []
1204
def _get_bzr_source_tree():
1198
1205
self._get_source_tree_calls.append("called")
1200
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)
1202
1213
def test_bench_history(self):
1203
1214
# tests that the running the benchmark passes bench_history into
1311
1322
self.assertEqual(flags, bzrlib.debug.debug_flags)
1313
1324
def change_selftest_debug_flags(self, new_flags):
1314
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
1316
1332
def test_allow_debug_flag(self):
1317
1333
"""The -Eallow_debug flag prevents bzrlib.debug.debug_flags from being
1469
1485
# Manually set one up (TestCase doesn't and shouldn't provide magic
1471
transport_server = memory.MemoryServer()
1472
transport_server.start_server()
1473
self.addCleanup(transport_server.stop_server)
1487
transport_server = MemoryServer()
1488
transport_server.setUp()
1489
self.addCleanup(transport_server.tearDown)
1474
1490
t = transport.get_transport(transport_server.get_url())
1475
1491
bzrdir.BzrDir.create(t.base)
1476
1492
self.assertRaises(errors.BzrError,
1558
1574
def test_start_server_registers_url(self):
1559
transport_server = memory.MemoryServer()
1575
transport_server = MemoryServer()
1560
1576
# A little strict, but unlikely to be changed soon.
1561
1577
self.assertEqual([], self._bzr_selftest_roots)
1562
1578
self.start_server(transport_server)
1618
1634
self.assertRaises(AssertionError,
1619
1635
self.assertListRaises, _TestException, success_generator)
1621
def test_overrideAttr_without_value(self):
1622
self.test_attr = 'original' # Define a test attribute
1623
obj = self # Make 'obj' visible to the embedded test
1624
class Test(tests.TestCase):
1627
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)
1633
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
def test_value(self):
1650
self.assertEqual('original', self.orig)
1651
self.assertEqual('modified', obj.test_attr)
1653
test = Test('test_value')
1654
test.run(unittest.TestResult())
1655
self.assertEqual('original', obj.test_attr)
1658
1638
# NB: Don't delete this; it's not actually from 0.11!
1659
1639
@deprecated_function(deprecated_in((0, 11, 0)))
1803
1783
# make_branch_and_tree has to use local branch and repositories
1804
1784
# when the vfs transport and local disk are colocated, even if
1805
1785
# a different transport is in use for url generation.
1806
self.transport_server = test_server.FakeVFATServer
1786
from bzrlib.transport.fakevfat import FakeVFATServer
1787
self.transport_server = FakeVFATServer
1807
1788
self.assertFalse(self.get_url('t1').startswith('file://'))
1808
1789
tree = self.make_branch_and_tree('t1')
1809
1790
base = tree.bzrdir.root_transport.base
1947
1928
def test_transport_sftp(self):
1948
1929
self.requireFeature(features.paramiko)
1949
from bzrlib.tests import stub_sftp
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()
2625
transport_server.start_server()
2626
self.addCleanup(transport_server.stop_server)
2602
transport_server = MemoryServer()
2603
transport_server.setUp()
2604
self.addCleanup(transport_server.tearDown)
2627
2605
url = transport_server.get_url()
2628
2606
self.permit_url(url)
2629
2607
out, err = self.run_bzr(["log", "%s/nonexistantpath" % url], retcode=3)
2773
2751
# Test that a plausible list of modules to doctest is returned
2774
2752
# by _test_suite_modules_to_doctest.
2775
2753
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
2754
self.assertSubset([
2781
2755
'bzrlib.timestamp',
2789
2763
# test doubles that supply a few sample tests to load, and check they
2792
def testmod_names():
2766
def _test_suite_testmod_names():
2793
2767
calls.append("testmod_names")
2795
2769
'bzrlib.tests.blackbox.test_branch',
2796
2770
'bzrlib.tests.per_transport',
2797
2771
'bzrlib.tests.test_selftest',
2799
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():
2801
2775
calls.append("modules_to_doctest")
2804
2776
return ['bzrlib.timestamp']
2805
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
2806
2784
expected_test_list = [
2807
2785
# testmod_names
2808
2786
'bzrlib.tests.blackbox.test_branch.TestBranch.test_branch',
2809
2787
('bzrlib.tests.per_transport.TransportTests'
2810
2788
'.test_abspath(LocalTransport,LocalURLServer)'),
2811
2789
'bzrlib.tests.test_selftest.TestTestSuite.test_test_suite',
2790
# modules_to_doctest
2791
'bzrlib.timestamp.format_highres_date',
2812
2792
# 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
2795
suite = tests.test_suite()
2821
2796
self.assertEqual(set(["testmod_names", "modules_to_doctest"]),