diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -1778,10 +1778,11 @@ class TestSuite(unittest.TestSuite): except: # re-raises done.put(('!', test, 'run-test raised an error, see traceback')) raise - try: - channels[channel] = '' - except IndexError: - pass + finally: + try: + channels[channel] = '' + except IndexError: + pass def stat(): count = 0 diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t --- a/tests/test-run-tests.t +++ b/tests/test-run-tests.t @@ -903,6 +903,30 @@ support for bisecting failed tests autom $ cd .. +Test a broken #if statement doesn't break run-tests threading. +============================================================== + $ mkdir broken + $ cd broken + $ cat > test-broken.t < true + > #if notarealhghavefeature + > $ false + > #endif + > EOF + $ for f in 1 2 3 4 ; do + > cat > test-works-$f.t < This is test case $f + > $ sleep 1 + > EOF + > done + $ rt -j 2 + .... + # Ran 5 tests, 0 skipped, 0 warned, 0 failed. + skipped: unknown feature: notarealhghavefeature + + $ cd .. + $ rm -rf broken + Test cases in .t files ====================== $ mkdir cases