296
297
t = get_transport(self.get_readonly_url())
298
299
self.assertEqual(url, t.clone('..').base)
302
class MockProgress(_BaseProgressBar):
303
"""Progress-bar standin that records calls.
305
Useful for testing pb using code.
309
_BaseProgressBar.__init__(self)
313
self.calls.append(('tick',))
315
def update(self, msg=None, current=None, total=None):
316
self.calls.append(('update', msg, current, total))
319
self.calls.append(('clear',))
322
class TestResult(TestCase):
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,
335
self.assertEqual(last_calls, mypb.calls)
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[:]
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[:]
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[:]
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[:]
364
class TestRunner(TestCase):
366
def dummy_test(self):
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))