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 = [] |