diff options
| author | 2025-10-11 02:40:42 +0100 | |
|---|---|---|
| committer | 2025-10-14 00:08:02 +0100 | |
| commit | 1ed5b1b9d730d60d74b7f4801cb620428ccebd5f (patch) | |
| tree | b6d466e016510acff365f56eb811dd8e635a7d07 | |
| parent | Add new build steps for 3.14.0 with JIT (diff) | |
Add integration test for validating JIT builds of Python
| -rw-r--r-- | tests/test_integration.py | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/tests/test_integration.py b/tests/test_integration.py index b3c1707..c15638a 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -103,6 +103,33 @@ class IntegrationTests(unittest.TestCase):                      self.assertEqual(status, 200)                      self.assertEqual(json.loads(response)["stdout"], expected) +    def test_jit_status(self): +        """Tests that JIT builds have the JIT available and enabled.""" +        with run_gunicorn(): +            get_jit_status = {"input": "import sys; print(sys._jit.is_enabled())"} + +            # This test will only work on tests where the sys._jit namespace exists. +            # +            # The namespace was added in 3.14 but is not guaranteed to be there for other +            # implementations of Python, see https://docs.python.org/3/library/sys.html#sys._jit +            # for full information. +            # +            # For now, the two below test cases are guaranteed to have the sys._jit module available +            # and (if compiled correctly) should return the below values. +            cases = [ +                ("3.14", "False\n"), +                ("3.14j", "True\n"), +            ] +            for version, expected in cases: +                with self.subTest(version=version, expected=expected): +                    payload = { +                        "executable_path": f"/snekbin/python/{version}/bin/python", +                        **get_jit_status, +                    } +                    response, status = snekbox_request(payload) +                    self.assertEqual(status, 200) +                    self.assertEqual(json.loads(response)["stdout"], expected) +      def invalid_executable_paths(self):          """Test that passing invalid executable paths result in no code execution."""          with run_gunicorn(): | 
