290
290
for test, err in errors:
291
291
self.stream.writeln(self.separator1)
292
292
self.stream.write("%s: " % flavour)
293
if self.use_numbered_dirs:
294
294
self.stream.write('#%d ' % test.number)
295
295
self.stream.writeln(self.getDescription(test))
296
296
if getattr(test, '_get_log', None) is not None:
320
320
bench_history=None,
323
use_numbered_dirs=False,
325
324
ExtendedTestResult.__init__(self, stream, descriptions, verbosity,
326
bench_history, num_tests, use_numbered_dirs)
325
bench_history, num_tests)
328
327
self.pb = self.ui.nested_progress_bar()
329
328
self._supplied_pb = False
365
364
+ self._shortened_test_description(test))
367
366
def _test_description(self, test):
368
if self.use_numbered_dirs:
369
368
return '#%d %s' % (self.count,
370
369
self._shortened_test_description(test))
434
433
# width needs space for 6 char status, plus 1 for slash, plus 2 10-char
435
434
# numbers, plus a trailing blank
436
435
# when NUMBERED_DIRS: plus 5 chars on test number, plus 1 char on space
437
if self.use_numbered_dirs:
438
437
self.stream.write('%5d ' % self.count)
439
438
self.stream.write(self._ellipsize_to_right(name,
440
439
osutils.terminal_width()-36))
496
495
keep_output=False,
498
use_numbered_dirs=False,
500
497
self.stream = unittest._WritelnDecorator(stream)
501
498
self.descriptions = descriptions
502
499
self.verbosity = verbosity
503
500
self.keep_output = keep_output
504
501
self._bench_history = bench_history
505
self.use_numbered_dirs = use_numbered_dirs
507
503
def run(self, test):
508
504
"Run the given test case or test suite."
517
513
bench_history=self._bench_history,
518
514
num_tests=test.countTestCases(),
519
use_numbered_dirs=self.use_numbered_dirs,
521
516
result.stop_early = self.stop_on_failure
522
517
result.report_starting()
576
571
test_root = test_root.encode(
577
572
sys.getfilesystemencoding())
578
_rmtree_temp_dir(test_root)
574
osutils.rmtree(test_root)
576
if sys.platform == 'win32' and e.errno == errno.EACCES:
577
print >>sys.stderr, ('Permission denied: '
578
'unable to remove testing dir '
579
'%s' % os.path.basename(test_root))
580
583
note("Failed tests working directories are in '%s'\n", test_root)
581
584
TestCaseWithMemoryTransport.TEST_ROOT = None
751
754
self._startLogFile()
752
755
self._benchcalls = []
753
756
self._benchtime = None
756
def _clear_hooks(self):
757
757
# prevent hooks affecting tests
759
import bzrlib.smart.server
760
self._preserved_hooks = {
761
bzrlib.branch.Branch: bzrlib.branch.Branch.hooks,
762
bzrlib.smart.server.SmartTCPServer: bzrlib.smart.server.SmartTCPServer.hooks,
758
self._preserved_hooks = bzrlib.branch.Branch.hooks
764
759
self.addCleanup(self._restoreHooks)
765
760
# this list of hooks must be kept in sync with the defaults
767
762
bzrlib.branch.Branch.hooks = bzrlib.branch.BranchHooks()
768
bzrlib.smart.server.SmartTCPServer.hooks = \
769
bzrlib.smart.server.SmartServerHooks()
771
764
def _silenceUI(self):
772
765
"""Turn off UI for duration of test"""
927
920
self.fail("%r is an instance of %s rather than %s" % (
928
921
obj, obj.__class__, kls))
930
def expectFailure(self, reason, assertion, *args, **kwargs):
931
"""Invoke a test, expecting it to fail for the given reason.
933
This is for assertions that ought to succeed, but currently fail.
934
(The failure is *expected* but not *wanted*.) Please be very precise
935
about the failure you're expecting. If a new bug is introduced,
936
AssertionError should be raised, not KnownFailure.
938
Frequently, expectFailure should be followed by an opposite assertion.
941
Intended to be used with a callable that raises AssertionError as the
942
'assertion' parameter. args and kwargs are passed to the 'assertion'.
944
Raises KnownFailure if the test fails. Raises AssertionError if the
949
self.expectFailure('Math is broken', self.assertNotEqual, 54,
951
self.assertEqual(42, dynamic_val)
953
This means that a dynamic_val of 54 will cause the test to raise
954
a KnownFailure. Once math is fixed and the expectFailure is removed,
955
only a dynamic_val of 42 will allow the test to pass. Anything other
956
than 54 or 42 will cause an AssertionError.
959
assertion(*args, **kwargs)
960
except AssertionError:
961
raise KnownFailure(reason)
963
self.fail('Unexpected success. Should have failed: %s' % reason)
965
923
def _capture_warnings(self, a_callable, *args, **kwargs):
966
924
"""A helper for callDeprecated and applyDeprecated.
1105
1063
osutils.set_or_unset_env(name, value)
1107
1065
def _restoreHooks(self):
1108
for klass, hooks in self._preserved_hooks.items():
1109
setattr(klass, 'hooks', hooks)
1066
bzrlib.branch.Branch.hooks = self._preserved_hooks
1111
1068
def knownFailure(self, reason):
1112
1069
"""This test has failed for some known reason."""
1830
1787
OVERRIDE_PYTHON = 'python'
1831
use_numbered_dirs = False
1833
1789
def check_file_contents(self, filename, expect):
1834
1790
self.log("check contents of file %s" % filename)
1844
1800
For TestCaseInTempDir we create a temporary directory based on the test
1845
1801
name and then create two subdirs - test and home under it.
1847
if self.use_numbered_dirs: # strongly recommended on Windows
1848
# due the path length limitation (260 ch.)
1803
if NUMBERED_DIRS: # strongly recommended on Windows
1804
# due the path length limitation (260 chars)
1849
1805
candidate_dir = '%s/%dK/%05d' % (self.TEST_ROOT,
1850
1806
int(self.number/1000),
2074
2030
transport=None, lsprof_timed=None, bench_history=None,
2075
2031
matching_tests_first=None,
2076
2032
numbered_dirs=None):
2077
use_numbered_dirs = bool(numbered_dirs)
2033
global NUMBERED_DIRS
2034
if numbered_dirs is not None:
2035
NUMBERED_DIRS = bool(numbered_dirs)
2079
2037
TestCase._gather_lsprof_in_benchmarks = lsprof_timed
2080
if numbered_dirs is not None:
2081
TestCaseInTempDir.use_numbered_dirs = use_numbered_dirs
2087
2043
descriptions=0,
2088
2044
verbosity=verbosity,
2089
2045
keep_output=keep_output,
2090
bench_history=bench_history,
2091
use_numbered_dirs=use_numbered_dirs,
2046
bench_history=bench_history)
2093
2047
runner.stop_on_failure=stop_on_failure
2094
2048
if pattern != '.*':
2095
2049
if matching_tests_first:
2293
2247
suite.addTests(adapter.adapt(test))
2296
def _rmtree_temp_dir(dirname):
2298
osutils.rmtree(dirname)
2300
if sys.platform == 'win32' and e.errno == errno.EACCES:
2301
print >>sys.stderr, ('Permission denied: '
2302
'unable to remove testing dir '
2303
'%s' % os.path.basename(dirname))
2308
2250
def clean_selftest_output(root=None, quiet=False):
2309
2251
"""Remove all selftest output directories from root directory.