diff tests/run-tests.py @ 49217:13dfad0f9f7a

branching: merge stable into default
author Raphaël Gomès <rgomes@octobus.net>
date Wed, 25 May 2022 13:28:24 +0200
parents ea98850a136e 8d31ef3017c9
children cd51d4957b28
line wrap: on
line diff
--- a/tests/run-tests.py	Tue May 24 19:09:24 2022 +0400
+++ b/tests/run-tests.py	Wed May 25 13:28:24 2022 +0200
@@ -2505,29 +2505,33 @@
         done = queue.Queue()
         running = 0
 
+        channels_lock = threading.Lock()
         channels = [""] * self._jobs
 
         def job(test, result):
-            for n, v in enumerate(channels):
-                if not v:
-                    channel = n
-                    break
-            else:
-                raise ValueError('Could not find output channel')
-            channels[channel] = "=" + test.name[5:].split(".")[0]
+            with channels_lock:
+                for n, v in enumerate(channels):
+                    if not v:
+                        channel = n
+                        break
+                else:
+                    raise ValueError('Could not find output channel')
+                channels[channel] = "=" + test.name[5:].split(".")[0]
+
+            r = None
             try:
                 test(result)
-                done.put(None)
             except KeyboardInterrupt:
                 pass
             except:  # re-raises
-                done.put(('!', test, 'run-test raised an error, see traceback'))
+                r = ('!', test, 'run-test raised an error, see traceback')
                 raise
             finally:
                 try:
                     channels[channel] = ''
                 except IndexError:
                     pass
+                done.put(r)
 
         def stat():
             count = 0