diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2011-11-17 23:03:24 (GMT) |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2011-11-17 23:03:24 (GMT) |
commit | 5d032c0f95d4794edcf38253aa54a0e970e5249b (patch) | |
tree | 33da0912cd0af41ffbf1b3b0571809c7cf8453dc | |
parent | 9efddb654ba95d4f8b333d814334099a44d2ccd0 (diff) | |
download | cpython-5d032c0f95d4794edcf38253aa54a0e970e5249b.zip cpython-5d032c0f95d4794edcf38253aa54a0e970e5249b.tar.gz cpython-5d032c0f95d4794edcf38253aa54a0e970e5249b.tar.bz2 |
PDB now will properly escape backslashes in the names of modules it executes. Fixes #7750
-rwxr-xr-x | Lib/pdb.py | 2 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 27 |
2 files changed, 28 insertions, 1 deletions
@@ -1229,7 +1229,7 @@ see no sign that the breakpoint was reached. self._wait_for_mainpyfile = 1 self.mainpyfile = self.canonic(filename) self._user_requested_quit = 0 - statement = 'execfile( "%s")' % filename + statement = 'execfile(%r)' % filename self.run(statement) # Simplified interface diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index f03c20b..5b1f8f7 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -3,6 +3,9 @@ import imp import sys +import os +import unittest +import subprocess from test import test_support # This little helper class is essential for testing pdb under doctest. @@ -277,6 +280,29 @@ def test_pdb_continue_in_bottomframe(): 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(): from test import test_pdb @@ -285,3 +311,4 @@ def test_main(): if __name__ == '__main__': test_main() + unittest.main() |