summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pyrepl/test_pyrepl.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-07-23 13:57:24 (GMT)
committerGitHub <noreply@github.com>2024-07-23 13:57:24 (GMT)
commit214b430fafc49f9977c251178c61794b4caad347 (patch)
tree4f058f8b1f1bb364cc993ec3113239e2560fef70 /Lib/test/test_pyrepl/test_pyrepl.py
parentae9e02c5083b59d171a18dfe77600ddd98f4b46b (diff)
downloadcpython-214b430fafc49f9977c251178c61794b4caad347.zip
cpython-214b430fafc49f9977c251178c61794b4caad347.tar.gz
cpython-214b430fafc49f9977c251178c61794b4caad347.tar.bz2
[3.13] gh-121973: Fix flaky test_pyrepl tests (GH-122140) (GH-122173)
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. (cherry picked from commit 2c1b1e7a07eba0138b9858c6f2bea3cae9af0808) Co-authored-by: Sam Gross <colesbury@gmail.com> 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.py8
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