https://github.com/python/cpython/commit/ab89f6ec846506a2dc372431cdb5d1e6e71fa27c commit: ab89f6ec846506a2dc372431cdb5d1e6e71fa27c branch: 3.13 author: sobolevn <m...@sobolevn.me> committer: sobolevn <m...@sobolevn.me> date: 2025-04-28T18:00:42Z summary:
[3.13] gh-133054: Skip `test_pyrepl` tests when `cannot use pyrepl` is reported (GH-133055) (#133095) (cherry picked from commit b739ec5ab78ed55367516de7a11e732cb3f1081d) Co-authored-by: Tomas R. <tomas.ro...@gmail.com> files: M Lib/test/test_pyrepl/test_pyrepl.py diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py index 5e46e887912798..e982e0bdd66e45 100644 --- a/Lib/test/test_pyrepl/test_pyrepl.py +++ b/Lib/test/test_pyrepl/test_pyrepl.py @@ -43,6 +43,7 @@ def run_repl( *, cmdline_args: list[str] | None = None, cwd: str | None = None, + skip: bool = False, ) -> tuple[str, int]: temp_dir = None if cwd is None: @@ -50,7 +51,7 @@ def run_repl( cwd = temp_dir.name try: return self._run_repl( - repl_input, env=env, cmdline_args=cmdline_args, cwd=cwd + repl_input, env=env, cmdline_args=cmdline_args, cwd=cwd, skip=skip, ) finally: if temp_dir is not None: @@ -63,6 +64,7 @@ def _run_repl( env: dict | None, cmdline_args: list[str] | None, cwd: str, + skip: bool, ) -> tuple[str, int]: assert pty master_fd, slave_fd = pty.openpty() @@ -119,7 +121,10 @@ def _run_repl( except subprocess.TimeoutExpired: process.kill() exit_code = process.wait() - return "".join(output), exit_code + output = "".join(output) + if skip and "can't use pyrepl" in output: + self.skipTest("pyrepl not available") + return output, exit_code class TestCursorPosition(TestCase): @@ -1082,9 +1087,7 @@ def setUp(self): def test_exposed_globals_in_repl(self): pre = "['__annotations__', '__builtins__'" post = "'__loader__', '__name__', '__package__', '__spec__']" - output, exit_code = self.run_repl(["sorted(dir())", "exit()"]) - if "can't use pyrepl" in output: - self.skipTest("pyrepl not available") + output, exit_code = self.run_repl(["sorted(dir())", "exit()"], skip=True) self.assertEqual(exit_code, 0) # if `__main__` is not a file (impossible with pyrepl) @@ -1136,6 +1139,7 @@ def _run_repl_globals_test(self, expectations, *, as_file=False, as_module=False commands, cmdline_args=[str(mod)], env=clean_env, + skip=True, ) elif as_module: output, exit_code = self.run_repl( @@ -1143,13 +1147,11 @@ def _run_repl_globals_test(self, expectations, *, as_file=False, as_module=False cmdline_args=["-m", "blue.calx"], env=clean_env, cwd=td, + skip=True, ) else: self.fail("Choose one of as_file or as_module") - if "can't use pyrepl" in output: - self.skipTest("pyrepl not available") - self.assertEqual(exit_code, 0) for var, expected in expectations.items(): with self.subTest(var=var, expected=expected): @@ -1187,9 +1189,7 @@ def test_python_basic_repl(self): "exit()\n") env.pop("PYTHON_BASIC_REPL", None) - output, exit_code = self.run_repl(commands, env=env) - if "can\'t use pyrepl" in output: - self.skipTest("pyrepl not available") + output, exit_code = self.run_repl(commands, env=env, skip=True) self.assertEqual(exit_code, 0) self.assertIn("True", output) self.assertNotIn("False", output) @@ -1256,9 +1256,7 @@ def check(output, exitcode): self.assertIn("division by zero", output) self.assertEqual(exitcode, 0) env.pop("PYTHON_BASIC_REPL", None) - output, exit_code = self.run_repl(commands, env=env) - if "can\'t use pyrepl" in output: - self.skipTest("pyrepl not available") + output, exit_code = self.run_repl(commands, env=env, skip=True) check(output, exit_code) env["PYTHON_BASIC_REPL"] = "1" @@ -1296,9 +1294,7 @@ def test_not_wiping_history_file(self): def test_correct_filename_in_syntaxerrors(self): env = os.environ.copy() commands = "a b c\nexit()\n" - output, exit_code = self.run_repl(commands, env=env) - if "can't use pyrepl" in output: - self.skipTest("pyrepl not available") + output, exit_code = self.run_repl(commands, env=env, skip=True) self.assertIn("SyntaxError: invalid syntax", output) self.assertIn("<python-input-0>", output) commands = " b\nexit()\n" @@ -1325,9 +1321,7 @@ def test_proper_tracebacklimit(self): env.pop("PYTHON_BASIC_REPL", None) with self.subTest(set_tracebacklimit=set_tracebacklimit, basic_repl=basic_repl): - output, exit_code = self.run_repl(commands, env=env) - if "can't use pyrepl" in output: - self.skipTest("pyrepl not available") + output, exit_code = self.run_repl(commands, env=env, skip=True) self.assertIn("in x1", output) if set_tracebacklimit: self.assertNotIn("in x2", output) _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com