]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-142145: relax the no-longer-quadratic test timing (GH-143030) (#143032)
authorGregory P. Smith <68491+gpshead@users.noreply.github.com>
Sun, 21 Dec 2025 00:22:07 +0000 (16:22 -0800)
committerGitHub <noreply@github.com>
Sun, 21 Dec 2025 00:22:07 +0000 (00:22 +0000)
gh-142145: relax the no-longer-quadratic test timing (#143030)

* gh-142145: relax the no-longer-quadratic test timing

* require cpu resource

(cherry picked from commit 8d2d7bb)

Lib/test/test_minidom.py

index 23b10f4644443a6fd6d56941d0dc0c8a664182e8..69fae957ec7fc9c1e9d15fba344b9de6238b93aa 100644 (file)
@@ -174,6 +174,7 @@ class MinidomTest(unittest.TestCase):
         self.assertEqual(dom.documentElement.childNodes[-1].data, "Hello")
         dom.unlink()
 
+    @support.requires_resource('cpu')
     def testAppendChildNoQuadraticComplexity(self):
         impl = getDOMImplementation()
 
@@ -182,14 +183,18 @@ class MinidomTest(unittest.TestCase):
         children = [newdoc.createElement(f"child-{i}") for i in range(1, 2 ** 15 + 1)]
         element = top_element
 
-        start = time.time()
+        start = time.monotonic()
         for child in children:
             element.appendChild(child)
             element = child
-        end = time.time()
+        end = time.monotonic()
 
         # This example used to take at least 30 seconds.
-        self.assertLess(end - start, 10)
+        # Conservative assertion due to the wide variety of systems and
+        # build configs timing based tests wind up run under.
+        # A --with-address-sanitizer --with-pydebug build on a rpi5 still
+        # completes this loop in <0.5 seconds.
+        self.assertLess(end - start, 4)
 
     def testSetAttributeNodeWithoutOwnerDocument(self):
         # regression test for gh-142754