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.
pull/4676/head
stijn 2019-03-31 09:47:11 +02:00 zatwierdzone przez Damien George
rodzic 3dda964785
commit d89ce2ed1d
1 zmienionych plików z 10 dodań i 1 usunięć

Wyświetl plik

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