equal
deleted
inserted
replaced
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 self._result = None |
|
364 self._skipped = None |
364 |
365 |
365 # If we're not in --debug mode and reference output file exists, |
366 # If we're not in --debug mode and reference output file exists, |
366 # check test output against it. |
367 # check test output against it. |
367 if runner.options.debug: |
368 if runner.options.debug: |
368 self._refout = None # to match "out is None" |
369 self._refout = None # to match "out is None" |
388 self._finished = False |
389 self._finished = False |
389 self._ret = None |
390 self._ret = None |
390 self._out = None |
391 self._out = None |
391 self._duration = None |
392 self._duration = None |
392 self._result = None |
393 self._result = None |
|
394 self._skipped = None |
393 |
395 |
394 def run(self): |
396 def run(self): |
395 """Run this test instance. |
397 """Run this test instance. |
396 |
398 |
397 This will return a tuple describing the result of the test. |
399 This will return a tuple describing the result of the test. |
459 def describe(ret): |
461 def describe(ret): |
460 if ret < 0: |
462 if ret < 0: |
461 return 'killed by signal: %d' % -ret |
463 return 'killed by signal: %d' % -ret |
462 return 'returned error code %d' % ret |
464 return 'returned error code %d' % ret |
463 |
465 |
464 skipped = False |
466 self._skipped = False |
465 |
467 |
466 if ret == self.SKIPPED_STATUS: |
468 if ret == self.SKIPPED_STATUS: |
467 if out is None: # Debug mode, nothing to parse. |
469 if out is None: # Debug mode, nothing to parse. |
468 missing = ['unknown'] |
470 missing = ['unknown'] |
469 failed = None |
471 failed = None |
475 |
477 |
476 if failed: |
478 if failed: |
477 self._result = self.fail('hg have failed checking for %s' % |
479 self._result = self.fail('hg have failed checking for %s' % |
478 failed[-1], ret) |
480 failed[-1], ret) |
479 else: |
481 else: |
480 skipped = True |
482 self._skipped = True |
481 self._result = self.skip(missing[-1]) |
483 self._result = self.skip(missing[-1]) |
482 elif ret == 'timeout': |
484 elif ret == 'timeout': |
483 self._result = self.fail('timed out', ret) |
485 self._result = self.fail('timed out', ret) |
484 elif out != self._refout: |
486 elif out != self._refout: |
485 info = {} |
487 info = {} |
498 if ret: |
500 if ret: |
499 msg += 'output changed and ' + describe(ret) |
501 msg += 'output changed and ' + describe(ret) |
500 else: |
502 else: |
501 msg += 'output changed' |
503 msg += 'output changed' |
502 |
504 |
503 if (ret != 0 or out != self._refout) and not skipped \ |
505 if (ret != 0 or out != self._refout) and not self._skipped \ |
504 and not options.debug: |
506 and not options.debug: |
505 f = open(self._errpath, 'wb') |
507 f = open(self._errpath, 'wb') |
506 for line in out: |
508 for line in out: |
507 f.write(line) |
509 f.write(line) |
508 f.close() |
510 f.close() |
511 elif ret: |
513 elif ret: |
512 self._result = self.fail(describe(ret), ret) |
514 self._result = self.fail(describe(ret), ret) |
513 else: |
515 else: |
514 self._result = self.success() |
516 self._result = self.success() |
515 |
517 |
|
518 if (ret != 0 or out != self._refout) and not self._skipped \ |
|
519 and not options.debug: |
|
520 f = open(self._errpath, 'wb') |
|
521 for line in out: |
|
522 f.write(line) |
|
523 f.close() |
516 |
524 |
517 if not self._unittest: |
525 if not self._unittest: |
518 self.tearDown() |
526 self.tearDown() |
519 |
527 |
520 return self._result |
528 return self._result |