support/testing/utils: check patch on stdin to get-developers

Since commit d10d22221f (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 <ju.o@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
Yann E. MORIN
2025-01-20 08:17:56 +01:00
committed by Julien Olivain
parent 3778f704cd
commit 29e1af8430

View File

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