/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

  • Committer: Robey Pointer
  • Date: 2006-07-01 19:03:33 UTC
  • mfrom: (1829 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1830.
  • Revision ID: robey@lag.net-20060701190333-f58465aec4bd3412
merge from bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
import codecs
30
30
from cStringIO import StringIO
31
31
import difflib
 
32
import doctest
32
33
import errno
33
34
import logging
34
35
import os
69
70
from bzrlib.transport.local import LocalRelpathServer
70
71
from bzrlib.transport.readonly import ReadonlyServer
71
72
from bzrlib.trace import mutter
72
 
from bzrlib.tests.TestUtil import TestLoader, TestSuite
 
73
from bzrlib.tests import TestUtil
 
74
from bzrlib.tests.TestUtil import (
 
75
                          TestSuite,
 
76
                          TestLoader,
 
77
                          )
73
78
from bzrlib.tests.treeshape import build_tree_contents
74
79
import bzrlib.urlutils as urlutils
75
80
from bzrlib.workingtree import WorkingTree, WorkingTreeFormat2
257
262
        self.stream.flush()
258
263
        # seems best to treat this as success from point-of-view of unittest
259
264
        # -- it actually does nothing so it barely matters :)
260
 
        unittest.TestResult.addSuccess(self, test)
 
265
        try:
 
266
            test.tearDown()
 
267
        except KeyboardInterrupt:
 
268
            raise
 
269
        except:
 
270
            self.addError(test, test.__exc_info())
 
271
        else:
 
272
            unittest.TestResult.addSuccess(self, test)
261
273
 
262
274
    def printErrorList(self, flavour, errors):
263
275
        for test, err in errors:
334
346
                # If LANG=C we probably have created some bogus paths
335
347
                # which rmtree(unicode) will fail to delete
336
348
                # so make sure we are using rmtree(str) to delete everything
337
 
                osutils.rmtree(test_root.encode(
338
 
                    sys.getfilesystemencoding()))
 
349
                # except on win32, where rmtree(str) will fail
 
350
                # since it doesn't have the property of byte-stream paths
 
351
                # (they are either ascii or mbcs)
 
352
                if sys.platform == 'win32':
 
353
                    # make sure we are using the unicode win32 api
 
354
                    test_root = unicode(test_root)
 
355
                else:
 
356
                    test_root = test_root.encode(
 
357
                        sys.getfilesystemencoding())
 
358
                osutils.rmtree(test_root)
339
359
        else:
340
360
            if self.pb is not None:
341
361
                self.pb.note("Failed tests working directories are in '%s'\n",
539
559
 
540
560
        Read contents into memory, close, and delete.
541
561
        """
 
562
        if self._log_file is None:
 
563
            return
542
564
        bzrlib.trace.disable_test_log(self._log_nonce)
543
565
        self._log_file.seek(0)
544
566
        self._log_contents = self._log_file.read()
676
698
        self.log('run bzr: %r', argv)
677
699
        # FIXME: don't call into logging here
678
700
        handler = logging.StreamHandler(stderr)
679
 
        handler.setFormatter(bzrlib.trace.QuietFormatter())
680
701
        handler.setLevel(logging.INFO)
681
702
        logger = logging.getLogger('')
682
703
        logger.addHandler(handler)
727
748
            encoding = bzrlib.user_encoding
728
749
        return self.run_bzr(*args, **kwargs)[0].decode(encoding)
729
750
 
 
751
    def run_bzr_error(self, error_regexes, *args, **kwargs):
 
752
        """Run bzr, and check that stderr contains the supplied regexes
 
753
        
 
754
        :param error_regexes: Sequence of regular expressions which 
 
755
            must each be found in the error output. The relative ordering
 
756
            is not enforced.
 
757
        :param args: command-line arguments for bzr
 
758
        :param kwargs: Keyword arguments which are interpreted by run_bzr
 
759
            This function changes the default value of retcode to be 3,
 
760
            since in most cases this is run when you expect bzr to fail.
 
761
        :return: (out, err) The actual output of running the command (in case you
 
762
                 want to do more inspection)
 
763
 
 
764
        Examples of use:
 
765
            # Make sure that commit is failing because there is nothing to do
 
766
            self.run_bzr_error(['no changes to commit'],
 
767
                               'commit', '-m', 'my commit comment')
 
768
            # Make sure --strict is handling an unknown file, rather than
 
769
            # giving us the 'nothing to do' error
 
770
            self.build_tree(['unknown'])
 
771
            self.run_bzr_error(['Commit refused because there are unknown files'],
 
772
                               'commit', '--strict', '-m', 'my commit comment')
 
773
        """
 
774
        kwargs.setdefault('retcode', 3)
 
775
        out, err = self.run_bzr(*args, **kwargs)
 
776
        for regex in error_regexes:
 
777
            self.assertContainsRe(err, regex)
 
778
        return out, err
 
779
 
730
780
    def run_bzr_subprocess(self, *args, **kwargs):
731
781
        """Run bzr in a subprocess for testing.
732
782
 
1129
1179
 
1130
1180
 
1131
1181
def filter_suite_by_re(suite, pattern):
1132
 
    result = TestSuite()
 
1182
    result = TestUtil.TestSuite()
1133
1183
    filter_re = re.compile(pattern)
1134
1184
    for test in iter_suite_tests(suite):
1135
1185
        if filter_re.search(test.id()):
1190
1240
    This function can be replaced if you need to change the default test
1191
1241
    suite on a global basis, but it is not encouraged.
1192
1242
    """
1193
 
    from doctest import DocTestSuite
1194
 
 
1195
 
    global MODULES_TO_DOCTEST
1196
 
 
1197
 
    testmod_names = [ \
 
1243
    testmod_names = [
1198
1244
                   'bzrlib.tests.test_ancestry',
1199
1245
                   'bzrlib.tests.test_api',
1200
1246
                   'bzrlib.tests.test_bad_files',
1274
1320
        'bzrlib.tests.test_transport_implementations',
1275
1321
        'bzrlib.tests.test_read_bundle',
1276
1322
        ]
1277
 
 
1278
 
    suite = TestSuite()
 
1323
    suite = TestUtil.TestSuite()
1279
1324
    loader = TestUtil.TestLoader()
1280
1325
    from bzrlib.transport import TransportTestProviderAdapter
1281
1326
    adapter = TransportTestProviderAdapter()
1285
1330
        suite.addTest(package.test_suite())
1286
1331
    for m in MODULES_TO_TEST:
1287
1332
        suite.addTest(loader.loadTestsFromModule(m))
1288
 
    for m in (MODULES_TO_DOCTEST):
1289
 
        suite.addTest(DocTestSuite(m))
 
1333
    for m in MODULES_TO_DOCTEST:
 
1334
        suite.addTest(doctest.DocTestSuite(m))
1290
1335
    for name, plugin in bzrlib.plugin.all_plugins().items():
1291
1336
        if getattr(plugin, 'test_suite', None) is not None:
1292
1337
            suite.addTest(plugin.test_suite())