|
9 | 9 | import oe.path
|
10 | 10 | import os
|
11 | 11 |
|
12 |
| -class LibOE(OESelftestTestCase): |
| 12 | +class CopyTreeTests(OESelftestTestCase): |
13 | 13 |
|
14 | 14 | @classmethod
|
15 | 15 | def setUpClass(cls):
|
@@ -102,3 +102,36 @@ def touchfile(tf):
|
102 | 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 | 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) |
0 commit comments