1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport unittest 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from telemetry.unittest import progress_reporter 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass TestFoo(unittest.TestCase): 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # Test method doesn't have test- prefix intentionally. This is so that 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # run_test script won't run this test. 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def RunPassingTest(self): 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pass 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def RunFailingTest(self): 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self.fail('expected failure') 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class LoggingProgressReporter(object): 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def __init__(self): 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self._call_log = [] 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @property 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def call_log(self): 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return tuple(self._call_log) 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def __getattr__(self, name): 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def wrapper(*_): 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self._call_log.append(name) 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return wrapper 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class ProgressReporterTest(unittest.TestCase): 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def testTestRunner(self): 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) suite = progress_reporter.TestSuite() 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch suite.addTest(TestFoo(methodName='RunPassingTest')) 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch suite.addTest(TestFoo(methodName='RunFailingTest')) 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) reporter = LoggingProgressReporter() 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) runner = progress_reporter.TestRunner() 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) progress_reporters = (reporter,) 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) result = runner.run(suite, progress_reporters, 1, None) 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self.assertEqual(len(result.successes), 1) 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self.assertEqual(len(result.failures), 1) 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self.assertEqual(len(result.failures_and_errors), 1) 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch expected = ( 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'StartTestRun', 'StartTestSuite', 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'StartTest', 'Success', 'StopTest', 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'StartTest', 'Failure', 'StopTest', 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'StopTestSuite', 'StopTestRun', 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ) 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) self.assertEqual(reporter.call_log, expected) 55