Mercurial > hg
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 |