/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/test_selftest.py

  • Committer: Robert Collins
  • Date: 2006-02-14 05:15:45 UTC
  • mto: (1704.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 1706.
  • Revision ID: robertc@robertcollins.net-20060214051545-7567c24a4a29862e
Teach bzr selftest to use a progress bar in non verbose mode.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import warnings
23
23
 
24
24
import bzrlib
 
25
from bzrlib.progress import _BaseProgressBar
25
26
from bzrlib.tests import (
26
27
                          _load_module_by_name,
27
28
                          ChrootedTestCase,
74
75
        # must be hidden in here so it's not run as a real test
75
76
        def skipping_test():
76
77
            raise TestSkipped('test intentionally skipped')
77
 
        runner = TextTestRunner(stream=self._log_file)
 
78
        runner = TextTestRunner(stream=self._log_file, keep_output=True)
78
79
        test = unittest.FunctionTestCase(skipping_test)
79
80
        result = runner.run(test)
80
81
        self.assertTrue(result.wasSuccessful())
296
297
        t = get_transport(self.get_readonly_url())
297
298
        url = t.base
298
299
        self.assertEqual(url, t.clone('..').base)
 
300
 
 
301
 
 
302
class MockProgress(_BaseProgressBar):
 
303
    """Progress-bar standin that records calls.
 
304
 
 
305
    Useful for testing pb using code.
 
306
    """
 
307
 
 
308
    def __init__(self):
 
309
        _BaseProgressBar.__init__(self)
 
310
        self.calls = []
 
311
 
 
312
    def tick(self):
 
313
        self.calls.append(('tick',))
 
314
 
 
315
    def update(self, msg=None, current=None, total=None):
 
316
        self.calls.append(('update', msg, current, total))
 
317
 
 
318
    def clear(self):
 
319
        self.calls.append(('clear',))
 
320
 
 
321
 
 
322
class TestResult(TestCase):
 
323
 
 
324
    def test_progress_bar_style_quiet(self):
 
325
        # test using a progress bar.
 
326
        dummy_test = TestResult('test_progress_bar_style_quiet')
 
327
        dummy_error = (Exception, None, [])
 
328
        mypb = MockProgress()
 
329
        mypb.update('Running tests', 0, 4)
 
330
        last_calls = mypb.calls[:]
 
331
        result = bzrlib.tests._MyResult(self._log_file,
 
332
                                        descriptions=0,
 
333
                                        verbosity=1,
 
334
                                        pb=mypb)
 
335
        self.assertEqual(last_calls, mypb.calls)
 
336
 
 
337
        # an error 
 
338
        result.startTest(dummy_test)
 
339
        # starting a test changes nothing (the runner does the priming update)
 
340
        self.assertEqual(last_calls, mypb.calls)
 
341
        result.addError(dummy_test, dummy_error)
 
342
        self.assertEqual(last_calls + [('update', None, 1, None)], mypb.calls)
 
343
        last_calls = mypb.calls[:]
 
344
 
 
345
        # a failure
 
346
        result.startTest(dummy_test)
 
347
        result.addFailure(dummy_test, dummy_error)
 
348
        self.assertEqual(last_calls + [('update', None, 2, None)], mypb.calls)
 
349
        last_calls = mypb.calls[:]
 
350
 
 
351
        # a success
 
352
        result.startTest(dummy_test)
 
353
        result.addSuccess(dummy_test)
 
354
        self.assertEqual(last_calls + [('update', None, 3, None)], mypb.calls)
 
355
        last_calls = mypb.calls[:]
 
356
 
 
357
        # a skip
 
358
        result.startTest(dummy_test)
 
359
        result.addSkipped(dummy_test, dummy_error)
 
360
        self.assertEqual(last_calls + [('update', None, 4, None)], mypb.calls)
 
361
        last_calls = mypb.calls[:]
 
362
 
 
363
 
 
364
class TestRunner(TestCase):
 
365
 
 
366
    def dummy_test(self):
 
367
        pass
 
368
 
 
369
    def test_accepts_and_uses_pb_parameter(self):
 
370
        test = TestRunner('dummy_test')
 
371
        mypb = MockProgress()
 
372
        self.assertEqual([], mypb.calls)
 
373
        runner = TextTestRunner(stream=self._log_file, pb=mypb, keep_output=True)
 
374
        result = runner.run(test)
 
375
        self.assertEqual(1, result.testsRun)
 
376
        self.assertEqual(('update', 'Running tests', 0, 1), mypb.calls[0])
 
377
        self.assertEqual(('update', None, 1, None), mypb.calls[1])
 
378
        self.assertEqual(('update', 'Cleaning up', 0, 1), mypb.calls[2])
 
379
        self.assertEqual(('clear',), mypb.calls[3])
 
380
        self.assertEqual(4, len(mypb.calls))