summaryrefslogtreecommitdiff
path: root/Lib/doctest.py
diff options
context:
space:
mode:
authorGeorge Yoshida <dynkin@gmail.com>2006-05-28 16:39:09 +0000
committerGeorge Yoshida <dynkin@gmail.com>2006-05-28 16:39:09 +0000
commitf3c65de460de58e5538bd4b9e27c0810d772e240 (patch)
treeaec81a0050bdf56d2a55e9e50505a0336ddd6826 /Lib/doctest.py
parent22a80e7cb0f96b803b22ab3e908bf83d21704e7c (diff)
downloadcpython-git-f3c65de460de58e5538bd4b9e27c0810d772e240.tar.gz
Patch #1080727: add "encoding" parameter to doctest.DocFileSuite
Contributed by Bjorn Tillenius.
Diffstat (limited to 'Lib/doctest.py')
-rw-r--r--Lib/doctest.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py
index 857bc1a6eb..971ec6cc4c 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -1869,7 +1869,8 @@ def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
def testfile(filename, module_relative=True, name=None, package=None,
globs=None, verbose=None, report=True, optionflags=0,
- extraglobs=None, raise_on_error=False, parser=DocTestParser()):
+ extraglobs=None, raise_on_error=False, parser=DocTestParser(),
+ encoding=None):
"""
Test examples in the given file. Return (#failures, #tests).
@@ -1935,6 +1936,9 @@ def testfile(filename, module_relative=True, name=None, package=None,
Optional keyword arg "parser" specifies a DocTestParser (or
subclass) that should be used to extract tests from the files.
+ Optional keyword arg "encoding" specifies an encoding that should
+ be used to convert the file to unicode.
+
Advanced tomfoolery: testmod runs methods of a local instance of
class doctest.Tester, then merges the results into (or creates)
global Tester instance doctest.master. Methods of doctest.master
@@ -1969,6 +1973,9 @@ def testfile(filename, module_relative=True, name=None, package=None,
else:
runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
+ if encoding is not None:
+ text = text.decode(encoding)
+
# Read the file, convert it to a test, and run it.
test = parser.get_doctest(text, globs, name, filename, 0)
runner.run(test)
@@ -2339,7 +2346,8 @@ class DocFileCase(DocTestCase):
)
def DocFileTest(path, module_relative=True, package=None,
- globs=None, parser=DocTestParser(), **options):
+ globs=None, parser=DocTestParser(),
+ encoding=None, **options):
if globs is None:
globs = {}
else:
@@ -2357,6 +2365,10 @@ def DocFileTest(path, module_relative=True, package=None,
# Find the file and read it.
name = os.path.basename(path)
+
+ # If an encoding is specified, use it to convert the file to unicode
+ if encoding is not None:
+ doc = doc.decode(encoding)
# Convert it to a test, and wrap it in a DocFileCase.
test = parser.get_doctest(doc, globs, name, path, 0)
@@ -2414,6 +2426,9 @@ def DocFileSuite(*paths, **kw):
parser
A DocTestParser (or subclass) that should be used to extract
tests from the files.
+
+ encoding
+ An encoding that will be used to convert the files to unicode.
"""
suite = unittest.TestSuite()