* [Buildroot] [PATCH 1/2] support/testing/utils: fix get-developers test without a tty
2025-01-20 7:17 [Buildroot] [PATCH 0/2] support/tests: fix get-developers test when stdini for tests is not a tty yann.morin
@ 2025-01-20 7:17 ` yann.morin
2025-01-31 16:47 ` Peter Korsgaard
2025-01-20 7:17 ` [Buildroot] [PATCH 2/2] support/testing.utils: check patch on stdin to get-developers yann.morin
2025-01-20 20:20 ` [Buildroot] [PATCH 0/2] support/tests: fix get-developers test when stdini for tests is not a tty Julien Olivain
2 siblings, 1 reply; 6+ messages in thread
From: yann.morin @ 2025-01-20 7:17 UTC (permalink / raw)
To: buildroot; +Cc: yann.morin, Julien Olivain
From: "Yann E. MORIN" <yann.morin@orange.com>
get-developers will check its stdin to decide whether it is a tty or
not, and behave differently whether it is or not. So, when we run the
tests, we need an actual tty.
However, when running in a CI pipeline, like on Gitlab-CI, there is no
tty available on stdin.
Fake one. We don't need anything too fancy, so just a slave pty will
suffice.
Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/8830671800
Fixes: d10d22221f93 (utils/get-developers: read patch from stdin when
it's not a tty)
Reported-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
---
support/testing/tests/utils/test_get_developers.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/support/testing/tests/utils/test_get_developers.py b/support/testing/tests/utils/test_get_developers.py
index 3ec4edeadd..701c3acb1a 100644
--- a/support/testing/tests/utils/test_get_developers.py
+++ b/support/testing/tests/utils/test_get_developers.py
@@ -15,10 +15,16 @@ import infra
def call_script(args, env, cwd):
"""Call a script and return stdout and stderr as lists and the exit code."""
- proc = subprocess.Popen(args, cwd=cwd, stdout=subprocess.PIPE,
+ # We need stdin to be a tty, not just a pipe or whatever
+ m_tty, s_tty = os.openpty()
+ 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)
return out.splitlines(), err.splitlines(), proc.returncode
--
2.34.1
____________________________________________________________________________________________________________
Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread* [Buildroot] [PATCH 2/2] support/testing.utils: check patch on stdin to get-developers
2025-01-20 7:17 [Buildroot] [PATCH 0/2] support/tests: fix get-developers test when stdini for tests is not a tty yann.morin
2025-01-20 7:17 ` [Buildroot] [PATCH 1/2] support/testing/utils: fix get-developers test without " yann.morin
@ 2025-01-20 7:17 ` yann.morin
2025-01-31 16:47 ` Peter Korsgaard
2025-01-20 20:20 ` [Buildroot] [PATCH 0/2] support/tests: fix get-developers test when stdini for tests is not a tty Julien Olivain
2 siblings, 1 reply; 6+ messages in thread
From: yann.morin @ 2025-01-20 7:17 UTC (permalink / raw)
To: buildroot; +Cc: yann.morin, Julien Olivain
From: "Yann E. MORIN" <yann.morin@orange.com>
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 <ju.o@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
---
.../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)
--
2.34.1
____________________________________________________________________________________________________________
Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread