/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: Alexander Belchenko
  • Date: 2007-03-06 23:09:00 UTC
  • mto: This revision was merged to the branch mainline in revision 2323.
  • Revision ID: bialix@ukr.net-20070306230900-mbyylf39npkof72m
`bzr selftest --numbered-dirs` use numbered dirs for TestCaseInTempDir

Show diffs side-by-side

added added

removed removed

Lines of Context:
102
102
                      bzrlib.store,
103
103
                      ]
104
104
 
 
105
NUMBERED_DIRS = False   # dirs kind for TestCaseInTempDir (numbered or named)
 
106
 
105
107
 
106
108
def packages_to_test():
107
109
    """Return a list of packages to test.
208
210
    def startTest(self, test):
209
211
        unittest.TestResult.startTest(self, test)
210
212
        self.report_test_start(test)
 
213
        test.number = self.count
211
214
        self._recordTestStartTime()
212
215
 
213
216
    def _recordTestStartTime(self):
324
327
                + ' ' 
325
328
                + self._shortened_test_description(test))
326
329
 
 
330
    def _test_description(self, test):
 
331
        if NUMBERED_DIRS:
 
332
            return '#%d %s' % (self.count,
 
333
                               self._shortened_test_description(test))
 
334
        else:
 
335
            return self._shortened_test_description(test)
 
336
 
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),
331
341
            err[1],
332
342
            )
333
343
 
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),
338
348
            err[1],
339
349
            )
340
350
 
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
 
394
        if NUMBERED_DIRS:
 
395
            self.stream.write('%5d ' % self.count)
 
396
            self.stream.write(self._ellipsize_to_right(name,
 
397
                                osutils.terminal_width()-36))
 
398
        else:
 
399
            self.stream.write(self._ellipsize_to_right(name,
 
400
                                osutils.terminal_width()-30))
385
401
        self.stream.flush()
386
402
 
 
403
    def _error_summary(self, err):
 
404
        indent = ' ' * 4
 
405
        if NUMBERED_DIRS:
 
406
            indent += ' ' * 6
 
407
        return '%s%s' % (indent, err[1])
 
408
 
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)))
391
414
 
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)))
396
420
 
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', []):
 
424
            if NUMBERED_DIRS:
 
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()
403
429
 
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]
 
431
        self.skip_count += 1
 
432
        self.stream.writeln(' SKIP %s\n%s'
 
433
                % (self._testTimeString(),
 
434
                   self._error_summary(skip_excinfo)))
407
435
 
408
436
 
409
437
class TextTestRunner(object):
456
484
            self.stream.writeln(")")
457
485
        else:
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.
1505
1537
        """
 
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),
 
1542
                                             self.number)
 
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')
 
1551
            f.write(self.id())
 
1552
            f.close()
 
1553
            return
 
1554
        # Else NAMED DIRS
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)
 
1763
 
1711
1764
    TestCase._gather_lsprof_in_benchmarks = lsprof_timed
1712
1765
    if verbose:
1713
1766
        verbosity = 2
1734
1787
             test_suite_factory=None,
1735
1788
             lsprof_timed=None,
1736
1789
             bench_history=None,
1737
 
             matching_tests_first=None):
 
1790
             matching_tests_first=None,
 
1791
             numbered_dirs=False):
1738
1792
    """Run the whole test suite under the enhanced runner"""
1739
1793
    # XXX: Very ugly way to do this...
1740
1794
    # Disable warning about old formats because we don't want it to disturb
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)
1761
1816
    finally:
1762
1817
        default_transport = old_transport
1763
1818