comparison tests/run-tests.py @ 21451:1b3a1ebdcfee

run-tests: store last result in Test._result Subsequent patches move post-test actions into tearDown(). This requires tearDown() to have access to the last result.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sun, 20 Apr 2014 15:08:05 -0700
parents a6e40416f172
children 1517c0461b75
comparison
equal deleted inserted replaced
21450:a6e40416f172 21451:1b3a1ebdcfee
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 self._duration = None
363 self._result = None
363 364
364 # If we're not in --debug mode and reference output file exists, 365 # If we're not in --debug mode and reference output file exists,
365 # check test output against it. 366 # check test output against it.
366 if runner.options.debug: 367 if runner.options.debug:
367 self._refout = None # to match "out is None" 368 self._refout = None # to match "out is None"
386 """Tasks to perform before run().""" 387 """Tasks to perform before run()."""
387 self._finished = False 388 self._finished = False
388 self._ret = None 389 self._ret = None
389 self._out = None 390 self._out = None
390 self._duration = None 391 self._duration = None
392 self._result = None
391 393
392 def run(self): 394 def run(self):
393 """Run this test instance. 395 """Run this test instance.
394 396
395 This will return a tuple describing the result of the test. 397 This will return a tuple describing the result of the test.
470 472
471 if not missing: 473 if not missing:
472 missing = ['irrelevant'] 474 missing = ['irrelevant']
473 475
474 if failed: 476 if failed:
475 res = self.fail('hg have failed checking for %s' % failed[-1], 477 self._result = self.fail('hg have failed checking for %s' %
476 ret) 478 failed[-1], ret)
477 else: 479 else:
478 skipped = True 480 skipped = True
479 res = self.skip(missing[-1]) 481 self._result = self.skip(missing[-1])
480 elif ret == 'timeout': 482 elif ret == 'timeout':
481 res = self.fail('timed out', ret) 483 self._result = self.fail('timed out', ret)
482 elif out != self._refout: 484 elif out != self._refout:
483 info = {} 485 info = {}
484 if not options.nodiff: 486 if not options.nodiff:
485 iolock.acquire() 487 iolock.acquire()
486 if options.view: 488 if options.view:
502 and not options.debug: 504 and not options.debug:
503 f = open(self._errpath, 'wb') 505 f = open(self._errpath, 'wb')
504 for line in out: 506 for line in out:
505 f.write(line) 507 f.write(line)
506 f.close() 508 f.close()
507 res = self.fail(msg, ret) 509
510 self._result = self.fail(msg, ret)
508 elif ret: 511 elif ret:
509 res = self.fail(describe(ret), ret) 512 self._result = self.fail(describe(ret), ret)
510 else: 513 else:
511 res = self.success() 514 self._result = self.success()
512 515
513 516
514 vlog("# Ret was:", ret) 517 vlog("# Ret was:", ret)
515 518
516 # Don't print progress in unittest mode because that is handled 519 # Don't print progress in unittest mode because that is handled
517 # by TestResult. 520 # by TestResult.
518 if not options.verbose and not self._unittest: 521 if not options.verbose and not self._unittest:
519 iolock.acquire() 522 iolock.acquire()
520 sys.stdout.write(res[0]) 523 sys.stdout.write(self._result[0])
521 sys.stdout.flush() 524 sys.stdout.flush()
522 iolock.release() 525 iolock.release()
523 526
524 if not self._unittest: 527 if not self._unittest:
525 self.tearDown() 528 self.tearDown()
526 529
527 return res 530 return self._result
528 531
529 def tearDown(self): 532 def tearDown(self):
530 """Tasks to perform after run().""" 533 """Tasks to perform after run()."""
531 self._runner.times.append((self.name, self._duration)) 534 self._runner.times.append((self.name, self._duration))
532 535