Cover literal argv handling, explicit shell use, subprocess exit status, and exec failure wrapping.
AI-Generated: Claude Opus 4.6 Reviewed-by: Daniel Turull <[email protected]> Signed-off-by: Anders Heimer <[email protected]> --- meta/lib/oeqa/selftest/cases/oelib/patch.py | 45 +++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 meta/lib/oeqa/selftest/cases/oelib/patch.py diff --git a/meta/lib/oeqa/selftest/cases/oelib/patch.py b/meta/lib/oeqa/selftest/cases/oelib/patch.py new file mode 100644 index 0000000000..4cbfef4ce6 --- /dev/null +++ b/meta/lib/oeqa/selftest/cases/oelib/patch.py @@ -0,0 +1,45 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +import sys +from unittest.case import TestCase + +import oe.patch + + +class TestRunCmd(TestCase): + def test_runcmd_preserves_argv_elements(self): + output = oe.patch.runcmd([ + sys.executable, + "-c", + "import sys; print(sys.argv[1])", + "value with spaces;$(false)*", + ]) + self.assertEqual(output, "value with spaces;$(false)*\n") + + def test_runcmd_allows_explicit_shell(self): + output = oe.patch.runcmd([ + "sh", "-c", 'printf "%s" "$1"', "sh", "shell value", + ]) + self.assertEqual(output, "shell value") + + def test_runcmd_reports_exit_status(self): + with self.assertRaises(oe.patch.CmdError) as ctx: + oe.patch.runcmd([ + sys.executable, + "-c", + "raise SystemExit(7)", + ]) + + self.assertEqual(ctx.exception.status, 7) + + def test_runcmd_wraps_exec_failure(self): + with self.assertRaises(oe.patch.CmdError) as ctx: + oe.patch.runcmd([ + "/definitely-not-an-existing-executable", + ]) + + self.assertEqual(ctx.exception.status, 127)
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#239395): https://lists.openembedded.org/g/openembedded-core/message/239395 Mute This Topic: https://lists.openembedded.org/mt/119940613/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
