[Python-checkins] python/dist/src/Lib doctest.py, 1.36.2.9,
1.36.2.10
edloper at users.sourceforge.net
edloper at users.sourceforge.net
Tue Aug 3 22:09:57 CEST 2004
Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1323
Modified Files:
Tag: tim-doctest-branch
doctest.py
Log Message:
- Explicitly set verbose=False when running test cases for DocTestRunner
(so that it doesn't pick up the verbosity from sys.argv)
- Simplified blankline handling in TestRunner.output_difference()
- Fixed the debugging support code
- Removed tests5() (now tested in test.test_doctest)
Index: doctest.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/doctest.py,v
retrieving revision 1.36.2.9
retrieving revision 1.36.2.10
diff -C2 -d -r1.36.2.9 -r1.36.2.10
*** doctest.py 3 Aug 2004 19:52:48 -0000 1.36.2.9
--- doctest.py 3 Aug 2004 20:09:51 -0000 1.36.2.10
***************
*** 307,311 ****
import sys, traceback, inspect, linecache, re, types
! import unittest, difflib
from StringIO import StringIO
--- 307,311 ----
import sys, traceback, inspect, linecache, re, types
! import unittest, difflib, tempfile
from StringIO import StringIO
***************
*** 885,889 ****
>>> tests = DocTestFinder().find(_TestClass)
! >>> runner = DocTestRunner()
>>> for test in tests:
... print runner.run(test, globals())
--- 885,889 ----
>>> tests = DocTestFinder().find(_TestClass)
! >>> runner = DocTestRunner(verbose=False)
>>> for test in tests:
... print runner.run(test, globals())
***************
*** 1036,1039 ****
--- 1036,1044 ----
expected output (`want`) and the actual output (`got`).
"""
+ # If <BLANKLINE>s are being used, then replace <BLANKLINE>
+ # with blank lines in the expected output string.
+ if not (self._optionflags & DONT_ACCEPT_BLANKLINE):
+ want = re.sub('(?m)^%s$' % re.escape(BLANKLINE_MARKER), '', want)
+
# Check if we should use diff. Don't use diff if the actual
# or expected outputs are too short, or if the expected output
***************
*** 1042,1050 ****
want.count('\n') > 2 and got.count('\n') > 2 and
not (self._optionflags & ELLIPSIS and '...' in want)):
- # Replace <BLANKLINE> with blank lines in the expected
- # output string (so they don't confuse difflib).
- if not (self._optionflags & DONT_ACCEPT_BLANKLINE):
- want = re.sub('(?m)^%s$' % re.escape(BLANKLINE_MARKER),
- '', want)
# Split want & got into lines.
want_lines = [l+'\n' for l in want.split('\n')]
--- 1047,1050 ----
***************
*** 1067,1074 ****
# If we're not using diff, then simply list the expected
! # output followed by the actual output. But explicitly mark
! # blank lines in the actual output.
! if not (self._optionflags & DONT_ACCEPT_BLANKLINE):
! got = re.sub('(?m)^$(?!\Z)', '<BLANKLINE>', got)
return (_tag_msg("Expected", want or "Nothing") +
_tag_msg("Got", got))
--- 1067,1071 ----
# If we're not using diff, then simply list the expected
! # output followed by the actual output.
return (_tag_msg("Expected", want or "Nothing") +
_tag_msg("Got", got))
***************
*** 1531,1534 ****
--- 1528,1533 ----
## 6. Tester
######################################################################
+ # This is provided only for backwards compatibility. It's not
+ # actually used in any way.
class Tester:
***************
*** 1714,1725 ****
## 8. Debugging Support
######################################################################
- # [XX] This is currently broken:
! def _expect(expect):
# Return the expected output, if any
! if expect:
! expect = "\n# ".join(expect.split("\n"))
! expect = "\n# Expect:\n# %s" % expect
! return expect
def testsource(module, name):
--- 1713,1729 ----
## 8. Debugging Support
######################################################################
! def _want_comment(example):
! """
! Return a comment containing the expected output for the given
! example.
! """
# Return the expected output, if any
! want = example.want
! if want:
! if want[-1] == '\n': want = want[:-1]
! want = "\n# ".join(want.split("\n"))
! want = "\n# Expected:\n# %s" % want
! return want
def testsource(module, name):
***************
*** 1731,1745 ****
"""
! module = _normalizeModule(module)
! tests = _findTests(module, "")
! test = [doc for (tname, doc, f, l) in tests if tname == name]
if not test:
raise ValueError(name, "not found in tests")
test = test[0]
- # XXX we rely on an internal doctest function:
- examples = _extract_examples(test)
testsrc = '\n'.join([
! "%s%s" % (source, _expect(expect))
! for (source, expect, lineno) in examples
])
return testsrc
--- 1735,1747 ----
"""
! module = _normalize_module(module)
! tests = DocTestFinder().find(module)
! test = [t for t in tests if t.name == name]
if not test:
raise ValueError(name, "not found in tests")
test = test[0]
testsrc = '\n'.join([
! "%s%s" % (example.source, _want_comment(example))
! for example in test.examples
])
return testsrc
***************
*** 1750,1760 ****
The string is provided directly
"""
! # XXX we rely on an internal doctest function:
! examples = _extract_examples(src)
! src = '\n'.join([
! "%s%s" % (source, _expect(expect))
! for (source, expect, lineno) in examples
])
! debug_script(src, pm, globs)
def debug_script(src, pm=False, globs=None):
--- 1752,1762 ----
The string is provided directly
"""
! test = DocTest(src, 'debug', None, None)
!
! testsrc = '\n'.join([
! "%s%s" % (example.source, _want_comment(example))
! for example in test.examples
])
! debug_script(testsrc, pm, globs)
def debug_script(src, pm=False, globs=None):
***************
*** 1762,1767 ****
import pdb
! srcfilename = tempfile.mktemp("doctestdebug.py")
! open(srcfilename, 'w').write(src)
if globs:
globs = globs.copy()
--- 1764,1771 ----
import pdb
! srcfile = tempfile.NamedTemporaryFile(prefix='doctestdebug-',
! suffix='.py', mode="w")
! srcfile.write(src)
! srcfile.flush()
if globs:
globs = globs.copy()
***************
*** 1772,1776 ****
if pm:
try:
! execfile(srcfilename, globs, globs)
except:
print sys.exc_info()[1]
--- 1776,1780 ----
if pm:
try:
! execfile(srcfile.name, globs, globs)
except:
print sys.exc_info()[1]
***************
*** 1779,1785 ****
# Note that %r is vital here. '%s' instead can, e.g., cause
# backslashes to get treated as metacharacters on Windows.
! pdb.run("execfile(%r)" % srcfilename, globs, globs)
finally:
! os.remove(srcfilename)
def debug(module, name, pm=False):
--- 1783,1789 ----
# Note that %r is vital here. '%s' instead can, e.g., cause
# backslashes to get treated as metacharacters on Windows.
! pdb.run("execfile(%r)" % srcfile.name, globs, globs)
finally:
! srcfile.close() # Automatically deletes the file.
def debug(module, name, pm=False):
***************
*** 1791,1801 ****
"""
! module = _normalizeModule(module)
testsrc = testsource(module, name)
debug_script(testsrc, pm, module.__dict__)
-
-
-
######################################################################
## 9. Example Usage
--- 1795,1802 ----
"""
! module = _normalize_module(module)
testsrc = testsource(module, name)
debug_script(testsrc, pm, module.__dict__)
######################################################################
## 9. Example Usage
***************
*** 1999,2022 ****
meant to be invoked automagically by testmod.
! >>> testmod(m1, isprivate=is_private)
(0, 3)
"""
- def test5(): r"""
-
- >>> raise ValueError('x')
- Traceback (most recent call last):
- [...]
- ValueError: x
-
- >>> print 'x'; raise ValueError('\nfoo')
- x
- Traceback (most recent call last):
- [...]
- ValueError:
- foo
-
- """
-
def _test():
#import doctest
--- 2000,2007 ----
meant to be invoked automagically by testmod.
! >>> testmod(m1, isprivate=is_private, verbose=False)
(0, 3)
"""
def _test():
#import doctest
More information about the Python-checkins
mailing list