From 915aba9b25564e2dcad7f1233e243ef8181f3e02 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Mon, 20 Jan 2025 08:17:56 +0100 Subject: [PATCH] support/testing/utils: check patch on stdin to get-developers Since commit d10d22221f93 (utils/get-developers: read patch from stdin when it's not a tty), get-developers accepts to read a patch fromn its stdin when it is not a tty. Add a test for this. Reported-by: Julien Olivain Signed-off-by: Yann E. MORIN Signed-off-by: Julien Olivain (cherry picked from commit 29e1af84308b80d83a8f45ba934fbb3e92d55bf6) Signed-off-by: Peter Korsgaard --- .../tests/utils/test_get_developers.py | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/support/testing/tests/utils/test_get_developers.py b/support/testing/tests/utils/test_get_developers.py index 701c3acb1a..195e421332 100644 --- a/support/testing/tests/utils/test_get_developers.py +++ b/support/testing/tests/utils/test_get_developers.py @@ -13,26 +13,32 @@ import unittest import infra -def call_script(args, env, cwd): +def call_script(args, env, cwd, stdin_data=None): """Call a script and return stdout and stderr as lists and the exit code.""" - # We need stdin to be a tty, not just a pipe or whatever - m_tty, s_tty = os.openpty() + if stdin_data is None: + # We need stdin to be a tty, not just a pipe or whatever + m_tty, s_tty = os.openpty() + com_opts = dict() + else: + s_tty = subprocess.PIPE + com_opts = dict([("input", stdin_data)]) proc = subprocess.Popen(args, cwd=cwd, stdin=s_tty, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env, universal_newlines=True) - out, err = proc.communicate() - os.close(s_tty) - os.close(m_tty) + out, err = proc.communicate(**com_opts) + if stdin_data is None: + os.close(s_tty) + os.close(m_tty) return out.splitlines(), err.splitlines(), proc.returncode -def call_get_developers(cmd, args, env, cwd, developers_content): +def call_get_developers(cmd, args, env, cwd, developers_content, stdin_data=None): """Call get-developers overrinding the default DEVELOPERS file.""" with tempfile.NamedTemporaryFile(buffering=0) as developers_file: developers_file.write(developers_content) - return call_script([cmd, "-d", developers_file.name] + args, env, cwd) + return call_script([cmd, "-d", developers_file.name] + args, env, cwd, stdin_data) class TestGetDevelopers(unittest.TestCase): @@ -174,3 +180,9 @@ class TestGetDevelopers(unittest.TestCase): self.assertIn('git send-email --to buildroot@buildroot.org --cc "dev1"', out) self.assertEqual(rc, 0) self.assertEqual(len(err), 0) + with open(abs_file, "r") as fd: + patch_data = fd.read() + out, err, rc = call_get_developers("./utils/get-developers", [], self.WITH_EMPTY_PATH, topdir, developers, patch_data) + self.assertIn('git send-email --to buildroot@buildroot.org --cc "dev1"', out) + self.assertEqual(rc, 0) + self.assertEqual(len(err), 0)