Fix the regex to match all kind of filenames, for interactive debugging in doctests. (issue #9409)

This commit is contained in:
Florent Xicluna 2010-10-14 20:56:20 +00:00
parent d778e568ba
commit d9f57630fe
3 changed files with 15 additions and 12 deletions

View File

@ -1319,7 +1319,7 @@ class DocTestRunner:
self.tries += t
__LINECACHE_FILENAME_RE = re.compile(r'<doctest '
r'(?P<name>[\w\.]+)'
r'(?P<name>.+)'
r'\[(?P<examplenum>\d+)\]>$')
def __patched_linecache_getlines(self, filename, module_globals=None):
m = self.__LINECACHE_FILENAME_RE.match(filename)

View File

@ -1700,7 +1700,7 @@ def test_pdb_set_trace():
... >>> import pdb; pdb.set_trace()
... '''
>>> parser = doctest.DocTestParser()
>>> test = parser.get_doctest(doc, {}, "foo", "foo.py", 0)
>>> test = parser.get_doctest(doc, {}, "foo-bär@baz", "foo-bär@baz.py", 0)
>>> runner = doctest.DocTestRunner(verbose=False)
To demonstrate this, we'll create a fake standard input that
@ -1716,7 +1716,7 @@ def test_pdb_set_trace():
>>> try: runner.run(test)
... finally: sys.stdin = real_stdin
--Return--
> <doctest foo[1]>(1)<module>()->None
> <doctest foo-bär@baz[1]>(1)<module>()->None
-> import pdb; pdb.set_trace()
(Pdb) print(x)
42
@ -1733,7 +1733,7 @@ def test_pdb_set_trace():
... >>> x=1
... >>> calls_set_trace()
... '''
>>> test = parser.get_doctest(doc, globals(), "foo", "foo.py", 0)
>>> test = parser.get_doctest(doc, globals(), "foo-bär@baz", "foo-bär@baz.py", 0)
>>> real_stdin = sys.stdin
>>> sys.stdin = _FakeInput([
... 'print(y)', # print data defined in the function
@ -1752,7 +1752,7 @@ def test_pdb_set_trace():
(Pdb) print(y)
2
(Pdb) up
> <doctest foo[1]>(1)<module>()
> <doctest foo-bär@baz[1]>(1)<module>()
-> calls_set_trace()
(Pdb) print(x)
1
@ -1770,7 +1770,7 @@ def test_pdb_set_trace():
... ... import pdb; pdb.set_trace()
... >>> f(3)
... '''
>>> test = parser.get_doctest(doc, globals(), "foo", "foo.py", 0)
>>> test = parser.get_doctest(doc, globals(), "foo-bär@baz", "foo-bär@baz.py", 0)
>>> real_stdin = sys.stdin
>>> sys.stdin = _FakeInput([
... 'list', # list source from example 2
@ -1784,7 +1784,7 @@ def test_pdb_set_trace():
... finally: sys.stdin = real_stdin
... # doctest: +NORMALIZE_WHITESPACE
--Return--
> <doctest foo[1]>(3)g()->None
> <doctest foo-bär@baz[1]>(3)g()->None
-> import pdb; pdb.set_trace()
(Pdb) list
1 def g(x):
@ -1793,7 +1793,7 @@ def test_pdb_set_trace():
[EOF]
(Pdb) next
--Return--
> <doctest foo[0]>(2)f()->None
> <doctest foo-bär@baz[0]>(2)f()->None
-> g(x*2)
(Pdb) list
1 def f(x):
@ -1801,14 +1801,14 @@ def test_pdb_set_trace():
[EOF]
(Pdb) next
--Return--
> <doctest foo[2]>(1)<module>()->None
> <doctest foo-bär@baz[2]>(1)<module>()->None
-> f(3)
(Pdb) list
1 -> f(3)
[EOF]
(Pdb) continue
**********************************************************************
File "foo.py", line 7, in foo
File "foo-bär@baz.py", line 7, in foo-bär@baz
Failed example:
f(3)
Expected nothing
@ -1842,7 +1842,7 @@ def test_pdb_set_trace_nested():
... '''
>>> parser = doctest.DocTestParser()
>>> runner = doctest.DocTestRunner(verbose=False)
>>> test = parser.get_doctest(doc, globals(), "foo", "foo.py", 0)
>>> test = parser.get_doctest(doc, globals(), "foo-bär@baz", "foo-bär@baz.py", 0)
>>> real_stdin = sys.stdin
>>> sys.stdin = _FakeInput([
... 'print(y)', # print data defined in the function
@ -1895,7 +1895,7 @@ def test_pdb_set_trace_nested():
(Pdb) print(y)
1
(Pdb) up
> <doctest foo[1]>(1)<module>()
> <doctest foo-bär@baz[1]>(1)<module>()
-> calls_set_trace()
(Pdb) print(foo)
*** NameError: name 'foo' is not defined

View File

@ -21,6 +21,9 @@ Core and Builtins
Library
-------
- Issue 9409: Fix the regex to match all kind of filenames, for interactive
debugging in doctests.
- Issue 9183: ``datetime.timezone(datetime.timedelta(0))`` will now
return the same instance as ``datetime.timezone.utc``.