Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Systematically skip ConstructorStats tests on GraalPy #5422

Merged
merged 1 commit into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions tests/test_call_policies.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ def __init__(self):
)


@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
def test_return_none(capture):
n_inst = ConstructorStats.detail_reg_inst()
with capture:
Expand Down Expand Up @@ -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()

Expand Down
7 changes: 7 additions & 0 deletions tests/test_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
4 changes: 4 additions & 0 deletions tests/test_copy_move.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import pytest

import env # noqa: F401
from pybind11_tests import copy_move_policies as m


Expand All @@ -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."""

Expand Down Expand Up @@ -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."""
Expand Down Expand Up @@ -77,6 +80,7 @@ def test_move_and_copy_loads():


@pytest.mark.skipif(not m.has_optional, reason="no <optional>")
@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"""

Expand Down
2 changes: 2 additions & 0 deletions tests/test_custom_type_casters.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import pytest

import env # noqa: F401
from pybind11_tests import custom_type_casters as m


Expand Down Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions tests/test_eigen_matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
5 changes: 4 additions & 1 deletion tests/test_opaque_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import pytest

import env
from pybind11_tests import ConstructorStats, UserType
from pybind11_tests import opaque_types as m

Expand Down Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion tests/test_operator_overloading.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import pytest

import env # noqa: F401
import env
from pybind11_tests import ConstructorStats
from pybind11_tests import operators as m

Expand Down Expand Up @@ -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
Expand Down