~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

  • Committer: Robert Collins
  • Date: 2009-12-22 23:09:50 UTC
  • mfrom: (4918 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4920.
  • Revision ID: robertc@robertcollins.net-20091222230950-39gjmost0lmu9ufg
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
91
91
from bzrlib.symbol_versioning import (
92
92
    DEPRECATED_PARAMETER,
93
93
    deprecated_function,
 
94
    deprecated_in,
94
95
    deprecated_method,
95
96
    deprecated_passed,
96
97
    )
3561
3562
        'bzrlib.tests.per_inventory',
3562
3563
        'bzrlib.tests.per_interbranch',
3563
3564
        'bzrlib.tests.per_lock',
 
3565
        'bzrlib.tests.per_merger',
3564
3566
        'bzrlib.tests.per_transport',
3565
3567
        'bzrlib.tests.per_tree',
3566
3568
        'bzrlib.tests.per_pack_repository',
4062
4064
UnicodeFilenameFeature = _UnicodeFilenameFeature()
4063
4065
 
4064
4066
 
 
4067
class _CompatabilityThunkFeature(Feature):
 
4068
    """This feature is just a thunk to another feature.
 
4069
 
 
4070
    It issues a deprecation warning if it is accessed, to let you know that you
 
4071
    should really use a different feature.
 
4072
    """
 
4073
 
 
4074
    def __init__(self, module, name, this_name, dep_version):
 
4075
        super(_CompatabilityThunkFeature, self).__init__()
 
4076
        self._module = module
 
4077
        self._name = name
 
4078
        self._this_name = this_name
 
4079
        self._dep_version = dep_version
 
4080
        self._feature = None
 
4081
 
 
4082
    def _ensure(self):
 
4083
        if self._feature is None:
 
4084
            msg = (self._dep_version % self._this_name) + (
 
4085
                   ' Use %s.%s instead.' % (self._module, self._name))
 
4086
            symbol_versioning.warn(msg, DeprecationWarning)
 
4087
            mod = __import__(self._module, {}, {}, [self._name])
 
4088
            self._feature = getattr(mod, self._name)
 
4089
 
 
4090
    def _probe(self):
 
4091
        self._ensure()
 
4092
        return self._feature._probe()
 
4093
 
 
4094
 
4065
4095
class ModuleAvailableFeature(Feature):
4066
4096
    """This is a feature than describes a module we want to be available.
4067
4097
 
4092
4122
        return self.module_name
4093
4123
 
4094
4124
 
 
4125
# This is kept here for compatibility, it is recommended to use
 
4126
# 'bzrlib.tests.feature.paramiko' instead
 
4127
ParamikoFeature = _CompatabilityThunkFeature('bzrlib.tests.features',
 
4128
    'paramiko', 'bzrlib.tests.ParamikoFeature', deprecated_in((2,1,0)))
 
4129
 
4095
4130
 
4096
4131
def probe_unicode_in_user_encoding():
4097
4132
    """Try to encode several unicode strings to use in unicode-aware tests.
4147
4182
HTTPSServerFeature = _HTTPSServerFeature()
4148
4183
 
4149
4184
 
4150
 
class _ParamikoFeature(Feature):
4151
 
    """Is paramiko available?"""
4152
 
 
4153
 
    def _probe(self):
4154
 
        try:
4155
 
            from bzrlib.transport.sftp import SFTPAbsoluteServer
4156
 
            return True
4157
 
        except errors.ParamikoNotPresent:
4158
 
            return False
4159
 
 
4160
 
    def feature_name(self):
4161
 
        return "Paramiko"
4162
 
 
4163
 
 
4164
 
ParamikoFeature = _ParamikoFeature()
4165
 
 
4166
 
 
4167
4185
class _UnicodeFilename(Feature):
4168
4186
    """Does the filesystem support Unicode filenames?"""
4169
4187
 
4274
4292
CaseInsensitiveFilesystemFeature = _CaseInsensitiveFilesystemFeature()
4275
4293
 
4276
4294
 
4277
 
class _SubUnitFeature(Feature):
4278
 
    """Check if subunit is available."""
4279
 
 
4280
 
    def _probe(self):
4281
 
        try:
4282
 
            import subunit
4283
 
            return True
4284
 
        except ImportError:
4285
 
            return False
4286
 
 
4287
 
    def feature_name(self):
4288
 
        return 'subunit'
4289
 
 
4290
 
SubUnitFeature = _SubUnitFeature()
 
4295
# Kept for compatibility, use bzrlib.tests.features.subunit instead
 
4296
SubUnitFeature = _CompatabilityThunkFeature('bzrlib.tests.features', 'subunit',
 
4297
    'bzrlib.tests.SubUnitFeature', deprecated_in((2,1,0)))
4291
4298
# Only define SubUnitBzrRunner if subunit is available.
4292
4299
try:
4293
4300
    from subunit import TestProtocolClient