summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2004-08-07 05:37:52 (GMT)
committerTim Peters <tim.peters@gmail.com>2004-08-07 05:37:52 (GMT)
commit1e277ee3bd76b82d74214ab2a415a3516c168cfa (patch)
treea700c8191004d24b3e89c0ffa4554335f6cf0960 /Lib
parent2a7dedef9e3d94fbbad3782fd4757c6b7ba91c09 (diff)
downloadcpython-1e277ee3bd76b82d74214ab2a415a3516c168cfa.zip
cpython-1e277ee3bd76b82d74214ab2a415a3516c168cfa.tar.gz
cpython-1e277ee3bd76b82d74214ab2a415a3516c168cfa.tar.bz2
Bug 772091: doctest.DocTestSuite does not support __test__
This got fixed "by magic" as part of the refactoring, but wasn't tested as such. Now it is.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/sample_doctest.py16
-rw-r--r--Lib/test/test_doctest.py29
2 files changed, 29 insertions, 16 deletions
diff --git a/Lib/test/sample_doctest.py b/Lib/test/sample_doctest.py
index 25a1d37..e5adee0 100644
--- a/Lib/test/sample_doctest.py
+++ b/Lib/test/sample_doctest.py
@@ -1,9 +1,9 @@
"""This is a sample module that doesn't really test anything all that
- interesting
+ interesting.
-It simply has a few tests, some of which suceed and some of which fail.
+It simply has a few tests, some of which succeed and some of which fail.
-It's important that the numbers remain constance, as another test is
+It's important that the numbers remain constant as another test is
testing the running of these tests.
@@ -61,6 +61,16 @@ def y_is_one():
1
"""
+__test__ = {'good': """
+ >>> 42
+ 42
+ """,
+ 'bad': """
+ >>> 42
+ 666
+ """,
+ }
+
def test_suite():
import doctest
return doctest.DocTestSuite()
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py
index 5cd79d5..717771d 100644
--- a/Lib/test/test_doctest.py
+++ b/Lib/test/test_doctest.py
@@ -986,7 +986,7 @@ Run the debugger on the docstring, and then restore sys.stdin.
"""
def test_DocTestSuite():
- """DocTestSuite creates a unittest test suite into a doctest.
+ """DocTestSuite creates a unittest test suite from a doctest.
We create a Suite by providing a module. A module can be provided
by passing a module object:
@@ -995,19 +995,19 @@ def test_DocTestSuite():
>>> import test.sample_doctest
>>> suite = doctest.DocTestSuite(test.sample_doctest)
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=7 errors=0 failures=3>
+ <unittest.TestResult run=9 errors=0 failures=4>
We can also supply the module by name:
>>> suite = doctest.DocTestSuite('test.sample_doctest')
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=7 errors=0 failures=3>
+ <unittest.TestResult run=9 errors=0 failures=4>
We can use the current module:
>>> suite = test.sample_doctest.test_suite()
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=7 errors=0 failures=3>
+ <unittest.TestResult run=9 errors=0 failures=4>
We can supply global variables. If we pass globs, they will be
used instead of the module globals. Here we'll pass an empty
@@ -1015,7 +1015,7 @@ def test_DocTestSuite():
>>> suite = doctest.DocTestSuite('test.sample_doctest', globs={})
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=7 errors=0 failures=4>
+ <unittest.TestResult run=9 errors=0 failures=5>
Alternatively, we can provide extra globals. Here we'll make an
error go away by providing an extra global variable:
@@ -1023,17 +1023,17 @@ def test_DocTestSuite():
>>> suite = doctest.DocTestSuite('test.sample_doctest',
... extraglobs={'y': 1})
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=7 errors=0 failures=2>
+ <unittest.TestResult run=9 errors=0 failures=3>
You can pass option flags. Here we'll cause an extra error
by disabling the blank-line feature:
>>> suite = doctest.DocTestSuite('test.sample_doctest',
- ... optionflags=doctest.DONT_ACCEPT_BLANKLINE)
+ ... optionflags=doctest.DONT_ACCEPT_BLANKLINE)
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=7 errors=0 failures=4>
+ <unittest.TestResult run=9 errors=0 failures=5>
- You can supply setUp and teatDoen functions:
+ You can supply setUp and tearDown functions:
>>> def setUp():
... import test.test_doctest
@@ -1048,7 +1048,7 @@ def test_DocTestSuite():
>>> suite = doctest.DocTestSuite('test.sample_doctest',
... setUp=setUp, tearDown=tearDown)
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=7 errors=0 failures=2>
+ <unittest.TestResult run=9 errors=0 failures=3>
But the tearDown restores sanity:
@@ -1059,15 +1059,18 @@ def test_DocTestSuite():
AttributeError: 'module' object has no attribute 'sillySetup'
Finally, you can provide an alternate test finder. Here we'll
- use a custom test_finder to to run just the test named bar:
+ use a custom test_finder to to run just the test named bar.
+ However, the test in the module docstring, and the two tests
+ in the module __test__ dict, aren't filtered, so we actually
+ run three tests besides bar's. The filtering mechanisms are
+ poorly conceived, and will go away someday.
>>> finder = doctest.DocTestFinder(
... namefilter=lambda prefix, base: base!='bar')
>>> suite = doctest.DocTestSuite('test.sample_doctest',
... test_finder=finder)
>>> suite.run(unittest.TestResult())
- <unittest.TestResult run=2 errors=0 failures=0>
-
+ <unittest.TestResult run=4 errors=0 failures=1>
"""
def test_DocFileSuite():