]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-136438: Make sure `test_generated_cases` pass with all optimization levels (#136594)
authorMikhail Efimov <efimov.mikhail@gmail.com>
Mon, 21 Jul 2025 12:25:25 +0000 (15:25 +0300)
committerGitHub <noreply@github.com>
Mon, 21 Jul 2025 12:25:25 +0000 (15:25 +0300)
Fix the `test_generated_cases` to work with `-O` or `-OO` flags.
Previously, `test_generated_cases` was catching an `AssertionError` while `Tools/cases_generator/optimizer_generator.py` used an `assert` statement.  This approach semantically incorrect, no one should trying to catch an `AssertionError`!
Now the `assert` statement has been replaced with an explicit `raise ValueError(...)` and the corresponding `self.assertRaisesRegex(AssertionError, ...)` has been updated to catch a `ValueError` instead.

Lib/test/test_generated_cases.py
Tools/cases_generator/optimizer_generator.py

index 81d4e39f5be1ee9165557109b818da4d5b7f99b8..ec44a0f9ce3fb342d89df623a62829efde366240 100644 (file)
@@ -2037,7 +2037,7 @@ class TestGeneratedAbstractCases(unittest.TestCase):
         """
         output = """
         """
-        with self.assertRaisesRegex(AssertionError, "All abstract uops"):
+        with self.assertRaisesRegex(ValueError, "All abstract uops"):
             self.run_cases_test(input, input2, output)
 
     def test_validate_uop_input_length_mismatch(self):
index 81ae534bddae5cefb31f0b32fe688b23bee41841..ea9dd836d98e22ecdbe44e66dce1a98f755f65f3 100644 (file)
@@ -398,9 +398,9 @@ def generate_abstract_interpreter(
     out.emit("\n")
     base_uop_names = set([uop.name for uop in base.uops.values()])
     for abstract_uop_name in abstract.uops:
-        assert (
-            abstract_uop_name in base_uop_names
-        ), f"All abstract uops should override base uops, but {abstract_uop_name} is not."
+        if abstract_uop_name not in base_uop_names:
+            raise ValueError(f"All abstract uops should override base uops, "
+                                 "but {abstract_uop_name} is not.")
 
     for uop in base.uops.values():
         override: Uop | None = None