Show More
@@ -64,6 +64,7 b' import tempfile' | |||||
64 | import threading |
|
64 | import threading | |
65 | import time |
|
65 | import time | |
66 | import unittest |
|
66 | import unittest | |
|
67 | import uuid | |||
67 | import xml.dom.minidom as minidom |
|
68 | import xml.dom.minidom as minidom | |
68 |
|
69 | |||
69 | try: |
|
70 | try: | |
@@ -1070,6 +1071,8 b' class Test(unittest.TestCase):' | |||||
1070 | env["HGENCODINGMODE"] = "strict" |
|
1071 | env["HGENCODINGMODE"] = "strict" | |
1071 | env["HGHOSTNAME"] = "test-hostname" |
|
1072 | env["HGHOSTNAME"] = "test-hostname" | |
1072 | env['HGIPV6'] = str(int(self._useipv6)) |
|
1073 | env['HGIPV6'] = str(int(self._useipv6)) | |
|
1074 | if 'HGCATAPULTSERVERPIPE' not in env: | |||
|
1075 | env['HGCATAPULTSERVERPIPE'] = '/dev/null' | |||
1073 |
|
1076 | |||
1074 | extraextensions = [] |
|
1077 | extraextensions = [] | |
1075 | for opt in self._extraconfigopts: |
|
1078 | for opt in self._extraconfigopts: | |
@@ -1344,6 +1347,20 b' class TTest(Test):' | |||||
1344 | script.append(b'%s %d 0\n' % (salt, line)) |
|
1347 | script.append(b'%s %d 0\n' % (salt, line)) | |
1345 | else: |
|
1348 | else: | |
1346 | script.append(b'echo %s %d $?\n' % (salt, line)) |
|
1349 | script.append(b'echo %s %d $?\n' % (salt, line)) | |
|
1350 | active = [] | |||
|
1351 | session = str(uuid.uuid4()) | |||
|
1352 | if PYTHON3: | |||
|
1353 | session = session.encode('ascii') | |||
|
1354 | def toggletrace(cmd): | |||
|
1355 | quoted = shellquote(cmd.strip()).replace(b'\\', b'\\\\') | |||
|
1356 | if active: | |||
|
1357 | script.append( | |||
|
1358 | b'echo END %s %s >> "$HGCATAPULTSERVERPIPE"\n' % ( | |||
|
1359 | session, active[0])) | |||
|
1360 | script.append( | |||
|
1361 | b'echo START %s %s >> "$HGCATAPULTSERVERPIPE"\n' % ( | |||
|
1362 | session, quoted)) | |||
|
1363 | active[0:] = [quoted] | |||
1347 |
|
1364 | |||
1348 | script = [] |
|
1365 | script = [] | |
1349 |
|
1366 | |||
@@ -1371,6 +1388,29 b' class TTest(Test):' | |||||
1371 | script.append(b'alias hg="%s"\n' % self._hgcommand) |
|
1388 | script.append(b'alias hg="%s"\n' % self._hgcommand) | |
1372 | if os.getenv('MSYSTEM'): |
|
1389 | if os.getenv('MSYSTEM'): | |
1373 | script.append(b'alias pwd="pwd -W"\n') |
|
1390 | script.append(b'alias pwd="pwd -W"\n') | |
|
1391 | ||||
|
1392 | if os.getenv('HGCATAPULTSERVERPIPE'): | |||
|
1393 | # Kludge: use a while loop to keep the pipe from getting | |||
|
1394 | # closed by our echo commands. The still-running file gets | |||
|
1395 | # reaped at the end of the script, which causes the while | |||
|
1396 | # loop to exit and closes the pipe. Sigh. | |||
|
1397 | script.append( | |||
|
1398 | b'rtendtracing() {\n' | |||
|
1399 | b' echo END %(session)s %(name)s >> $HGCATAPULTSERVERPIPE\n' | |||
|
1400 | b' rm -f "$TESTTMP/.still-running"\n' | |||
|
1401 | b'}\n' | |||
|
1402 | b'trap "rtendtracing" 0\n' | |||
|
1403 | b'touch "$TESTTMP/.still-running"\n' | |||
|
1404 | b'while [ -f "$TESTTMP/.still-running" ]; do sleep 1; done ' | |||
|
1405 | b'> $HGCATAPULTSERVERPIPE &\n' | |||
|
1406 | b'HGCATAPULTSESSION=%(session)s ; export HGCATAPULTSESSION\n' | |||
|
1407 | b'echo START %(session)s %(name)s >> $HGCATAPULTSERVERPIPE\n' | |||
|
1408 | % { | |||
|
1409 | 'name': self.name, | |||
|
1410 | 'session': session, | |||
|
1411 | } | |||
|
1412 | ) | |||
|
1413 | ||||
1374 | if self._case: |
|
1414 | if self._case: | |
1375 | casestr = b'#'.join(self._case) |
|
1415 | casestr = b'#'.join(self._case) | |
1376 | if isinstance(self._case, str): |
|
1416 | if isinstance(self._case, str): | |
@@ -1436,10 +1476,12 b' class TTest(Test):' | |||||
1436 | prepos = pos |
|
1476 | prepos = pos | |
1437 | pos = n |
|
1477 | pos = n | |
1438 | addsalt(n, False) |
|
1478 | addsalt(n, False) | |
1439 |
cmd = l[4:] |
|
1479 | rawcmd = l[4:] | |
|
1480 | cmd = rawcmd.split() | |||
|
1481 | toggletrace(rawcmd) | |||
1440 | if len(cmd) == 2 and cmd[0] == b'cd': |
|
1482 | if len(cmd) == 2 and cmd[0] == b'cd': | |
1441 | l = b' $ cd %s || exit 1\n' % cmd[1] |
|
1483 | l = b' $ cd %s || exit 1\n' % cmd[1] | |
1442 |
script.append( |
|
1484 | script.append(rawcmd) | |
1443 | elif l.startswith(b' > '): # continuations |
|
1485 | elif l.startswith(b' > '): # continuations | |
1444 | after.setdefault(prepos, []).append(l) |
|
1486 | after.setdefault(prepos, []).append(l) | |
1445 | script.append(l[4:]) |
|
1487 | script.append(l[4:]) | |
@@ -1458,7 +1500,6 b' class TTest(Test):' | |||||
1458 | if skipping is not None: |
|
1500 | if skipping is not None: | |
1459 | after.setdefault(pos, []).append(' !!! missing #endif\n') |
|
1501 | after.setdefault(pos, []).append(' !!! missing #endif\n') | |
1460 | addsalt(n + 1, False) |
|
1502 | addsalt(n + 1, False) | |
1461 |
|
||||
1462 | return salt, script, after, expected |
|
1503 | return salt, script, after, expected | |
1463 |
|
1504 | |||
1464 | def _processoutput(self, exitcode, output, salt, after, expected): |
|
1505 | def _processoutput(self, exitcode, output, salt, after, expected): |
General Comments 0
You need to be logged in to leave comments.
Login now