summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2019-02-23 16:53:10 +0100
committerStefan Behnel <stefan_ml@behnel.de>2019-02-23 16:53:10 +0100
commitb07ee5064d3862cabfb075a1f6c7e6386e1c7ce5 (patch)
tree233c7e5a403fdcd5acdab6d077904652c2f01c33
parent2c0d0882bfcb4a292796639de57e03f7d44d671d (diff)
downloadcython-b07ee5064d3862cabfb075a1f6c7e6386e1c7ce5.tar.gz
Simplify code in time stamper thread and make sure the dup-ed stderr is closed in the end.
-rwxr-xr-xruntests.py59
1 files changed, 31 insertions, 28 deletions
diff --git a/runtests.py b/runtests.py
index d510090e2..711be548f 100755
--- a/runtests.py
+++ b/runtests.py
@@ -2209,6 +2209,11 @@ def time_stamper_thread(interval=10):
Print regular time stamps into the build logs to find slow tests.
@param interval: time interval in seconds
"""
+ if not interval or interval < 0:
+ # Do nothing
+ yield
+ return
+
try:
_xrange = xrange
except NameError:
@@ -2218,35 +2223,33 @@ def time_stamper_thread(interval=10):
import datetime
from time import sleep
- if not interval or interval < 0:
- # Do nothing
+ interval = _xrange(interval * 4)
+ now = datetime.datetime.now
+ stop = False
+
+ # We capture stderr in some places.
+ # => make sure we write to the real (original) stderr of the test runner.
+ stderr = os.dup(2)
+ def write(s):
+ os.write(stderr, s if type(s) is bytes else s.encode('ascii'))
+
+ def time_stamper():
+ while True:
+ for _ in interval:
+ if stop:
+ return
+ sleep(1./4)
+ write('\n#### %s\n' % now())
+
+ thread = threading.Thread(target=time_stamper, name='time_stamper')
+ thread.setDaemon(True) # Py2 ...
+ thread.start()
+ try:
yield
- else:
- interval = _xrange(interval * 4)
- now = datetime.datetime.now
- stop = False
-
- # We capture stderr in some places.
- # => make sure we write to the real (original) stderr of the test runner.
- def write(s, stderr=os.dup(2)):
- os.write(stderr, s if IS_PY2 else s.encode('ascii'))
-
- def time_stamper():
- while True:
- for _ in interval:
- if stop:
- return
- sleep(1./4)
- write('\n#### %s\n' % now())
-
- thread = threading.Thread(target=time_stamper, name='time_stamper')
- thread.setDaemon(True) # Py2 ...
- thread.start()
- try:
- yield
- finally:
- stop = True
- thread.join()
+ finally:
+ stop = True
+ thread.join()
+ os.close(stderr)
def configure_cython(options):