/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

MergeĀ upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
 
18
18
# TODO: Perhaps there should be an API to find out if bzr running under the
77
77
from bzrlib.merge import merge_inner
78
78
import bzrlib.merge3
79
79
import bzrlib.plugin
80
 
from bzrlib.smart import client, server
 
80
from bzrlib.smart import client, request, server
81
81
import bzrlib.store
82
82
from bzrlib import symbol_versioning
83
83
from bzrlib.symbol_versioning import (
764
764
    def __init__(self, methodName='testMethod'):
765
765
        super(TestCase, self).__init__(methodName)
766
766
        self._cleanups = []
 
767
        self._bzr_test_setUp_run = False
 
768
        self._bzr_test_tearDown_run = False
767
769
 
768
770
    def setUp(self):
769
771
        unittest.TestCase.setUp(self)
 
772
        self._bzr_test_setUp_run = True
770
773
        self._cleanEnvironment()
771
774
        self._silenceUI()
772
775
        self._startLogFile()
824
827
        for key, factory in hooks.known_hooks.items():
825
828
            parent, name = hooks.known_hooks_key_to_parent_and_attribute(key)
826
829
            setattr(parent, name, factory())
 
830
        # this hook should always be installed
 
831
        request._install_hook()
827
832
 
828
833
    def _silenceUI(self):
829
834
        """Turn off UI for duration of test"""
902
907
        self.assertEqual(expected.st_ino, actual.st_ino)
903
908
        self.assertEqual(expected.st_mode, actual.st_mode)
904
909
 
 
910
    def assertLength(self, length, obj_with_len):
 
911
        """Assert that obj_with_len is of length length."""
 
912
        if len(obj_with_len) != length:
 
913
            self.fail("Incorrect length: wanted %d, got %d for %r" % (
 
914
                length, len(obj_with_len), obj_with_len))
 
915
 
905
916
    def assertPositive(self, val):
906
917
        """Assert that val is greater than 0."""
907
918
        self.assertTrue(val > 0, 'expected a positive value, but got %s' % val)
1008
1019
        path_stat = transport.stat(path)
1009
1020
        actual_mode = stat.S_IMODE(path_stat.st_mode)
1010
1021
        self.assertEqual(mode, actual_mode,
1011
 
            'mode of %r incorrect (%o != %o)' % (path, mode, actual_mode))
 
1022
                         'mode of %r incorrect (%s != %s)'
 
1023
                         % (path, oct(mode), oct(actual_mode)))
1012
1024
 
1013
1025
    def assertIsSameRealPath(self, path1, path2):
1014
1026
        """Fail if path1 and path2 points to different files"""
1240
1252
            # bzr now uses the Win32 API and doesn't rely on APPDATA, but the
1241
1253
            # tests do check our impls match APPDATA
1242
1254
            'BZR_EDITOR': None, # test_msgeditor manipulates this variable
 
1255
            'VISUAL': None,
 
1256
            'EDITOR': None,
1243
1257
            'BZR_EMAIL': None,
1244
1258
            'BZREMAIL': None, # may still be present in the environment
1245
1259
            'EMAIL': None,
1320
1334
                try:
1321
1335
                    try:
1322
1336
                        self.setUp()
 
1337
                        if not self._bzr_test_setUp_run:
 
1338
                            self.fail(
 
1339
                                "test setUp did not invoke "
 
1340
                                "bzrlib.tests.TestCase's setUp")
1323
1341
                    except KeyboardInterrupt:
1324
1342
                        raise
1325
1343
                    except TestSkipped, e:
1349
1367
 
1350
1368
                    try:
1351
1369
                        self.tearDown()
 
1370
                        if not self._bzr_test_tearDown_run:
 
1371
                            self.fail(
 
1372
                                "test tearDown did not invoke "
 
1373
                                "bzrlib.tests.TestCase's tearDown")
1352
1374
                    except KeyboardInterrupt:
1353
1375
                        raise
1354
1376
                    except:
1373
1395
            self.__dict__ = saved_attrs
1374
1396
 
1375
1397
    def tearDown(self):
 
1398
        self._bzr_test_tearDown_run = True
1376
1399
        self._runCleanups()
1377
1400
        self._log_contents = ''
1378
1401
        unittest.TestCase.tearDown(self)
2107
2130
        made_control = self.make_bzrdir(relpath, format=format)
2108
2131
        return made_control.create_repository(shared=shared)
2109
2132
 
 
2133
    def make_smart_server(self, path):
 
2134
        smart_server = server.SmartTCPServer_for_testing()
 
2135
        smart_server.setUp(self.get_server())
 
2136
        remote_transport = get_transport(smart_server.get_url()).clone(path)
 
2137
        self.addCleanup(smart_server.tearDown)
 
2138
        return remote_transport
 
2139
 
2110
2140
    def make_branch_and_memory_tree(self, relpath, format=None):
2111
2141
        """Create a branch on the default transport and a MemoryTree for it."""
2112
2142
        b = self.make_branch(relpath, format=format)
2406
2436
    :param pattern: A regular expression string.
2407
2437
    :return: A callable that returns True if the re matches.
2408
2438
    """
2409
 
    filter_re = re.compile(pattern)
 
2439
    filter_re = osutils.re_compile_checked(pattern, 0,
 
2440
        'test filter')
2410
2441
    def condition(test):
2411
2442
        test_id = test.id()
2412
2443
        return filter_re.search(test_id)
2934
2965
                   'bzrlib.tests.test_extract',
2935
2966
                   'bzrlib.tests.test_fetch',
2936
2967
                   'bzrlib.tests.test_fifo_cache',
 
2968
                   'bzrlib.tests.test_filters',
2937
2969
                   'bzrlib.tests.test_ftp_transport',
2938
2970
                   'bzrlib.tests.test_foreign',
2939
2971
                   'bzrlib.tests.test_generate_docs',
2987
3019
                   'bzrlib.tests.test_reconfigure',
2988
3020
                   'bzrlib.tests.test_registry',
2989
3021
                   'bzrlib.tests.test_remote',
 
3022
                   'bzrlib.tests.test_rename_map',
2990
3023
                   'bzrlib.tests.test_repository',
2991
3024
                   'bzrlib.tests.test_revert',
2992
3025
                   'bzrlib.tests.test_revision',
3395
3428
    return None
3396
3429
 
3397
3430
 
3398
 
class _FTPServerFeature(Feature):
3399
 
    """Some tests want an FTP Server, check if one is available.
3400
 
 
3401
 
    Right now, the only way this is available is if 'medusa' is installed.
3402
 
    http://www.amk.ca/python/code/medusa.html
3403
 
    """
3404
 
 
3405
 
    def _probe(self):
3406
 
        try:
3407
 
            import bzrlib.tests.ftp_server
3408
 
            return True
3409
 
        except ImportError:
3410
 
            return False
3411
 
 
3412
 
    def feature_name(self):
3413
 
        return 'FTPServer'
3414
 
 
3415
 
 
3416
 
FTPServerFeature = _FTPServerFeature()
3417
 
 
3418
 
 
3419
3431
class _HTTPSServerFeature(Feature):
3420
3432
    """Some tests want an https Server, check if one is available.
3421
3433
 
3521
3533
        return 'case-insensitive filesystem'
3522
3534
 
3523
3535
CaseInsensitiveFilesystemFeature = _CaseInsensitiveFilesystemFeature()
 
3536
 
 
3537
 
 
3538
class _SubUnitFeature(Feature):
 
3539
    """Check if subunit is available."""
 
3540
 
 
3541
    def _probe(self):
 
3542
        try:
 
3543
            import subunit
 
3544
            return True
 
3545
        except ImportError:
 
3546
            return False
 
3547
 
 
3548
    def feature_name(self):
 
3549
        return 'subunit'
 
3550
 
 
3551
SubUnitFeature = _SubUnitFeature()
 
3552
# Only define SubUnitBzrRunner if subunit is available.
 
3553
try:
 
3554
    from subunit import TestProtocolClient
 
3555
    class SubUnitBzrRunner(TextTestRunner):
 
3556
        def run(self, test):
 
3557
            # undo out claim for testing which looks like a test start to subunit
 
3558
            self.stream.write("success: %s\n" % (osutils.realpath(sys.argv[0]),))
 
3559
            result = TestProtocolClient(self.stream)
 
3560
            test.run(result)
 
3561
            return result
 
3562
except ImportError:
 
3563
    pass