diff options
author | Sam Gross <colesbury@gmail.com> | 2024-07-23 13:17:13 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-23 13:17:13 (GMT) |
commit | 2c1b1e7a07eba0138b9858c6f2bea3cae9af0808 (patch) | |
tree | b85421160726237e9fc377e310561f90c6c33996 /Lib/test/test_pyrepl/test_pyrepl.py | |
parent | 624bda76386efd8eecf73c4ad06f997b9b25f07f (diff) | |
download | cpython-2c1b1e7a07eba0138b9858c6f2bea3cae9af0808.zip cpython-2c1b1e7a07eba0138b9858c6f2bea3cae9af0808.tar.gz cpython-2c1b1e7a07eba0138b9858c6f2bea3cae9af0808.tar.bz2 |
gh-121973: Fix flaky test_pyrepl tests (GH-122140)
This fixes the flakiness in:
* test_inspect_keeps_globals_from_inspected_file
* test_inspect_keeps_globals_from_inspected_module
The output already includes newlines. Adding newlines for every entry in
the output list introduces non-determinism because it added '\n' in
places where stdout is flushed or some buffer becomes full.
The regex also needed to be updated because pyrepl includes control
characters -- the visible output on each line doesn't immediately follow
a newline character.
Co-authored-by: Ćukasz Langa <lukasz@langa.pl>
Diffstat (limited to 'Lib/test/test_pyrepl/test_pyrepl.py')
-rw-r--r-- | Lib/test/test_pyrepl/test_pyrepl.py | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py index e3feeeb..3a1bace 100644 --- a/Lib/test/test_pyrepl/test_pyrepl.py +++ b/Lib/test/test_pyrepl/test_pyrepl.py @@ -963,7 +963,7 @@ class TestMain(TestCase): mod = blue / "calx.py" mod.write_text("FOO = 42", encoding="utf-8") commands = [ - "print(f'{" + var + "=}')" for var in expectations + "print(f'^{" + var + "=}')" for var in expectations ] + ["exit()"] if as_file and as_module: self.fail("as_file and as_module are mutually exclusive") @@ -989,10 +989,10 @@ class TestMain(TestCase): self.assertEqual(exit_code, 0) for var, expected in expectations.items(): with self.subTest(var=var, expected=expected): - if m := re.search(rf"[\r\n]{var}=(.+?)[\r\n]", output): + if m := re.search(rf"\^{var}=(.+?)[\r\n]", output): self._assertMatchOK(var, expected, actual=m.group(1)) else: - self.fail(f"{var}= not found in output") + self.fail(f"{var}= not found in output: {output!r}\n\n{output}") self.assertNotIn("Exception", output) self.assertNotIn("Traceback", output) @@ -1126,4 +1126,4 @@ class TestMain(TestCase): except subprocess.TimeoutExpired: process.kill() exit_code = process.wait() - return "\n".join(output), exit_code + return "".join(output), exit_code |