selftest/process_test: Fix output changing in new python version

On older versions apparently upon child termination due to SIGINT
subprocess.poll() returned 1. On new python versions (such as 3.8.2),
-2 is returned, according to documentation:

A negative value -N indicates that the child was terminated by signal N (Unix only).

Let's catch the SIGINT in the child process and exit with a known 42
value to fix different behavior.

Change-Id: I7949ff2b435e91e890061e6840b0f411f8b0a817
This commit is contained in:
Pau Espin 2020-05-06 17:57:33 +02:00
parent afa2fc3aa6
commit fa653e4136
2 changed files with 9 additions and 6 deletions

View File

@ -13,21 +13,18 @@ foo stderr
run foo(pid=[PID]): Terminating (SIGINT)
run foo(pid=[PID]): DBG: Cleanup
run foo(pid=[PID]): Terminated {rc=1}
result: 1
run foo(pid=[PID]): Terminated {rc=42}
result: 42
stdout:
(launched: [DATETIME])
foo stdout
[[$0], 'arg1', 'arg2']
SIGINT received
Exiting (stdout)
stderr:
(launched: [DATETIME])
foo stderr
Traceback (most recent call last):
File [$0], line [LINE], in <module>
time.sleep(1)
KeyboardInterrupt
Exiting (stderr)
done.

View File

@ -3,7 +3,13 @@
import sys
import atexit
import time
import signal
def signal_handler(sig, frame):
print('SIGINT received')
sys.exit(42)
signal.signal(signal.SIGINT, signal_handler)
sys.stdout.write('foo stdout\n')
sys.stderr.write('foo stderr\n')