summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2002-11-22 08:23:09 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2002-11-22 08:23:09 (GMT)
commit4581cfa326cf7d8b9d7888d4c0e96ee88950bcfa (patch)
tree1dafb4db99d1068c86f3470af1a2a2173315d273
parentf86e8ef33ec22475a051b783b19ee22c5bd3de72 (diff)
downloadcpython-4581cfa326cf7d8b9d7888d4c0e96ee88950bcfa.zip
cpython-4581cfa326cf7d8b9d7888d4c0e96ee88950bcfa.tar.gz
cpython-4581cfa326cf7d8b9d7888d4c0e96ee88950bcfa.tar.bz2
Patch #486438: Make module argument to testmod optional.
-rw-r--r--Doc/lib/libdoctest.tex6
-rw-r--r--Lib/doctest.py16
-rw-r--r--Misc/NEWS3
3 files changed, 20 insertions, 5 deletions
diff --git a/Doc/lib/libdoctest.tex b/Doc/lib/libdoctest.tex
index edd78a4..9a795e9 100644
--- a/Doc/lib/libdoctest.tex
+++ b/Doc/lib/libdoctest.tex
@@ -152,6 +152,10 @@ if __name__ == "__main__":
_test()
\end{verbatim}
+If you want to test the module as the main module, you don't need to
+pass M to \function{testmod}; in this case, it will test the current
+module.
+
Then running the module as a script causes the examples in the docstrings
to get executed and verified:
@@ -392,7 +396,7 @@ definition of \function{_test()} is
\begin{verbatim}
def _test():
import doctest, sys
- doctest.testmod(sys.modules["__main__"])
+ doctest.testmod()
\end{verbatim}
\end{enumerate}
diff --git a/Lib/doctest.py b/Lib/doctest.py
index 5cbdd06..c01606d 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -1044,12 +1044,13 @@ see its docs for details.
master = None
-def testmod(m, name=None, globs=None, verbose=None, isprivate=None,
+def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
report=1):
- """m, name=None, globs=None, verbose=None, isprivate=None, report=1
+ """m=None, name=None, globs=None, verbose=None, isprivate=None, report=1
- Test examples in docstrings in functions and classes reachable from
- module m, starting with m.__doc__. Private names are skipped.
+ Test examples in docstrings in functions and classes reachable
+ from module m (or the current module if m is not supplied), starting
+ with m.__doc__. Private names are skipped.
Also test examples reachable from dict m.__test__ if it exists and is
not None. m.__dict__ maps names to functions, classes and strings;
@@ -1090,6 +1091,13 @@ def testmod(m, name=None, globs=None, verbose=None, isprivate=None,
global master
+ if m is None:
+ import sys
+ # DWA - m will still be None if this wasn't invoked from the command
+ # line, in which case the following TypeError is about as good an error
+ # as we should expect
+ m = sys.modules.get('__main__')
+
if not _ismodule(m):
raise TypeError("testmod: module required; " + `m`)
if name is None:
diff --git a/Misc/NEWS b/Misc/NEWS
index 42cd9183..d29cccb 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -389,6 +389,9 @@ Extension modules
Library
-------
+- doctest.testmod can now be called without argument, which means to
+ test the current module.
+
- When cancelling a server that implemented threading with a keyboard
interrupt, the server would shut down but not terminate (waiting on
client threads). A new member variable, daemon_threads, was added to