~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

  • Committer: Martin Pool
  • Date: 2010-02-25 06:17:27 UTC
  • mfrom: (5055 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5057.
  • Revision ID: mbp@sourcefrog.net-20100225061727-4sd9lt0qmdc6087t
merge news

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2005-2010 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
101
101
    deprecated_passed,
102
102
    )
103
103
import bzrlib.trace
104
 
from bzrlib.transport import get_transport, pathfilter
 
104
from bzrlib.transport import (
 
105
    get_transport,
 
106
    memory,
 
107
    pathfilter,
 
108
    )
105
109
import bzrlib.transport
106
 
from bzrlib.transport.local import LocalURLServer
107
 
from bzrlib.transport.memory import MemoryServer
108
 
from bzrlib.transport.readonly import ReadonlyServer
109
110
from bzrlib.trace import mutter, note
110
 
from bzrlib.tests import TestUtil
 
111
from bzrlib.tests import (
 
112
    test_server,
 
113
    TestUtil,
 
114
    )
111
115
from bzrlib.tests.http_server import HttpServer
112
116
from bzrlib.tests.TestUtil import (
113
117
                          TestSuite,
124
128
# shown frame is the test code, not our assertXYZ.
125
129
__unittest = 1
126
130
 
127
 
default_transport = LocalURLServer
 
131
default_transport = test_server.LocalURLServer
128
132
 
129
133
 
130
134
_unitialized_attr = object()
485
489
        return self._shortened_test_description(test)
486
490
 
487
491
    def report_error(self, test, err):
488
 
        ui.ui_factory.note('ERROR: %s\n    %s\n' % (
 
492
        self.ui.note('ERROR: %s\n    %s\n' % (
489
493
            self._test_description(test),
490
494
            err[1],
491
495
            ))
492
496
 
493
497
    def report_failure(self, test, err):
494
 
        ui.ui_factory.note('FAIL: %s\n    %s\n' % (
 
498
        self.ui.note('FAIL: %s\n    %s\n' % (
495
499
            self._test_description(test),
496
500
            err[1],
497
501
            ))
702
706
    """
703
707
 
704
708
 
705
 
class CommandFailed(Exception):
706
 
    pass
707
 
 
708
 
 
709
709
class StringIOWrapper(object):
710
710
    """A wrapper around cStringIO which just adds an encoding attribute.
711
711
 
1044
1044
        if t.base.endswith('/work/'):
1045
1045
            # we have safety net/test root/work
1046
1046
            t = t.clone('../..')
1047
 
        elif isinstance(transport_server, server.SmartTCPServer_for_testing):
 
1047
        elif isinstance(transport_server,
 
1048
                        test_server.SmartTCPServer_for_testing):
1048
1049
            # The smart server adds a path similar to work, which is traversed
1049
1050
            # up from by the client. But the server is chrooted - the actual
1050
1051
            # backing transport is not escaped from, and VFS requests to the
1205
1206
            raise AssertionError('pattern "%s" found in "%s"'
1206
1207
                    % (needle_re, haystack))
1207
1208
 
 
1209
    def assertContainsString(self, haystack, needle):
 
1210
        if haystack.find(needle) == -1:
 
1211
            self.fail("string %r not found in '''%s'''" % (needle, haystack))
 
1212
 
1208
1213
    def assertSubset(self, sublist, superlist):
1209
1214
        """Assert that every entry in sublist is present in superlist."""
1210
1215
        missing = set(sublist) - set(superlist)
1546
1551
            # use an env var so it propagates to subprocesses.
1547
1552
            'APPORT_DISABLE': '1',
1548
1553
        }
1549
 
        self.__old_env = {}
 
1554
        self._old_env = {}
1550
1555
        self.addCleanup(self._restoreEnvironment)
1551
1556
        for name, value in new_env.iteritems():
1552
1557
            self._captureVar(name, value)
1553
1558
 
1554
1559
    def _captureVar(self, name, newvalue):
1555
1560
        """Set an environment variable, and reset it when finished."""
1556
 
        self.__old_env[name] = osutils.set_or_unset_env(name, newvalue)
 
1561
        self._old_env[name] = osutils.set_or_unset_env(name, newvalue)
1557
1562
 
1558
1563
    def _restoreEnvironment(self):
1559
 
        for name, value in self.__old_env.iteritems():
 
1564
        for name, value in self._old_env.iteritems():
1560
1565
            osutils.set_or_unset_env(name, value)
1561
1566
 
1562
1567
    def _restoreHooks(self):
2175
2180
        if self.__readonly_server is None:
2176
2181
            if self.transport_readonly_server is None:
2177
2182
                # readonly decorator requested
2178
 
                self.__readonly_server = ReadonlyServer()
 
2183
                self.__readonly_server = test_server.ReadonlyServer()
2179
2184
            else:
2180
2185
                # explicit readonly transport.
2181
2186
                self.__readonly_server = self.create_transport_readonly_server()
2204
2209
        is no means to override it.
2205
2210
        """
2206
2211
        if self.__vfs_server is None:
2207
 
            self.__vfs_server = MemoryServer()
 
2212
            self.__vfs_server = memory.MemoryServer()
2208
2213
            self.start_server(self.__vfs_server)
2209
2214
        return self.__vfs_server
2210
2215
 
2367
2372
        return made_control.create_repository(shared=shared)
2368
2373
 
2369
2374
    def make_smart_server(self, path):
2370
 
        smart_server = server.SmartTCPServer_for_testing()
 
2375
        smart_server = test_server.SmartTCPServer_for_testing()
2371
2376
        self.start_server(smart_server, self.get_server())
2372
2377
        remote_transport = get_transport(smart_server.get_url()).clone(path)
2373
2378
        return remote_transport
2400
2405
 
2401
2406
    def setup_smart_server_with_call_log(self):
2402
2407
        """Sets up a smart server as the transport server with a call log."""
2403
 
        self.transport_server = server.SmartTCPServer_for_testing
 
2408
        self.transport_server = test_server.SmartTCPServer_for_testing
2404
2409
        self.hpss_calls = []
2405
2410
        import traceback
2406
2411
        # Skip the current stack down to the caller of
2619
2624
            # We can only make working trees locally at the moment.  If the
2620
2625
            # transport can't support them, then we keep the non-disk-backed
2621
2626
            # branch and create a local checkout.
2622
 
            if self.vfs_transport_factory is LocalURLServer:
 
2627
            if self.vfs_transport_factory is test_server.LocalURLServer:
2623
2628
                # the branch is colocated on disk, we cannot create a checkout.
2624
2629
                # hopefully callers will expect this.
2625
2630
                local_controldir= bzrdir.BzrDir.open(self.get_vfs_only_url(relpath))
2685
2690
 
2686
2691
    def setUp(self):
2687
2692
        super(ChrootedTestCase, self).setUp()
2688
 
        if not self.vfs_transport_factory == MemoryServer:
 
2693
        if not self.vfs_transport_factory == memory.MemoryServer:
2689
2694
            self.transport_readonly_server = HttpServer
2690
2695
 
2691
2696
 
3623
3628
        'bzrlib.tests.test_chunk_writer',
3624
3629
        'bzrlib.tests.test_clean_tree',
3625
3630
        'bzrlib.tests.test_cleanup',
 
3631
        'bzrlib.tests.test_cmdline',
3626
3632
        'bzrlib.tests.test_commands',
3627
3633
        'bzrlib.tests.test_commit',
3628
3634
        'bzrlib.tests.test_commit_merge',
3662
3668
        'bzrlib.tests.test_identitymap',
3663
3669
        'bzrlib.tests.test_ignores',
3664
3670
        'bzrlib.tests.test_index',
 
3671
        'bzrlib.tests.test_import_tariff',
3665
3672
        'bzrlib.tests.test_info',
3666
3673
        'bzrlib.tests.test_inv',
3667
3674
        'bzrlib.tests.test_inventory_delta',
4366
4373
CaseInsensitiveFilesystemFeature = _CaseInsensitiveFilesystemFeature()
4367
4374
 
4368
4375
 
 
4376
class _CaseSensitiveFilesystemFeature(Feature):
 
4377
 
 
4378
    def _probe(self):
 
4379
        if CaseInsCasePresFilenameFeature.available():
 
4380
            return False
 
4381
        elif CaseInsensitiveFilesystemFeature.available():
 
4382
            return False
 
4383
        else:
 
4384
            return True
 
4385
 
 
4386
    def feature_name(self):
 
4387
        return 'case-sensitive filesystem'
 
4388
 
 
4389
# new coding style is for feature instances to be lowercase
 
4390
case_sensitive_filesystem_feature = _CaseSensitiveFilesystemFeature()
 
4391
 
 
4392
 
4369
4393
# Kept for compatibility, use bzrlib.tests.features.subunit instead
4370
4394
SubUnitFeature = _CompatabilityThunkFeature(
4371
4395
    deprecated_in((2,1,0)),