tests/run-tests.py
changeset 21380 de6ea36ca9f7
parent 21379 ab1a95270a50
child 21381 9aa5784992d4
equal deleted inserted replaced
21379:ab1a95270a50 21380:de6ea36ca9f7
    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):