(self, pdb_args, commands,
expected_returncode=0,
extra_env=None)
| 3531 | @unittest.skipIf(sys.flags.safe_path, |
| 3532 | 'PYTHONSAFEPATH changes default sys.path') |
| 3533 | def _run_pdb(self, pdb_args, commands, |
| 3534 | expected_returncode=0, |
| 3535 | extra_env=None): |
| 3536 | self.addCleanup(os_helper.rmtree, '__pycache__') |
| 3537 | cmd = [sys.executable, '-m', 'pdb'] + pdb_args |
| 3538 | if extra_env is not None: |
| 3539 | env = os.environ | extra_env |
| 3540 | else: |
| 3541 | env = os.environ |
| 3542 | with subprocess.Popen( |
| 3543 | cmd, |
| 3544 | stdout=subprocess.PIPE, |
| 3545 | stdin=subprocess.PIPE, |
| 3546 | stderr=subprocess.PIPE, |
| 3547 | env = {**env, 'PYTHONIOENCODING': 'utf-8'} |
| 3548 | ) as proc: |
| 3549 | stdout, stderr = proc.communicate(str.encode(commands)) |
| 3550 | stdout = bytes.decode(stdout) if isinstance(stdout, bytes) else stdout |
| 3551 | stderr = bytes.decode(stderr) if isinstance(stderr, bytes) else stderr |
| 3552 | self.assertEqual( |
| 3553 | proc.returncode, |
| 3554 | expected_returncode, |
| 3555 | f"Unexpected return code\nstdout: {stdout}\nstderr: {stderr}" |
| 3556 | ) |
| 3557 | return stdout, stderr |
| 3558 | |
| 3559 | def run_pdb_script(self, script, commands, |
| 3560 | expected_returncode=0, |
no test coverage detected