tests/run-tests.py
changeset 21453 aaf52b78327e
parent 21452 1517c0461b75
child 21454 046587aa1c8a
equal deleted inserted replaced
21452:1517c0461b75 21453:aaf52b78327e
   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