From 4581cfa326cf7d8b9d7888d4c0e96ee88950bcfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Fri, 22 Nov 2002 08:23:09 +0000 Subject: Patch #486438: Make module argument to testmod optional. --- Doc/lib/libdoctest.tex | 6 +++++- Lib/doctest.py | 16 ++++++++++++---- Misc/NEWS | 3 +++ 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 -- cgit v0.12