summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstijn <stijn@ignitron.net>2019-03-31 09:47:11 +0200
committerDamien George <damien.p.george@gmail.com>2019-04-04 15:24:29 +1100
commitd89ce2ed1d4d2bf2ac3e273163af1e69603d9780 (patch)
treea4dd8a63f825f4123509ae0946f93cecba7bf958
parent3dda9647855b6e7ca265d77027d8eefc143a74b9 (diff)
tests/run-tests: Ignore exception in process kill when ending repl test.
When running Linux on WSL, Popen.kill() can raise a ProcessLookupError if the process does not exist anymore, which can happen here since the previous statement already tries to close the process by sending Ctrl-D to the running repl. This doesn't seem to be a problem on other OSes, so just swallow the exception silently since it indicates the process has been closed already, which after all is what we want.
-rwxr-xr-xtests/run-tests11
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/run-tests b/tests/run-tests
index bf5c97c2b..9f74c1cfc 100755
--- a/tests/run-tests
+++ b/tests/run-tests
@@ -103,7 +103,16 @@ def run_micropython(pyb, args, test_file, is_special=False):
banner = get(True)
output_mupy = banner + b''.join(send_get(line) for line in f)
send_get(b'\x04') # exit the REPL, so coverage info is saved
- p.kill()
+ # At this point the process might have exited already, but trying to
+ # kill it 'again' normally doesn't result in exceptions as Python and/or
+ # the OS seem to try to handle this nicely. When running Linux on WSL
+ # though, the situation differs and calling Popen.kill after the process
+ # terminated results in a ProcessLookupError. Just catch that one here
+ # since we just want the process to be gone and that's the case.
+ try:
+ p.kill()
+ except ProcessLookupError:
+ pass
os.close(master)
os.close(slave)
else: