◐ Shell
clean mode source ↗

[3.9] bpo-42384: pdb: correctly populate sys.path[0] (GH-23338) by hexagonrecursion · Pull Request #24321 · python/cpython

Expand Up @@ -1661,6 +1661,48 @@ def test_errors_in_command(self): '(Pdb) ', ])

def test_issue42384(self): '''When running `python foo.py` sys.path[0] is an absolute path. `python -m pdb foo.py` should behave the same''' script = textwrap.dedent(""" import sys print('sys.path[0] is', sys.path[0]) """) commands = 'c\nq'
with support.temp_cwd() as cwd: expected = f'(Pdb) sys.path[0] is {os.path.realpath(cwd)}'
stdout, stderr = self.run_pdb_script(script, commands)
self.assertEqual(stdout.split('\n')[2].rstrip('\r'), expected)
@support.skip_unless_symlink def test_issue42384_symlink(self): '''When running `python foo.py` sys.path[0] resolves symlinks. `python -m pdb foo.py` should behave the same''' script = textwrap.dedent(""" import sys print('sys.path[0] is', sys.path[0]) """) commands = 'c\nq'
with support.temp_cwd() as cwd: cwd = os.path.realpath(cwd) dir_one = os.path.join(cwd, 'dir_one') dir_two = os.path.join(cwd, 'dir_two') expected = f'(Pdb) sys.path[0] is {dir_one}'
os.mkdir(dir_one) with open(os.path.join(dir_one, 'foo.py'), 'w') as f: f.write(script) os.mkdir(dir_two) os.symlink(os.path.join(dir_one, 'foo.py'), os.path.join(dir_two, 'foo.py'))
stdout, stderr = self._run_pdb([os.path.join('dir_two', 'foo.py')], commands)
self.assertEqual(stdout.split('\n')[2].rstrip('\r'), expected)

def load_tests(*args): from test import test_pdb suites = [ Expand Down