tests/run-tests.py
changeset 36462 5c1cea8a3e60
parent 36461 51a9f0246931
child 36522 c3df20906689
equal deleted inserted replaced
36461:51a9f0246931 36462:5c1cea8a3e60
  1234         super(TTest, self).__init__(path, *args, **kwds)
  1234         super(TTest, self).__init__(path, *args, **kwds)
  1235         if case:
  1235         if case:
  1236             self.name = '%s (case %s)' % (self.name, _strpath(case))
  1236             self.name = '%s (case %s)' % (self.name, _strpath(case))
  1237             self.errpath = b'%s.%s.err' % (self.errpath[:-4], case)
  1237             self.errpath = b'%s.%s.err' % (self.errpath[:-4], case)
  1238             self._tmpname += b'-%s' % case
  1238             self._tmpname += b'-%s' % case
       
  1239         self._have = {}
  1239 
  1240 
  1240     @property
  1241     @property
  1241     def refpath(self):
  1242     def refpath(self):
  1242         return os.path.join(self._testdir, self.bname)
  1243         return os.path.join(self._testdir, self.bname)
  1243 
  1244 
  1273             return exitcode, output
  1274             return exitcode, output
  1274 
  1275 
  1275         return self._processoutput(exitcode, output, salt, after, expected)
  1276         return self._processoutput(exitcode, output, salt, after, expected)
  1276 
  1277 
  1277     def _hghave(self, reqs):
  1278     def _hghave(self, reqs):
       
  1279         allreqs = b' '.join(reqs)
       
  1280         if allreqs in self._have:
       
  1281             return self._have.get(allreqs)
       
  1282 
  1278         # TODO do something smarter when all other uses of hghave are gone.
  1283         # TODO do something smarter when all other uses of hghave are gone.
  1279         runtestdir = os.path.abspath(os.path.dirname(_bytespath(__file__)))
  1284         runtestdir = os.path.abspath(os.path.dirname(_bytespath(__file__)))
  1280         tdir = runtestdir.replace(b'\\', b'/')
  1285         tdir = runtestdir.replace(b'\\', b'/')
  1281         proc = Popen4(b'%s -c "%s/hghave %s"' %
  1286         proc = Popen4(b'%s -c "%s/hghave %s"' %
  1282                       (self._shell, tdir, b' '.join(reqs)),
  1287                       (self._shell, tdir, allreqs),
  1283                       self._testtmp, 0, self._getenv())
  1288                       self._testtmp, 0, self._getenv())
  1284         stdout, stderr = proc.communicate()
  1289         stdout, stderr = proc.communicate()
  1285         ret = proc.wait()
  1290         ret = proc.wait()
  1286         if wifexited(ret):
  1291         if wifexited(ret):
  1287             ret = os.WEXITSTATUS(ret)
  1292             ret = os.WEXITSTATUS(ret)
  1288         if ret == 2:
  1293         if ret == 2:
  1289             print(stdout.decode('utf-8'))
  1294             print(stdout.decode('utf-8'))
  1290             sys.exit(1)
  1295             sys.exit(1)
  1291 
  1296 
  1292         if ret != 0:
  1297         if ret != 0:
       
  1298             self._have[allreqs] = (False, stdout)
  1293             return False, stdout
  1299             return False, stdout
  1294 
  1300 
  1295         if b'slow' in reqs:
  1301         if b'slow' in reqs:
  1296             self._timeout = self._slowtimeout
  1302             self._timeout = self._slowtimeout
       
  1303 
       
  1304         self._have[allreqs] = (True, None)
  1297         return True, None
  1305         return True, None
  1298 
  1306 
  1299     def _iftest(self, args):
  1307     def _iftest(self, args):
  1300         # implements "#if"
  1308         # implements "#if"
  1301         reqs = []
  1309         reqs = []