Skip to content

Commit

Permalink
Merge branch 'master' into incompat
Browse files Browse the repository at this point in the history
  • Loading branch information
rwgk committed Oct 28, 2024
2 parents 713b427 + 75e48c5 commit 79a3770
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 2 deletions.
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

0 comments on commit 79a3770

Please sign in to comment.