comparison tests/run-tests.py @ 21450:a6e40416f172

run-tests: report test duration in Test.tearDown()
author Gregory Szorc <gregory.szorc@gmail.com>
date Sun, 20 Apr 2014 15:00:13 -0700
parents aedf18bcde11
children 1b3a1ebdcfee
comparison
equal deleted inserted replaced
21449:aedf18bcde11 21450:a6e40416f172
357 self._unittest = unittest 357 self._unittest = unittest
358 358
359 self._finished = None 359 self._finished = None
360 self._ret = None 360 self._ret = None
361 self._out = None 361 self._out = None
362 self._duration = None
362 363
363 # If we're not in --debug mode and reference output file exists, 364 # If we're not in --debug mode and reference output file exists,
364 # check test output against it. 365 # check test output against it.
365 if runner.options.debug: 366 if runner.options.debug:
366 self._refout = None # to match "out is None" 367 self._refout = None # to match "out is None"
384 def setUp(self): 385 def setUp(self):
385 """Tasks to perform before run().""" 386 """Tasks to perform before run()."""
386 self._finished = False 387 self._finished = False
387 self._ret = None 388 self._ret = None
388 self._out = None 389 self._out = None
390 self._duration = None
389 391
390 def run(self): 392 def run(self):
391 """Run this test instance. 393 """Run this test instance.
392 394
393 This will return a tuple describing the result of the test. 395 This will return a tuple describing the result of the test.
433 vlog('# Test', self.name) 435 vlog('# Test', self.name)
434 436
435 starttime = time.time() 437 starttime = time.time()
436 try: 438 try:
437 ret, out = self._run(testtmp, replacements, env) 439 ret, out = self._run(testtmp, replacements, env)
438 duration = time.time() - starttime 440 self._duration = time.time() - starttime
439 self._finished = True 441 self._finished = True
440 self._ret = ret 442 self._ret = ret
441 self._out = out 443 self._out = out
442 except KeyboardInterrupt: 444 except KeyboardInterrupt:
443 duration = time.time() - starttime 445 self._duration = time.time() - starttime
444 log('INTERRUPTED: %s (after %d seconds)' % (self.name, duration)) 446 log('INTERRUPTED: %s (after %d seconds)' % (self.name,
447 self._duration))
445 raise 448 raise
446 except Exception, e: 449 except Exception, e:
447 return self.fail('Exception during execution: %s' % e, 255) 450 return self.fail('Exception during execution: %s' % e, 255)
448 451
449 killdaemons(env['DAEMON_PIDS']) 452 killdaemons(env['DAEMON_PIDS'])
516 iolock.acquire() 519 iolock.acquire()
517 sys.stdout.write(res[0]) 520 sys.stdout.write(res[0])
518 sys.stdout.flush() 521 sys.stdout.flush()
519 iolock.release() 522 iolock.release()
520 523
521 self._runner.times.append((self.name, duration)) 524 if not self._unittest:
525 self.tearDown()
522 526
523 return res 527 return res
524 528
525 def tearDown(self): 529 def tearDown(self):
526 """Tasks to perform after run().""" 530 """Tasks to perform after run()."""
531 self._runner.times.append((self.name, self._duration))
527 532
528 def _run(self, testtmp, replacements, env): 533 def _run(self, testtmp, replacements, env):
529 # This should be implemented in child classes to run tests. 534 # This should be implemented in child classes to run tests.
530 return self._skip('unknown test type') 535 return self._skip('unknown test type')
531 536