diff options
| author | Ross Burton <ross.burton@arm.com> | 2025-06-05 17:35:57 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-06-09 17:43:41 +0100 |
| commit | ef6748323f7aefebce8baa2ebb609d8ba0900f4c (patch) | |
| tree | 38f54d6a0855df9ab3da0efff4167742e31e4979 | |
| parent | dfaff44d8a7f04cb7cd7f2b3d16a924ed0f49061 (diff) | |
| download | poky-ef6748323f7aefebce8baa2ebb609d8ba0900f4c.tar.gz | |
oeqa/selftest: add test case for oeqa.utils.subprocesstweak
This class has a monkey-patched CalledProcessError instance that extends
the __str__ method. Add a test case to ensure that it behaves as
expected.
(From OE-Core rev: 3c0e7b537eac62fced196e82ede781d88e593a69)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/lib/oeqa/selftest/cases/liboe.py | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/meta/lib/oeqa/selftest/cases/liboe.py b/meta/lib/oeqa/selftest/cases/liboe.py index d5ffffdcb4..930354c931 100644 --- a/meta/lib/oeqa/selftest/cases/liboe.py +++ b/meta/lib/oeqa/selftest/cases/liboe.py | |||
| @@ -9,11 +9,11 @@ from oeqa.utils.commands import get_bb_var, get_bb_vars, bitbake, runCmd | |||
| 9 | import oe.path | 9 | import oe.path |
| 10 | import os | 10 | import os |
| 11 | 11 | ||
| 12 | class LibOE(OESelftestTestCase): | 12 | class CopyTreeTests(OESelftestTestCase): |
| 13 | 13 | ||
| 14 | @classmethod | 14 | @classmethod |
| 15 | def setUpClass(cls): | 15 | def setUpClass(cls): |
| 16 | super(LibOE, cls).setUpClass() | 16 | super().setUpClass() |
| 17 | cls.tmp_dir = get_bb_var('TMPDIR') | 17 | cls.tmp_dir = get_bb_var('TMPDIR') |
| 18 | 18 | ||
| 19 | def test_copy_tree_special(self): | 19 | def test_copy_tree_special(self): |
| @@ -102,3 +102,36 @@ class LibOE(OESelftestTestCase): | |||
| 102 | self.assertEqual(dstcnt, len(testfiles), "Number of files in dst (%s) differs from number of files in src(%s)." % (dstcnt, srccnt)) | 102 | self.assertEqual(dstcnt, len(testfiles), "Number of files in dst (%s) differs from number of files in src(%s)." % (dstcnt, srccnt)) |
| 103 | 103 | ||
| 104 | oe.path.remove(testloc) | 104 | oe.path.remove(testloc) |
| 105 | |||
| 106 | class SubprocessTests(OESelftestTestCase): | ||
| 107 | |||
| 108 | def test_subprocess_tweak(self): | ||
| 109 | """ | ||
| 110 | Test that the string representation of | ||
| 111 | oeqa.utils.subprocesstweak.OETestCalledProcessError includes stdout and | ||
| 112 | stderr, as expected. | ||
| 113 | """ | ||
| 114 | script = """ | ||
| 115 | #! /bin/sh | ||
| 116 | echo Ivn fgqbhg | tr '[a-zA-Z]' '[n-za-mN-ZA-M]' | ||
| 117 | echo Ivn fgqree | tr '[a-zA-Z]' '[n-za-mN-ZA-M]' >&2 | ||
| 118 | exit 42 | ||
| 119 | """ | ||
| 120 | |||
| 121 | import subprocess | ||
| 122 | import unittest.mock | ||
| 123 | from oeqa.utils.subprocesstweak import OETestCalledProcessError | ||
| 124 | |||
| 125 | with self.assertRaises(OETestCalledProcessError) as cm: | ||
| 126 | with unittest.mock.patch("subprocess.CalledProcessError", OETestCalledProcessError): | ||
| 127 | subprocess.run(["bash", "-"], input=script, text=True, capture_output=True, check=True) | ||
| 128 | |||
| 129 | e = cm.exception | ||
| 130 | self.assertEqual(e.returncode, 42) | ||
| 131 | self.assertEqual("Via stdout\n", e.stdout) | ||
| 132 | self.assertEqual("Via stderr\n", e.stderr) | ||
| 133 | |||
| 134 | string = str(e) | ||
| 135 | self.assertIn("exit status 42", string) | ||
| 136 | self.assertIn("Standard Output: Via stdout", string) | ||
| 137 | self.assertIn("Standard Error: Via stderr", string) | ||
