mirror of https://github.com/python/cpython
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>
This commit is contained in:
parent
624bda7638
commit
2c1b1e7a07
|
@ -963,7 +963,7 @@ class TestMain(TestCase):
|
||||||
mod = blue / "calx.py"
|
mod = blue / "calx.py"
|
||||||
mod.write_text("FOO = 42", encoding="utf-8")
|
mod.write_text("FOO = 42", encoding="utf-8")
|
||||||
commands = [
|
commands = [
|
||||||
"print(f'{" + var + "=}')" for var in expectations
|
"print(f'^{" + var + "=}')" for var in expectations
|
||||||
] + ["exit()"]
|
] + ["exit()"]
|
||||||
if as_file and as_module:
|
if as_file and as_module:
|
||||||
self.fail("as_file and as_module are mutually exclusive")
|
self.fail("as_file and as_module are mutually exclusive")
|
||||||
|
@ -989,10 +989,10 @@ class TestMain(TestCase):
|
||||||
self.assertEqual(exit_code, 0)
|
self.assertEqual(exit_code, 0)
|
||||||
for var, expected in expectations.items():
|
for var, expected in expectations.items():
|
||||||
with self.subTest(var=var, expected=expected):
|
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))
|
self._assertMatchOK(var, expected, actual=m.group(1))
|
||||||
else:
|
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("Exception", output)
|
||||||
self.assertNotIn("Traceback", output)
|
self.assertNotIn("Traceback", output)
|
||||||
|
@ -1126,4 +1126,4 @@ class TestMain(TestCase):
|
||||||
except subprocess.TimeoutExpired:
|
except subprocess.TimeoutExpired:
|
||||||
process.kill()
|
process.kill()
|
||||||
exit_code = process.wait()
|
exit_code = process.wait()
|
||||||
return "\n".join(output), exit_code
|
return "".join(output), exit_code
|
||||||
|
|
Loading…
Reference in New Issue