PDB now will properly escape backslashes in the names of modules it executes. Fixes #7750
This commit is contained in:
parent
9efddb654b
commit
5d032c0f95
|
@ -1229,7 +1229,7 @@ see no sign that the breakpoint was reached.
|
||||||
self._wait_for_mainpyfile = 1
|
self._wait_for_mainpyfile = 1
|
||||||
self.mainpyfile = self.canonic(filename)
|
self.mainpyfile = self.canonic(filename)
|
||||||
self._user_requested_quit = 0
|
self._user_requested_quit = 0
|
||||||
statement = 'execfile( "%s")' % filename
|
statement = 'execfile(%r)' % filename
|
||||||
self.run(statement)
|
self.run(statement)
|
||||||
|
|
||||||
# Simplified interface
|
# Simplified interface
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
import imp
|
import imp
|
||||||
import sys
|
import sys
|
||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
|
||||||
from test import test_support
|
from test import test_support
|
||||||
# This little helper class is essential for testing pdb under doctest.
|
# This little helper class is essential for testing pdb under doctest.
|
||||||
|
@ -277,6 +280,29 @@ def test_pdb_continue_in_bottomframe():
|
||||||
4
|
4
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
class Tester7750(unittest.TestCase):
|
||||||
|
# if the filename has something that resolves to a python
|
||||||
|
# escape character (such as \t), it will fail
|
||||||
|
test_fn = '.\\test7750.py'
|
||||||
|
|
||||||
|
msg = "issue7750 only applies when os.sep is a backslash"
|
||||||
|
@unittest.skipUnless(os.path.sep == '\\', msg)
|
||||||
|
def test_issue7750(self):
|
||||||
|
with open(self.test_fn, 'w') as f:
|
||||||
|
f.write('print("hello world")')
|
||||||
|
cmd = [sys.executable, '-m', 'pdb', self.test_fn,]
|
||||||
|
proc = subprocess.Popen(cmd,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stdin=subprocess.PIPE,
|
||||||
|
stderr=subprocess.STDOUT,
|
||||||
|
)
|
||||||
|
stdout, stderr = proc.communicate('quit\n')
|
||||||
|
self.assertNotIn('IOError', stdout, "pdb munged the filename")
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
if os.path.isfile(self.test_fn):
|
||||||
|
os.remove(self.test_fn)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
from test import test_pdb
|
from test import test_pdb
|
||||||
|
@ -285,3 +311,4 @@ def test_main():
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
test_main()
|
||||||
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue