From e5293c7530f195a57f08dee2e6b9c17c7580a532 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@collabora.com> Date: Wed, 5 Aug 2020 14:58:26 +0100 Subject: [PATCH] tests: Test adverb --pass-fd Signed-off-by: Simon McVittie <smcv@collabora.com> --- tests/adverb.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/adverb.py b/tests/adverb.py index 1490ca235..09d9d6a06 100755 --- a/tests/adverb.py +++ b/tests/adverb.py @@ -83,6 +83,30 @@ class TestAdverb(BaseTest): (128 + signal.SIGTERM, -signal.SIGTERM), ) + def test_fd_passthrough(self) -> None: + read_end, write_end = os.pipe2(os.O_CLOEXEC) + + proc = subprocess.Popen( + self.adverb + [ + '--pass-fd=%d' % write_end, + '--', + 'sh', '-euc', 'echo hello >&%d' % write_end, + ], + pass_fds=[write_end], + stdout=2, + stderr=2, + universal_newlines=True, + ) + + try: + os.close(write_end) + + with os.fdopen(read_end, 'rb') as reader: + self.assertEqual(reader.read(), b'hello\n') + finally: + proc.wait() + self.assertEqual(proc.returncode, 0) + def tearDown(self) -> None: super().tearDown() -- GitLab