325
328
+ self._shortened_test_description(test))
330
def _test_description(self, test):
332
return '#%d %s' % (self.count,
333
self._shortened_test_description(test))
335
return self._shortened_test_description(test)
327
337
def report_error(self, test, err):
328
338
self.error_count += 1
329
339
self.pb.note('ERROR: %s\n %s\n',
330
self._shortened_test_description(test),
340
self._test_description(test),
334
344
def report_failure(self, test, err):
335
345
self.failure_count += 1
336
346
self.pb.note('FAIL: %s\n %s\n',
337
self._shortened_test_description(test),
347
self._test_description(test),
380
390
name = self._shortened_test_description(test)
381
391
# width needs space for 6 char status, plus 1 for slash, plus 2 10-char
382
392
# numbers, plus a trailing blank
383
self.stream.write(self._ellipsize_to_right(name,
384
osutils.terminal_width()-30))
393
# when NUMBERED_DIRS: plus 5 chars on test number, plus 1 char on space
395
self.stream.write('%5d ' % self.count)
396
self.stream.write(self._ellipsize_to_right(name,
397
osutils.terminal_width()-36))
399
self.stream.write(self._ellipsize_to_right(name,
400
osutils.terminal_width()-30))
385
401
self.stream.flush()
403
def _error_summary(self, err):
407
return '%s%s' % (indent, err[1])
387
409
def report_error(self, test, err):
388
410
self.error_count += 1
389
self.stream.writeln('ERROR %s\n %s'
390
% (self._testTimeString(), err[1]))
411
self.stream.writeln('ERROR %s\n%s'
412
% (self._testTimeString(),
413
self._error_summary(err)))
392
415
def report_failure(self, test, err):
393
416
self.failure_count += 1
394
self.stream.writeln(' FAIL %s\n %s'
395
% (self._testTimeString(), err[1]))
417
self.stream.writeln(' FAIL %s\n%s'
418
% (self._testTimeString(),
419
self._error_summary(err)))
397
421
def report_success(self, test):
398
422
self.stream.writeln(' OK %s' % self._testTimeString())
399
423
for bench_called, stats in getattr(test, '_benchcalls', []):
425
self.stream.write(' ' * 6)
400
426
self.stream.writeln('LSProf output for %s(%s, %s)' % bench_called)
401
427
stats.pprint(file=self.stream)
402
428
self.stream.flush()
404
430
def report_skip(self, test, skip_excinfo):
405
print >>self.stream, ' SKIP %s' % self._testTimeString()
406
print >>self.stream, ' %s' % skip_excinfo[1]
432
self.stream.writeln(' SKIP %s\n%s'
433
% (self._testTimeString(),
434
self._error_summary(skip_excinfo)))
409
437
class TextTestRunner(object):
456
484
self.stream.writeln(")")
458
486
self.stream.writeln("OK")
487
if result.skip_count > 0:
488
skipped = result.skip_count
489
self.stream.writeln('%d test%s skipped' %
490
(skipped, skipped != 1 and "s" or ""))
459
491
result.report_cleaning_up()
460
492
# This is still a little bogus,
461
493
# but only a little. Folk not using our testrunner will
1503
1535
For TestCaseInTempDir we create a temporary directory based on the test
1504
1536
name and then create two subdirs - test and home under it.
1538
if NUMBERED_DIRS: # strongly recommended on Windows
1539
# due the path length limitation (260 chars)
1540
candidate_dir = '%s/%dK/%05d' % (self.TEST_ROOT,
1541
int(self.number/1000),
1543
os.makedirs(candidate_dir)
1544
self.test_home_dir = candidate_dir + '/home'
1545
os.mkdir(self.test_home_dir)
1546
self.test_dir = candidate_dir + '/work'
1547
os.mkdir(self.test_dir)
1548
os.chdir(self.test_dir)
1549
# put name of test inside
1550
f = file(candidate_dir + '/name', 'w')
1506
1555
# shorten the name, to avoid test failures due to path length
1507
1556
short_id = self.id().replace('bzrlib.tests.', '') \
1508
1557
.replace('__main__.', '')[-100:]
1707
1756
def run_suite(suite, name='test', verbose=False, pattern=".*",
1708
1757
stop_on_failure=False, keep_output=False,
1709
1758
transport=None, lsprof_timed=None, bench_history=None,
1710
matching_tests_first=None):
1759
matching_tests_first=None,
1760
numbered_dirs=False):
1761
global NUMBERED_DIRS
1762
NUMBERED_DIRS = bool(numbered_dirs)
1711
1764
TestCase._gather_lsprof_in_benchmarks = lsprof_timed
1757
1811
transport=transport,
1758
1812
lsprof_timed=lsprof_timed,
1759
1813
bench_history=bench_history,
1760
matching_tests_first=matching_tests_first)
1814
matching_tests_first=matching_tests_first,
1815
numbered_dirs=numbered_dirs)
1762
1817
default_transport = old_transport