mirror of
https://github.com/python/cpython.git
synced 2025-07-29 06:05:00 +00:00
Patch #1080727: add "encoding" parameter to doctest.DocFileSuite
Contributed by Bjorn Tillenius.
This commit is contained in:
parent
22a80e7cb0
commit
f3c65de460
5 changed files with 99 additions and 10 deletions
|
@ -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()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue