90 terminate(p) |
90 terminate(p) |
91 threading.Thread(target=t).start() |
91 threading.Thread(target=t).start() |
92 |
92 |
93 return p |
93 return p |
94 |
94 |
95 # reserved exit code to skip test (used by hghave) |
|
96 SKIPPED_STATUS = 80 |
|
97 SKIPPED_PREFIX = 'skipped: ' |
95 SKIPPED_PREFIX = 'skipped: ' |
98 FAILED_PREFIX = 'hghave check failed: ' |
96 FAILED_PREFIX = 'hghave check failed: ' |
99 PYTHON = sys.executable.replace('\\', '/') |
97 PYTHON = sys.executable.replace('\\', '/') |
100 IMPL_PATH = 'PYTHONPATH' |
98 IMPL_PATH = 'PYTHONPATH' |
101 if 'java' in sys.platform: |
99 if 'java' in sys.platform: |
352 |
350 |
353 Test instances can be run multiple times via run(). However, multiple |
351 Test instances can be run multiple times via run(). However, multiple |
354 runs cannot be run concurrently. |
352 runs cannot be run concurrently. |
355 """ |
353 """ |
356 |
354 |
|
355 # Status code reserved for skipped tests (used by hghave). |
|
356 SKIPPED_STATUS = 80 |
|
357 |
357 def __init__(self, runner, test, count, refpath): |
358 def __init__(self, runner, test, count, refpath): |
358 path = os.path.join(runner.testdir, test) |
359 path = os.path.join(runner.testdir, test) |
359 errpath = os.path.join(runner.testdir, '%s.err' % test) |
360 errpath = os.path.join(runner.testdir, '%s.err' % test) |
360 |
361 |
361 self._runner = runner |
362 self._runner = runner |
448 return 'killed by signal: %d' % -ret |
449 return 'killed by signal: %d' % -ret |
449 return 'returned error code %d' % ret |
450 return 'returned error code %d' % ret |
450 |
451 |
451 skipped = False |
452 skipped = False |
452 |
453 |
453 if ret == SKIPPED_STATUS: |
454 if ret == self.SKIPPED_STATUS: |
454 if out is None: # Debug mode, nothing to parse. |
455 if out is None: # Debug mode, nothing to parse. |
455 missing = ['unknown'] |
456 missing = ['unknown'] |
456 failed = None |
457 failed = None |
457 else: |
458 else: |
458 missing, failed = TTest.parsehghaveoutput(out) |
459 missing, failed = TTest.parsehghaveoutput(out) |
645 |
646 |
646 exitcode, output = run(cmd, testtmp, self._options, replacements, env, |
647 exitcode, output = run(cmd, testtmp, self._options, replacements, env, |
647 self._runner.abort) |
648 self._runner.abort) |
648 # Do not merge output if skipped. Return hghave message instead. |
649 # Do not merge output if skipped. Return hghave message instead. |
649 # Similarly, with --debug, output is None. |
650 # Similarly, with --debug, output is None. |
650 if exitcode == SKIPPED_STATUS or output is None: |
651 if exitcode == self.SKIPPED_STATUS or output is None: |
651 return exitcode, output |
652 return exitcode, output |
652 |
653 |
653 return self._processoutput(exitcode, output, salt, after, expected) |
654 return self._processoutput(exitcode, output, salt, after, expected) |
654 |
655 |
655 def _hghave(self, reqs, testtmp): |
656 def _hghave(self, reqs, testtmp): |