@@ -353,7 +353,6 @@ def test_wait_for_session(self):
353
353
"""\
354
354
#!/bin/sh
355
355
cat {}
356
- sleep 0.1
357
356
read input
358
357
echo "arg: $1, remote domain: $QREXEC_REMOTE_DOMAIN, input: $input"
359
358
""" .format (
@@ -371,20 +370,22 @@ def test_wait_for_session(self):
371
370
user = getpass .getuser ()
372
371
373
372
target = self .execute_qubesrpc ("qubes.Service+arg" , "domX" )
373
+ self .assertEqual (target .recv_message (), (
374
+ qrexec .MSG_DATA_STDOUT ,
375
+ (
376
+ b"wait for session: arg: , remote domain: domX, user: "
377
+ + user .encode ("ascii" , "strict" )
378
+ + b"\n "
379
+ ),
380
+ ))
374
381
target .send_message (qrexec .MSG_DATA_STDIN , b"stdin data\n " )
375
- target .send_message (qrexec .MSG_DATA_STDIN , b"" )
382
+ # Do not send EOF. Shell read doesn't need it, and this checks that
383
+ # qrexec does not wait for EOF on stdin before sending the exit code
384
+ # from the remote process.
376
385
messages = target .recv_all_messages ()
377
386
self .assertListEqual (
378
387
util .sort_messages (messages ),
379
388
[
380
- (
381
- qrexec .MSG_DATA_STDOUT ,
382
- (
383
- b"wait for session: arg: , remote domain: domX, user: "
384
- + user .encode ()
385
- + b"\n "
386
- ),
387
- ),
388
389
(
389
390
qrexec .MSG_DATA_STDOUT ,
390
391
b"arg: arg, remote domain: domX, input: stdin data\n " ,
0 commit comments