diff options
author | R. David Murray <rdmurray@bitdance.com> | 2009-12-20 17:37:25 (GMT) |
---|---|---|
committer | R. David Murray <rdmurray@bitdance.com> | 2009-12-20 17:37:25 (GMT) |
commit | 14520958ee5043f89ad7aea106de1d2f61ab0697 (patch) | |
tree | 3e084738698a92ee1886e551552e7dffd741f394 /Lib/doctest.py | |
parent | d56ce975fb99ccc659562397e2218f2f4bd4ba34 (diff) | |
download | cpython-14520958ee5043f89ad7aea106de1d2f61ab0697.zip cpython-14520958ee5043f89ad7aea106de1d2f61ab0697.tar.gz cpython-14520958ee5043f89ad7aea106de1d2f61ab0697.tar.bz2 |
Merged revisions 76937 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
r76934 does not apply and was deleted in the merge.
................
r76937 | r.david.murray | 2009-12-20 12:28:31 -0500 (Sun, 20 Dec 2009) | 20 lines
Merged revisions 76934-76935 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76934 | r.david.murray | 2009-12-20 11:24:46 -0500 (Sun, 20 Dec 2009) | 2 lines
Fix comment typo.
........
r76935 | r.david.murray | 2009-12-20 11:46:06 -0500 (Sun, 20 Dec 2009) | 10 lines
Issue #7376: When called with no arguments doctest was running a
self-test. Because of a change to the way tracebacks are printed,
this self-test was failing. The test is run (and passes) during normal
regression testing. So instead of running the failing self-test this
patch makes doctest emit a usage message. This is better behavior anyway
since passing in arguments is the real reason to run doctest as a command.
Bug discovery and initial patch by Florent Xicluna.
........
................
Diffstat (limited to 'Lib/doctest.py')
-rw-r--r-- | Lib/doctest.py | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py index b95566f..9bae20f 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -2611,27 +2611,31 @@ __test__ = {"_TestClass": _TestClass, """, } + def _test(): testfiles = [arg for arg in sys.argv[1:] if arg and arg[0] != '-'] - if testfiles: - for filename in testfiles: - if filename.endswith(".py"): - # It is a module -- insert its dir into sys.path and try to - # import it. If it is part of a package, that possibly won't work - # because of package imports. - dirname, filename = os.path.split(filename) - sys.path.insert(0, dirname) - m = __import__(filename[:-3]) - del sys.path[0] - failures, _ = testmod(m) - else: - failures, _ = testfile(filename, module_relative=False) - if failures: - return 1 - else: - r = unittest.TextTestRunner() - r.run(DocTestSuite()) + if not testfiles: + name = os.path.basename(sys.argv[0]) + if '__loader__' in globals() and name.endswith('.py'): # python -m + name, _ = os.path.splitext(name) + print("usage: {0} [-v] file ...".format(name)) + return 2 + for filename in testfiles: + if filename.endswith(".py"): + # It is a module -- insert its dir into sys.path and try to + # import it. If it is part of a package, that possibly + # won't work because of package imports. + dirname, filename = os.path.split(filename) + sys.path.insert(0, dirname) + m = __import__(filename[:-3]) + del sys.path[0] + failures, _ = testmod(m) + else: + failures, _ = testfile(filename, module_relative=False) + if failures: + return 1 return 0 + if __name__ == "__main__": sys.exit(_test()) |