]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #25220: Enhance regrtest --coverage
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 29 Sep 2015 21:36:27 +0000 (23:36 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 29 Sep 2015 21:36:27 +0000 (23:36 +0200)
Add a new Regrtest.run_test() method to ensure that --coverage pass the same
options to the runtest() function.

Lib/test/libregrtest/main.py

index b66f045045fb79f2345e44f78799f88b136de7b0..41c32d63c4a93a45c48db2e55cfcff9eec6733fa 100644 (file)
@@ -346,7 +346,18 @@ class Regrtest:
                     print(count(len(self.bad), 'test'), "failed again:")
                     printlist(self.bad)
 
-    def _run_tests_sequential(self):
+    def run_test(self, test):
+        result = runtest(test,
+                         self.ns.verbose,
+                         self.ns.quiet,
+                         self.ns.huntrleaks,
+                         output_on_failure=self.ns.verbose3,
+                         timeout=self.ns.timeout,
+                         failfast=self.ns.failfast,
+                         match_tests=self.ns.match_tests)
+        self.accumulate_result(test, result)
+
+    def run_tests_sequential(self):
         save_modules = sys.modules.keys()
 
         for test_index, test in enumerate(self.tests, 1):
@@ -354,19 +365,15 @@ class Regrtest:
             if self.ns.trace:
                 # If we're tracing code coverage, then we don't exit with status
                 # if on a false return value from main.
-                cmd = 'runtest(test, self.ns.verbose, self.ns.quiet, timeout=self.ns.timeout)'
+                cmd = 'self.run_test(test)'
                 self.tracer.runctx(cmd, globals=globals(), locals=vars())
             else:
                 try:
-                    result = runtest(test, self.ns.verbose, self.ns.quiet,
-                                     self.ns.huntrleaks,
-                                     output_on_failure=self.ns.verbose3,
-                                     timeout=self.ns.timeout, failfast=self.ns.failfast,
-                                     match_tests=self.ns.match_tests)
-                    self.accumulate_result(test, result)
+                    self.run_test(test)
                 except KeyboardInterrupt:
                     self.interrupted = True
                     break
+
             if self.ns.findleaks:
                 gc.collect()
                 if gc.garbage:
@@ -376,13 +383,14 @@ class Regrtest:
                     # them again
                     self.found_garbage.extend(gc.garbage)
                     del gc.garbage[:]
+
             # Unload the newly imported modules (best effort finalization)
             for module in sys.modules.keys():
                 if module not in save_modules and module.startswith("test."):
                     support.unload(module)
 
     def run_tests(self):
-        support.verbose = self.ns.verbose      # Tell tests to be moderately quiet
+        support.verbose = self.ns.verbose   # Tell tests to be moderately quiet
         support.use_resources = self.ns.use_resources
 
         if self.ns.forever:
@@ -404,7 +412,7 @@ class Regrtest:
             from test.libregrtest.runtest_mp import run_tests_multiprocess
             run_tests_multiprocess(self)
         else:
-            self._run_tests_sequential()
+            self.run_tests_sequential()
 
     def finalize(self):
         if self.next_single_filename: