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.
This commit is contained in:
stijn 2019-03-31 09:47:11 +02:00 committed by Damien George
parent 3dda964785
commit d89ce2ed1d
1 changed files with 10 additions and 1 deletions

View File

@ -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: