Mercurial > public > mercurial-scm > hg
comparison tests/run-tests.py @ 21340:fda36de1cb0e
run-tests: establish a class to hold testing state
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 19 Apr 2014 23:07:17 -0700 |
parents | de25e968b4d8 |
children | cb88d4a04f58 |
comparison
equal
deleted
inserted
replaced
21339:de25e968b4d8 | 21340:fda36de1cb0e |
---|---|
1180 results = {'.':[], '!':[], '~': [], 's':[], 'i':[]} | 1180 results = {'.':[], '!':[], '~': [], 's':[], 'i':[]} |
1181 times = [] | 1181 times = [] |
1182 iolock = threading.Lock() | 1182 iolock = threading.Lock() |
1183 abort = False | 1183 abort = False |
1184 | 1184 |
1185 def scheduletests(options, tests): | 1185 def scheduletests(runner, options, tests): |
1186 jobs = options.jobs | 1186 jobs = options.jobs |
1187 done = queue.Queue() | 1187 done = queue.Queue() |
1188 running = 0 | 1188 running = 0 |
1189 count = 0 | 1189 count = 0 |
1190 global abort | 1190 global abort |
1220 running += 1 | 1220 running += 1 |
1221 count += 1 | 1221 count += 1 |
1222 except KeyboardInterrupt: | 1222 except KeyboardInterrupt: |
1223 abort = True | 1223 abort = True |
1224 | 1224 |
1225 def runtests(options, tests): | 1225 def runtests(runner, options, tests): |
1226 try: | 1226 try: |
1227 if INST: | 1227 if INST: |
1228 installhg(options) | 1228 installhg(options) |
1229 _checkhglib("Testing") | 1229 _checkhglib("Testing") |
1230 else: | 1230 else: |
1238 tests.pop(0) | 1238 tests.pop(0) |
1239 if not tests: | 1239 if not tests: |
1240 print "running all tests" | 1240 print "running all tests" |
1241 tests = orig | 1241 tests = orig |
1242 | 1242 |
1243 scheduletests(options, tests) | 1243 scheduletests(runner, options, tests) |
1244 | 1244 |
1245 failed = len(results['!']) | 1245 failed = len(results['!']) |
1246 warned = len(results['~']) | 1246 warned = len(results['~']) |
1247 tested = len(results['.']) + failed + warned | 1247 tested = len(results['.']) + failed + warned |
1248 skipped = len(results['s']) | 1248 skipped = len(results['s']) |
1276 return 80 | 1276 return 80 |
1277 | 1277 |
1278 testtypes = [('.py', PythonTest, '.out'), | 1278 testtypes = [('.py', PythonTest, '.out'), |
1279 ('.t', TTest, '')] | 1279 ('.t', TTest, '')] |
1280 | 1280 |
1281 class TestRunner(object): | |
1282 """Holds context for executing tests. | |
1283 | |
1284 Tests rely on a lot of state. This object holds it for them. | |
1285 """ | |
1286 | |
1281 def main(args, parser=None): | 1287 def main(args, parser=None): |
1288 runner = TestRunner() | |
1289 | |
1282 parser = parser or getparser() | 1290 parser = parser or getparser() |
1283 (options, args) = parseargs(args, parser) | 1291 (options, args) = parseargs(args, parser) |
1284 os.umask(022) | 1292 os.umask(022) |
1285 | 1293 |
1286 checktools() | 1294 checktools() |
1395 vlog("# Using HGTMP", HGTMP) | 1403 vlog("# Using HGTMP", HGTMP) |
1396 vlog("# Using PATH", os.environ["PATH"]) | 1404 vlog("# Using PATH", os.environ["PATH"]) |
1397 vlog("# Using", IMPL_PATH, os.environ[IMPL_PATH]) | 1405 vlog("# Using", IMPL_PATH, os.environ[IMPL_PATH]) |
1398 | 1406 |
1399 try: | 1407 try: |
1400 return runtests(options, tests) or 0 | 1408 return runtests(runner, options, tests) or 0 |
1401 finally: | 1409 finally: |
1402 time.sleep(.1) | 1410 time.sleep(.1) |
1403 cleanup(options) | 1411 cleanup(options) |
1404 | 1412 |
1405 if __name__ == '__main__': | 1413 if __name__ == '__main__': |