]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-112192: Increase the trace module coverage precision to one decimal (#126972)
authorRUANG (James Roy) <longjinyii@outlook.com>
Tue, 3 Dec 2024 22:33:13 +0000 (06:33 +0800)
committerGitHub <noreply@github.com>
Tue, 3 Dec 2024 22:33:13 +0000 (23:33 +0100)
Lib/test/test_regrtest.py
Lib/test/test_trace.py
Lib/trace.py
Misc/NEWS.d/next/Library/2024-11-18-23-18-27.gh-issue-112192.DRdRgP.rst [new file with mode: 0644]

index d4f4a69a7a38c10997f96d660374e24b67622796..0ab7a23aca1df87c011417661b1c46a3e58c692e 100644 (file)
@@ -1138,7 +1138,7 @@ class ArgsTestCase(BaseTestCase):
         output = self.run_tests("--coverage", test)
         self.check_executed_tests(output, [test], stats=1)
         regex = (r'lines +cov% +module +\(path\)\n'
-                 r'(?: *[0-9]+ *[0-9]{1,2}% *[^ ]+ +\([^)]+\)+)+')
+                 r'(?: *[0-9]+ *[0-9]{1,2}\.[0-9]% *[^ ]+ +\([^)]+\)+)+')
         self.check_line(output, regex)
 
     def test_wait(self):
index 93966ee31d0a0176bac9f1f17ce69b611b8fb61f..e7e42531916d0dbd810ce8caef6553c223e07900 100644 (file)
@@ -412,7 +412,7 @@ class TestCoverage(unittest.TestCase):
         coverage = {}
         for line in stdout:
             lines, cov, module = line.split()[:3]
-            coverage[module] = (int(lines), int(cov[:-1]))
+            coverage[module] = (float(lines), float(cov[:-1]))
         # XXX This is needed to run regrtest.py as a script
         modname = trace._fullmodname(sys.modules[modname].__file__)
         self.assertIn(modname, coverage)
@@ -553,7 +553,7 @@ class TestCommandLine(unittest.TestCase):
         stdout = stdout.decode()
         self.assertEqual(status, 0)
         self.assertIn('lines   cov%   module   (path)', stdout)
-        self.assertIn(f'6   100%   {modulename}   ({filename})', stdout)
+        self.assertIn(f'6   100.0%   {modulename}   ({filename})', stdout)
 
     def test_run_as_module(self):
         assert_python_ok('-m', 'trace', '-l', '--module', 'timeit', '-n', '1')
index bb3d34fd8d6550f15e5ec0cf8f8657cc5ccefa5c..a87bc6d61a884f4da0f97ff575518a87bd7f709c 100644 (file)
@@ -279,14 +279,13 @@ class CoverageResults:
             n_hits, n_lines = self.write_results_file(coverpath, source,
                                                       lnotab, count, encoding)
             if summary and n_lines:
-                percent = int(100 * n_hits / n_lines)
-                sums[modulename] = n_lines, percent, modulename, filename
+                sums[modulename] = n_lines, n_hits, modulename, filename
 
         if summary and sums:
             print("lines   cov%   module   (path)")
             for m in sorted(sums):
-                n_lines, percent, modulename, filename = sums[m]
-                print("%5d   %3d%%   %s   (%s)" % sums[m])
+                n_lines, n_hits, modulename, filename = sums[m]
+                print(f"{n_lines:5d}   {n_hits/n_lines:.1%}   {modulename}   ({filename})")
 
         if self.outfile:
             # try and store counts and module info into self.outfile
diff --git a/Misc/NEWS.d/next/Library/2024-11-18-23-18-27.gh-issue-112192.DRdRgP.rst b/Misc/NEWS.d/next/Library/2024-11-18-23-18-27.gh-issue-112192.DRdRgP.rst
new file mode 100644 (file)
index 0000000..b169c15
--- /dev/null
@@ -0,0 +1 @@
+In the :mod:`trace` module, increase the coverage precision (``cov%``) to one decimal.