Commit a88da67b authored by R David Murray's avatar R David Murray

#11578: add unit tests for timeit module.

Patch by Michael Henry.
parent 07926f02
...@@ -54,7 +54,6 @@ class TestUntestedModules(unittest.TestCase): ...@@ -54,7 +54,6 @@ class TestUntestedModules(unittest.TestCase):
import py_compile import py_compile
import sndhdr import sndhdr
import tabnanny import tabnanny
import timeit
try: try:
import tty # not available on Windows import tty # not available on Windows
except ImportError: except ImportError:
......
This diff is collapsed.
...@@ -232,10 +232,10 @@ def repeat(stmt="pass", setup="pass", timer=default_timer, ...@@ -232,10 +232,10 @@ def repeat(stmt="pass", setup="pass", timer=default_timer,
"""Convenience function to create Timer object and call repeat method.""" """Convenience function to create Timer object and call repeat method."""
return Timer(stmt, setup, timer).repeat(repeat, number) return Timer(stmt, setup, timer).repeat(repeat, number)
def main(args=None): def main(args=None, *, _wrap_timer=None):
"""Main program, used when run as a script. """Main program, used when run as a script.
The optional argument specifies the command line to be parsed, The optional 'args' argument specifies the command line to be parsed,
defaulting to sys.argv[1:]. defaulting to sys.argv[1:].
The return value is an exit code to be passed to sys.exit(); it The return value is an exit code to be passed to sys.exit(); it
...@@ -244,6 +244,10 @@ def main(args=None): ...@@ -244,6 +244,10 @@ def main(args=None):
When an exception happens during timing, a traceback is printed to When an exception happens during timing, a traceback is printed to
stderr and the return value is 1. Exceptions at other times stderr and the return value is 1. Exceptions at other times
(including the template compilation) are not caught. (including the template compilation) are not caught.
'_wrap_timer' is an internal interface used for unit testing. If it
is not None, it must be a callable that accepts a timer function
and returns another timer function (used for unit testing).
""" """
if args is None: if args is None:
args = sys.argv[1:] args = sys.argv[1:]
...@@ -289,6 +293,8 @@ def main(args=None): ...@@ -289,6 +293,8 @@ def main(args=None):
# directory) # directory)
import os import os
sys.path.insert(0, os.curdir) sys.path.insert(0, os.curdir)
if _wrap_timer is not None:
timer = _wrap_timer(timer)
t = Timer(stmt, setup, timer) t = Timer(stmt, setup, timer)
if number == 0: if number == 0:
# determine number so that 0.2 <= total time < 2.0 # determine number so that 0.2 <= total time < 2.0
......
...@@ -126,6 +126,8 @@ Tools/Demos ...@@ -126,6 +126,8 @@ Tools/Demos
Tests Tests
----- -----
- Issue #11578: added test for the timeit module. Patch Michael Henry.
- Issue #11503: improve test coverage of posixpath.py. Patch by Evan Dandrea. - Issue #11503: improve test coverage of posixpath.py. Patch by Evan Dandrea.
- Issue #11505: improves test coverage of string.py. Patch by Alicia - Issue #11505: improves test coverage of string.py. Patch by Alicia
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment