From 75e48c5f959b4f0a49d8c664e059b6fb4b497102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20=C5=A0im=C3=A1=C4=8Dek?= Date: Fri, 25 Oct 2024 17:28:15 +0200 Subject: [PATCH] Skip transient tests on GraalPy (#5422) --- tests/test_call_policies.py | 2 ++ tests/test_class.py | 7 +++++++ tests/test_copy_move.py | 4 ++++ tests/test_custom_type_casters.py | 2 ++ tests/test_eigen_matrix.py | 1 + tests/test_opaque_types.py | 5 ++++- tests/test_operator_overloading.py | 5 ++++- 7 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/test_call_policies.py b/tests/test_call_policies.py index 3b614df45..11aab9fd9 100644 --- a/tests/test_call_policies.py +++ b/tests/test_call_policies.py @@ -190,6 +190,7 @@ def test_alive_gc_multi_derived(capture): ) +@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC") def test_return_none(capture): n_inst = ConstructorStats.detail_reg_inst() with capture: @@ -217,6 +218,7 @@ def test_return_none(capture): assert capture == "Releasing parent." +@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC") def test_keep_alive_constructor(capture): n_inst = ConstructorStats.detail_reg_inst() diff --git a/tests/test_class.py b/tests/test_class.py index 470d2a326..f424db5c3 100644 --- a/tests/test_class.py +++ b/tests/test_class.py @@ -27,6 +27,9 @@ def test_instance(msg): instance = m.NoConstructor.new_instance() + if env.GRAALPY: + pytest.skip("ConstructorStats is incompatible with GraalPy.") + cstats = ConstructorStats.get(m.NoConstructor) assert cstats.alive() == 1 del instance @@ -35,6 +38,10 @@ def test_instance(msg): def test_instance_new(): instance = m.NoConstructorNew() # .__new__(m.NoConstructor.__class__) + + if env.GRAALPY: + pytest.skip("ConstructorStats is incompatible with GraalPy.") + cstats = ConstructorStats.get(m.NoConstructorNew) assert cstats.alive() == 1 del instance diff --git a/tests/test_copy_move.py b/tests/test_copy_move.py index ee046305f..3a3f29341 100644 --- a/tests/test_copy_move.py +++ b/tests/test_copy_move.py @@ -2,6 +2,7 @@ from __future__ import annotations import pytest +import env # noqa: F401 from pybind11_tests import copy_move_policies as m @@ -17,6 +18,7 @@ def test_lacking_move_ctor(): assert "is neither movable nor copyable!" in str(excinfo.value) +@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC") def test_move_and_copy_casts(): """Cast some values in C++ via custom type casters and count the number of moves/copies.""" @@ -44,6 +46,7 @@ def test_move_and_copy_casts(): assert c_m.alive() + c_mc.alive() + c_c.alive() == 0 +@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC") def test_move_and_copy_loads(): """Call some functions that load arguments via custom type casters and count the number of moves/copies.""" @@ -77,6 +80,7 @@ def test_move_and_copy_loads(): @pytest.mark.skipif(not m.has_optional, reason="no ") +@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC") def test_move_and_copy_load_optional(): """Tests move/copy loads of std::optional arguments""" diff --git a/tests/test_custom_type_casters.py b/tests/test_custom_type_casters.py index 689b1e9cb..dcf3ca734 100644 --- a/tests/test_custom_type_casters.py +++ b/tests/test_custom_type_casters.py @@ -2,6 +2,7 @@ from __future__ import annotations import pytest +import env # noqa: F401 from pybind11_tests import custom_type_casters as m @@ -94,6 +95,7 @@ def test_noconvert_args(msg): ) +@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC") def test_custom_caster_destruction(): """Tests that returning a pointer to a type that gets converted with a custom type caster gets destroyed when the function has py::return_value_policy::take_ownership policy applied. diff --git a/tests/test_eigen_matrix.py b/tests/test_eigen_matrix.py index 7baf99953..5093ce7d8 100644 --- a/tests/test_eigen_matrix.py +++ b/tests/test_eigen_matrix.py @@ -395,6 +395,7 @@ def test_eigen_return_references(): np.testing.assert_array_equal(a_copy5, c5want) +@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC") def assert_keeps_alive(cl, method, *args): cstats = ConstructorStats.get(cl) start_with = cstats.alive() diff --git a/tests/test_opaque_types.py b/tests/test_opaque_types.py index 342086436..56c9b5db1 100644 --- a/tests/test_opaque_types.py +++ b/tests/test_opaque_types.py @@ -2,6 +2,7 @@ from __future__ import annotations import pytest +import env from pybind11_tests import ConstructorStats, UserType from pybind11_tests import opaque_types as m @@ -30,7 +31,9 @@ def test_pointers(msg): living_before = ConstructorStats.get(UserType).alive() assert m.get_void_ptr_value(m.return_void_ptr()) == 0x1234 assert m.get_void_ptr_value(UserType()) # Should also work for other C++ types - assert ConstructorStats.get(UserType).alive() == living_before + + if not env.GRAALPY: + assert ConstructorStats.get(UserType).alive() == living_before with pytest.raises(TypeError) as excinfo: m.get_void_ptr_value([1, 2, 3]) # This should not work diff --git a/tests/test_operator_overloading.py b/tests/test_operator_overloading.py index 22300eb0f..47949042d 100644 --- a/tests/test_operator_overloading.py +++ b/tests/test_operator_overloading.py @@ -2,7 +2,7 @@ from __future__ import annotations import pytest -import env # noqa: F401 +import env from pybind11_tests import ConstructorStats from pybind11_tests import operators as m @@ -51,6 +51,9 @@ def test_operator_overloading(): v2 /= v1 assert str(v2) == "[2.000000, 8.000000]" + if env.GRAALPY: + pytest.skip("ConstructorStats is incompatible with GraalPy.") + cstats = ConstructorStats.get(m.Vector2) assert cstats.alive() == 3 del v1