*,
cmdline_args: list[str] | None = None,
cwd: str | None = None,
+ skip: bool = False,
) -> tuple[str, int]:
temp_dir = None
if cwd is None:
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:
env: dict | None,
cmdline_args: list[str] | None,
cwd: str,
+ skip: bool,
) -> tuple[str, int]:
assert pty
master_fd, slave_fd = pty.openpty()
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):
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)
commands,
cmdline_args=[str(mod)],
env=clean_env,
+ skip=True,
)
elif as_module:
output, exit_code = self.run_repl(
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):
"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)
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"
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"
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)