Skip to content

[BUG]: 5 tests fail #6037

@yurivict

Description

@yurivict

Required prerequisites

What version (or hash if on master) of pybind11 are you using?

3.0.3

Problem description

Here are failure messages:

===================================================================================== FAILURES ======================================================================================
__________________________________________________________________________________ test_smart_ptr ___________________________________________________________________________________

capture = <conftest.Capture object at 0x138aa3828210>

    @pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
    def test_smart_ptr(capture):
        # Object1
        for i, o in enumerate(
            [m.make_object_1(), m.make_object_2(), m.MyObject1(3)], start=1
        ):
            assert o.getRefCount() == 1
            with capture:
                m.print_object_1(o)
                m.print_object_2(o)
                m.print_object_3(o)
                m.print_object_4(o)
            assert capture == f"MyObject1[{i}]\n" * 4
    
        for i, o in enumerate(
            [m.make_myobject1_1(), m.make_myobject1_2(), m.MyObject1(6), 7], start=4
        ):
            print(o)
            with capture:
                if not isinstance(o, int):
                    m.print_object_1(o)
                    m.print_object_2(o)
                    m.print_object_3(o)
                    m.print_object_4(o)
                m.print_myobject1_1(o)
                m.print_myobject1_2(o)
                m.print_myobject1_3(o)
                m.print_myobject1_4(o)
    
            times = 4 if isinstance(o, int) else 8
            assert capture == f"MyObject1[{i}]\n" * times
    
        cstats = ConstructorStats.get(m.MyObject1)
        assert cstats.alive() == 0
        expected_values = [f"MyObject1[{i}]" for i in range(1, 7)] + ["MyObject1[7]"] * 4
>       assert cstats.values() == expected_values
E       AssertionError: assert ['MyObject1[0...ect1[5]', ...] == ['MyObject1[1...ect1[6]', ...]
E         
E         At index 0 diff: 'MyObject1[0]' != 'MyObject1[1]'
E         Left contains one more item: 'MyObject1[7]'
E         Use -v to get more diff

capture    = <conftest.Capture object at 0x138aa3828210>
cstats     = <pybind11_tests.ConstructorStats object at 0x138aa35336f0>
expected_values = ['MyObject1[1]', 'MyObject1[2]', 'MyObject1[3]', 'MyObject1[4]', 'MyObject1[5]', 'MyObject1[6]', ...]
i          = 7
o          = 7
times      = 4

../../pybind11-3.0.3/tests/test_smart_ptr.py:46: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### (anonymous namespace)::MyObject1 @ 0x13899bbf97f0 destroyed
### Object @ 0x13899bbf97f0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa3594fc8 destroyed
### (anonymous namespace)::MyObject1 @ 0x13899bbf97d0 destroyed
### Object @ 0x13899bbf97d0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa20a5588 destroyed
### (anonymous namespace)::MyObject1 @ 0x13899bbf97e0 destroyed
### Object @ 0x13899bbf97e0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa332d808 destroyed
_________________________________________________________________________________ test_cpp_casting __________________________________________________________________________________

    def test_cpp_casting():
        assert m.cpp_copy(m.fixed_r()) == 22.0
        assert m.cpp_copy(m.fixed_c()) == 22.0
        z = np.array([[5.0, 6], [7, 8]])
        assert m.cpp_copy(z) == 7.0
>       assert m.cpp_copy(m.get_cm_ref()) == 21.0
E       assert 31.0 == 21.0
E        +  where 31.0 = <built-in method cpp_copy of py===================================================================================== FAILURES ======================================================================================
__________________________________________________________________________________ test_smart_ptr ___________________________________________________________________________________

capture = <conftest.Capture object at 0x138aa3828210>

    @pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
    def test_smart_ptr(capture):
        # Object1
        for i, o in enumerate(
            [m.make_object_1(), m.make_object_2(), m.MyObject1(3)], start=1
        ):
            assert o.getRefCount() == 1
            with capture:
                m.print_object_1(o)
                m.print_object_2(o)
                m.print_object_3(o)
                m.print_object_4(o)
            assert capture == f"MyObject1[{i}]\n" * 4
    
        for i, o in enumerate(
            [m.make_myobject1_1(), m.make_myobject1_2(), m.MyObject1(6), 7], start=4
        ):
            print(o)
            with capture:
                if not isinstance(o, int):
                    m.print_object_1(o)
                    m.print_object_2(o)
                    m.print_object_3(o)
                    m.print_object_4(o)
                m.print_myobject1_1(o)
                m.print_myobject1_2(o)
                m.print_myobject1_3(o)
                m.print_myobject1_4(o)
    
            times = 4 if isinstance(o, int) else 8
            assert capture == f"MyObject1[{i}]\n" * times
    
        cstats = ConstructorStats.get(m.MyObject1)
        assert cstats.alive() == 0
        expected_values = [f"MyObject1[{i}]" for i in range(1, 7)] + ["MyObject1[7]"] * 4
>       assert cstats.values() == expected_values
E       AssertionError: assert ['MyObject1[0...ect1[5]', ...] == ['MyObject1[1...ect1[6]', ...]
E         
E         At index 0 diff: 'MyObject1[0]' != 'MyObject1[1]'
E         Left contains one more item: 'MyObject1[7]'
E         Use -v to get more diff

capture    = <conftest.Capture object at 0x138aa3828210>
cstats     = <pybind11_tests.ConstructorStats object at 0x138aa35336f0>
expected_values = ['MyObject1[1]', 'MyObject1[2]', 'MyObject1[3]', 'MyObject1[4]', 'MyObject1[5]', 'MyObject1[6]', ...]
i          = 7
o          = 7
times      = 4

../../pybind11-3.0.3/tests/test_smart_ptr.py:46: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### (anonymous namespace)::MyObject1 @ 0x13899bbf97f0 destroyed
### Object @ 0x13899bbf97f0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa3594fc8 destroyed
### (anonymous namespace)::MyObject1 @ 0x13899bbf97d0 destroyed
### Object @ 0x13899bbf97d0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa20a5588 destroyed
### (anonymous namespace)::MyObject1 @ 0x13899bbf97e0 destroyed
### Object @ 0x13899bbf97e0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa332d808 destroyed
_________________________________________________________________________________ test_cpp_casting __________________________________________________________________________________

    def test_cpp_casting():
        assert m.cpp_copy(m.fixed_r()) == 22.0
        assert m.cpp_copy(m.fixed_c()) == 22.0
        z = np.array([[5.0, 6], [7, 8]])
        assert m.cpp_copy(z) == 7.0
>       assert m.cpp_copy(m.get_cm_ref()) == 21.0
E       assert 31.0 == 21.0
E        +  where 31.0 = <built-in method cpp_copy of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c64490>(array([[ 0., 22., 20.],\n       [31., 37., 33.],\n       [41., 42., 38.]]))
E        +    where <built-in method cpp_copy of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c64490> = m.cpp_copy
E        +    and   array([[ 0., 22., 20.],\n       [31., 37., 33.],\n       [41., 42., 38.]]) = <built-in method get_cm_ref of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c3fdd0>()
E        +      where <built-in method get_cm_ref of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c3fdd0> = m.get_cm_ref

z          = array([[5., 6.],
       [7., 8.]])

../../pybind11-3.0.3/tests/test_eigen_matrix.py:125: AssertionError
___________________________________________________________________________________ test_sequence ___________________________________________________________________________________

    def test_sequence():
        cstats = ConstructorStats.get(m.Sequence)
    
        s = m.Sequence(5)
        if not env.GRAALPY:
>           assert cstats.values() == ["of size", "5"]
E           AssertionError: assert ['of size', '...of size', '5'] == ['of size', '5']
E             
E             Left contains 2 more items, first extra item: 'of size'
E             Use -v to get more diff

cstats     = <pybind11_tests.ConstructorStats object at 0x138aa3885db0>
s          = <pybind11_tests.sequences_and_iterators.Sequence object at 0x138aa3885c70>

../../pybind11-3.0.3/tests/test_sequences_and_iterators.py:125: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### test_submodule_sequences_and_iterators(module_&)::Sequence @ 0x13899bbf9e00 created of size 5
____________________________________________________________________________ test_methods_and_attributes ____________________________________________________________________________

    def test_methods_and_attributes():
        instance1 = m.ExampleMandA()
        instance2 = m.ExampleMandA(32)
    
        instance1.add1(instance2)
        instance1.add2(instance2)
        instance1.add3(instance2)
        instance1.add4(instance2)
        instance1.add5(instance2)
        instance1.add6(32)
        instance1.add7(32)
        instance1.add8(32)
        instance1.add9(32)
        instance1.add10(32)
    
        assert str(instance1) == "ExampleMandA[value=320]"
        assert str(instance2) == "ExampleMandA[value=32]"
        assert str(instance1.self1()) == "ExampleMandA[value=320]"
        assert str(instance1.self2()) == "ExampleMandA[value=320]"
        assert str(instance1.self3()) == "ExampleMandA[value=320]"
        assert str(instance1.self4()) == "ExampleMandA[value=320]"
        assert str(instance1.self5()) == "ExampleMandA[value=320]"
    
        assert instance1.internal1() == 320
        assert instance1.internal2() == 320
        assert instance1.internal3() == 320
        assert instance1.internal4() == 320
        assert instance1.internal5() == 320
    
        assert instance1.overloaded() == "()"
        assert instance1.overloaded(0) == "(int)"
        assert instance1.overloaded(1, 1.0) == "(int, float)"
        assert instance1.overloaded(2.0, 2) == "(float, int)"
        assert instance1.overloaded(3, 3) == "(int, int)"
        assert instance1.overloaded(4.0, 4.0) == "(float, float)"
        assert instance1.overloaded_const(-3) == "(int) const"
        assert instance1.overloaded_const(5, 5.0) == "(int, float) const"
        assert instance1.overloaded_const(6.0, 6) == "(float, int) const"
        assert instance1.overloaded_const(7, 7) == "(int, int) const"
        assert instance1.overloaded_const(8.0, 8.0) == "(float, float) const"
        assert instance1.overloaded_float(1, 1) == "(float, float)"
        assert instance1.overloaded_float(1, 1.0) == "(float, float)"
        assert instance1.overloaded_float(1.0, 1) == "(float, float)"
        assert instance1.overloaded_float(1.0, 1.0) == "(float, float)"
    
        assert instance1.value == 320
        in===================================================================================== FAILURES ======================================================================================
__________________________________________________________________________________ test_smart_ptr ___________________________________________________________________________________

capture = <conftest.Capture object at 0x138aa3828210>

    @pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
    def test_smart_ptr(capture):
        # Object1
        for i, o in enumerate(
            [m.make_object_1(), m.make_object_2(), m.MyObject1(3)], start=1
        ):
            assert o.getRefCount() == 1
            with capture:
                m.print_object_1(o)
                m.print_object_2(o)
                m.print_object_3(o)
                m.print_object_4(o)
            assert capture == f"MyObject1[{i}]\n" * 4
    
        for i, o in enumerate(
            [m.make_myobject1_1(), m.make_myobject1_2(), m.MyObject1(6), 7], start=4
        ):
            print(o)
            with capture:
                if not isinstance(o, int):
                    m.print_object_1(o)
                    m.print_object_2(o)
                    m.print_object_3(o)
                    m.print_object_4(o)
                m.print_myobject1_1(o)
                m.print_myobject1_2(o)
                m.print_myobject1_3(o)
                m.print_myobject1_4(o)
    
            times = 4 if isinstance(o, int) else 8
            assert capture == f"MyObject1[{i}]\n" * times
    
        cstats = ConstructorStats.get(m.MyObject1)
        assert cstats.alive() == 0
        expected_values = [f"MyObject1[{i}]" for i in range(1, 7)] + ["MyObject1[7]"] * 4
>       assert cstats.values() == expected_values
E       AssertionError: assert ['MyObject1[0...ect1[5]', ...] == ['MyObject1[1...ect1[6]', ...]
E         
E         At index 0 diff: 'MyObject1[0]' != 'MyObject1[1]'
E         Left contains one more item: 'MyObject1[7]'
E         Use -v to get more diff

capture    = <conftest.Capture object at 0x138aa3828210>
cstats     = <pybind11_tests.ConstructorStats object at 0x138aa35336f0>
expected_values = ['MyObject1[1]', 'MyObject1[2]', 'MyObject1[3]', 'MyObject1[4]', 'MyObject1[5]', 'MyObject1[6]', ...]
i          = 7
o          = 7
times      = 4

../../pybind11-3.0.3/tests/test_smart_ptr.py:46: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### (anonymous namespace)::MyObject1 @ 0x13899bbf97f0 destroyed
### Object @ 0x13899bbf97f0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa3594fc8 destroyed
### (anonymous namespace)::MyObject1 @ 0x13899bbf97d0 destroyed
### Object @ 0x13899bbf97d0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa20a5588 destroyed
### (anonymous namespace)::MyObject1 @ 0x13899bbf97e0 destroyed
### Object @ 0x13899bbf97e0 destroyed
### ref<(anonymous namespace)::MyObject1> @ 0x138aa332d808 destroyed
_________________________________________________________________________________ test_cpp_casting __________________________________________________________________________________

    def test_cpp_casting():
        assert m.cpp_copy(m.fixed_r()) == 22.0
        assert m.cpp_copy(m.fixed_c()) == 22.0
        z = np.array([[5.0, 6], [7, 8]])
        assert m.cpp_copy(z) == 7.0
>       assert m.cpp_copy(m.get_cm_ref()) == 21.0
E       assert 31.0 == 21.0
E        +  where 31.0 = <built-in method cpp_copy of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c64490>(array([[ 0., 22., 20.],\n       [31., 37., 33.],\n       [41., 42., 38.]]))
E        +    where <built-in method cpp_copy of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c64490> = m.cpp_copy
E        +    and   array([[ 0., 22., 20.],\n       [31., 37., 33.],\n       [41., 42., 38.]]) = <built-in method get_cm_ref of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c3fdd0>()
E        +      where <built-in method get_cm_ref of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c3fdd0> = m.get_cm_ref

z          = array([[5., 6.],
       [7., 8.]])

../../pybind11-3.0.3/tests/test_eigen_matrix.py:125: AssertionError
___________________________________________________________________________________ test_sequence ___________________________________________________________________________________

    def test_sequence():
        cstats = ConstructorStats.get(m.Sequence)
    
        s = m.Sequence(5)
        if not env.GRAALPY:
>           assert cstats.values() == ["of size", "5"]
E           AssertionError: assert ['of size', '...of size', '5'] == ['of size', '5']
E             
E             Left contains 2 more items, first extra item: 'of size'
E             Use -v to get more diff

cstats     = <pybind11_tests.ConstructorStats object at 0x138aa3885db0>
s          = <pybind11_tests.sequences_and_iterators.Sequence object at 0x138aa3885c70>

../../pybind11-3.0.3/tests/test_sequences_and_iterators.py:125: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### test_submodule_sequences_and_iterators(module_&)::Sequence @ 0x13899bbf9e00 created of size 5
____________________________________________________________________________ test_methods_and_attributes ____________________________________________________________________________

    def test_methods_and_attributes():
        instance1 = m.ExampleMandA()
        instance2 = m.ExampleMandA(32)
    
        instance1.add1(instance2)
        instance1.add2(instance2)
        instance1.add3(instance2)
        instance1.add4(instance2)
        instance1.add5(instance2)
        instance1.add6(32)
        instance1.add7(32)
        instance1.add8(32)
        instance1.add9(32)
        instance1.add10(32)
    
        assert str(instance1) == "ExampleMandA[value=320]"
        assert str(instance2) == "ExampleMandA[value=32]"
        assert str(instance1.self1()) == "ExampleMandA[value=320]"
        assert str(instance1.self2()) == "ExampleMandA[value=320]"
        assert str(instance1.self3()) == "ExampleMandA[value=320]"
        assert str(instance1.self4()) == "ExampleMandA[value=320]"
        assert str(instance1.self5()) == "ExampleMandA[value=320]"
    
        assert instance1.internal1() == 320
        assert instance1.internal2() == 320
        assert instance1.internal3() == 320
        assert instance1.internal4() == 320
        assert instance1.internal5() == 320
    
        assert instance1.overloaded() == "()"
        assert instance1.overloaded(0) == "(int)"
        assert instance1.overloaded(1, 1.0) == "(int, float)"
        assert instance1.overloaded(2.0, 2) == "(float, int)"
        assert instance1.overloaded(3, 3) == "(int, int)"
        assert instance1.overloaded(4.0, 4.0) == "(float, float)"
        assert instance1.overloaded_const(-3) == "(int) const"
        assert instance1.overloaded_const(5, 5.0) == "(int, float) const"
        assert instance1.overloaded_const(6.0, 6) == "(float, int) const"
        assert instance1.overloaded_const(7, 7) == "(int, int) const"
        assert instance1.overloaded_const(8.0, 8.0) == "(float, float) const"
        assert instance1.overloaded_float(1, 1) == "(float, float)"
        assert instance1.overloaded_float(1, 1.0) == "(float, float)"
        assert instance1.overloaded_float(1.0, 1) == "(float, float)"
        assert instance1.overloaded_float(1.0, 1.0) == "(float, float)"
    
        assert instance1.value == 320
        instance1.value = 100
        assert str(instance1) == "ExampleMandA[value=100]"
    
        if env.GRAALPY:
            pytest.skip("ConstructorStats is incompatible with GraalPy.")
    
        cstats = ConstructorStats.get(m.ExampleMandA)
        assert cstats.alive() == 2
        del instance1, instance2
        assert cstats.alive() == 0
>       assert cstats.values() == ["32"]
E       AssertionError: assert ['123', '-100...', '-7', '32'] == ['32']
E         
E         At index 0 diff: '123' != '32'
E         Left contains 5 more items, first extra item: '-100'
E         Use -v to get more diff

cstats     = <pybind11_tests.ConstructorStats object at 0x138aa370d130>

../../pybind11-3.0.3/tests/test_methods_and_attributes.py:85: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### ExampleMandA @ 0x138aa26db740 created via default constructor
### ExampleMandA @ 0x138aa26db750 created 32
### ExampleMandA @ 0x8211c1d50 created via copy constructor
### ExampleMandA @ 0x8211c1d54 created via move constructor
### ExampleMandA @ 0x8211c1d54 destroyed
### ExampleMandA @ 0x8211c1d50 destroyed
### ExampleMandA @ 0x8211c1d7c created via copy constructor
### ExampleMandA @ 0x138aa26db798 created via move constructor
### ExampleMandA @ 0x8211c1d7c destroyed
### ExampleMandA @ 0x138aa26db798 destroyed
### ExampleMandA @ 0x138aa26db740 destroyed
### ExampleMandA @ 0x138aa26db750 destroyed
______________________________________________________________________________ test_init_factory_basic ______________________________________________________________________________

    @pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
    def test_init_factory_basic():
        """Tests py::init_factory() wrapper around various ways of returning the object"""
    
        cstats = [
            ConstructorStats.get(c)
            for c in [m.TestFactory1, m.TestFactory2, m.TestFactory3]
        ]
        cstats[0].alive()  # force gc
        n_inst = ConstructorStats.detail_reg_inst()
    
        x1 = m.TestFactory1(tag.unique_ptr, 3)
        assert x1.value == "3"
        y1 = m.TestFactory1(tag.pointer)
        assert y1.value == "(empty)"
        z1 = m.TestFactory1("hi!")
        assert z1.value == "hi!"
    
        assert ConstructorStats.detail_reg_inst() == n_inst + 3
    
        x2 = m.TestFactory2(tag.move)
        assert x2.value == "(empty2)"
        y2 = m.TestFactory2(tag.pointer, 7)
        assert y2.value == "7"
        z2 = m.TestFactory2(tag.unique_ptr, "hi again")
        assert z2.value == "hi again"
    
        assert ConstructorStats.detail_reg_inst() == n_inst + 6
    
        x3 = m.TestFactory3(tag.shared_ptr)
        assert x3.value == "(empty3)"
        y3 = m.TestFactory3(tag.pointer, 42)
        assert y3.value == "42"
        z3 = m.TestFactory3("bye")
        assert z3.value == "bye"
    
        for null_ptr_kind in [tag.null_ptr, tag.null_unique_ptr, tag.null_shared_ptr]:
            with pytest.raises(TypeError) as excinfo:
                m.TestFactory3(null_ptr_kind)
            assert (
                str(excinfo.value) == "pybind11::init(): factory function returned nullptr"
            )
    
        assert [i.alive() for i in cstats] == [3, 3, 3]
        assert ConstructorStats.detail_reg_inst() == n_inst + 9
    
        del x1, y2, y3, z3
        assert [i.alive() for i in cstats] == [2, 2, 1]
        assert ConstructorStats.detail_reg_inst() == n_inst + 5
        del x2, x3, y1, z1, z2
        assert [i.alive() for i in cstats] == [0, 0, 0]
        assert ConstructorStats.detail_reg_inst() == n_inst
    
>       assert [i.values() for i in cstats] == [
            ["3", "hi!"],
            ["7", "hi again"],
            ["42", "bye"],
        ]
E       AssertionError: assert [['3', 'hi!']...['42', 'bye']] == [['3', 'hi!']...['42', 'bye']]
E         
E         At index 1 diff: ['1', '1', '1', '7', 'hi again'] != ['7', 'hi again']
E         Use -v to get more diff

cstats     = [<pybind11_tests.ConstructorStats object at 0x138aa3d97570>, <pybind11_tests.ConstructorStats object at 0x138aa3d956b0>, <pybind11_tests.ConstructorStats object at 0x138aa3d952b0>]
excinfo    = <ExceptionInfo TypeError('pybind11::init(): factory function returned nullptr') tblen=1>
n_inst     = 92
null_ptr_kind = <pybind11_tests.factory_constructors.tag.null_shared_ptr_tag object at 0x138aa0c553b0>

../../pybind11-3.0.3/tests/test_factory_constructors.py:66: AssertionError
stance1.value = 100
        assert str(instance1) == "ExampleMandA[value=100]"
    
        if env.GRAALPY:
            pytest.skip("ConstructorStats is incompatible with GraalPy.")
    
        cstats = ConstructorStats.get(m.ExampleMandA)
        assert cstats.alive() == 2
        del instance1, instance2
        assert cstats.alive() == 0
>       assert cstats.values() == ["32"]
E       AssertionError: assert ['123', '-100...', '-7', '32'] == ['32']
E         
E         At index 0 diff: '123' != '32'
E         Left contains 5 more items, first extra item: '-100'
E         Use -v to get more diff

cstats     = <pybind11_tests.ConstructorStats object at 0x138aa370d130>

../../pybind11-3.0.3/tests/test_methods_and_attributes.py:85: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### ExampleMandA @ 0x138aa26db740 created via default constructor
### ExampleMandA @ 0x138aa26db750 created 32
### ExampleMandA @ 0x8211c1d50 created via copy constructor
### ExampleMandA @ 0x8211c1d54 created via move constructor
### ExampleMandA @ 0x8211c1d54 destroyed
### ExampleMandA @ 0x8211c1d50 destroyed
### ExampleMandA @ 0x8211c1d7c created via copy constructor
### ExampleMandA @ 0x138aa26db798 created via move constructor
### ExampleMandA @ 0x8211c1d7c destroyed
### ExampleMandA @ 0x138aa26db798 destroyed
### ExampleMandA @ 0x138aa26db740 destroyed
### ExampleMandA @ 0x138aa26db750 destroyed
______________________________________________________________________________ test_init_factory_basic ______________________________________________________________________________

    @pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
    def test_init_factory_basic():
        """Tests py::init_factory() wrapper around various ways of returning the object"""
    
        cstats = [
            ConstructorStats.get(c)
            for c in [m.TestFactory1, m.TestFactory2, m.TestFactory3]
        ]
        cstats[0].alive()  # force gc
        n_inst = ConstructorStats.detail_reg_inst()
    
        x1 = m.TestFactory1(tag.unique_ptr, 3)
        assert x1.value == "3"
        y1 = m.TestFactory1(tag.pointer)
        assert y1.value == "(empty)"
        z1 = m.TestFactory1("hi!")
        assert z1.value == "hi!"
    
        assert ConstructorStats.detail_reg_inst() == n_inst + 3
    
        x2 = m.TestFactory2(tag.move)
        assert x2.value == "(empty2)"
        y2 = m.TestFactory2(tag.pointer, 7)
        assert y2.value == "7"
        z2 = m.TestFactory2(tag.unique_ptr, "hi again")
        assert z2.value == "hi again"
    
        assert ConstructorStats.detail_reg_inst() == n_inst + 6
    
        x3 = m.TestFactory3(tag.shared_ptr)
        assert x3.value == "(empty3)"
        y3 = m.TestFactory3(tag.pointer, 42)
        assert y3.value == "42"
        z3 = m.TestFactory3("bye")
        assert z3.value == "bye"
    
        for null_ptr_kind in [tag.null_ptr, tag.null_unique_ptr, tag.null_shared_ptr]:
            with pytest.raises(TypeError) as excinfo:
                m.TestFactory3(null_ptr_kind)
            assert (
                str(excinfo.value) == "pybind11::init(): factory function returned nullptr"
            )
    
        assert [i.alive() for i in cstats] == [3, 3, 3]
        assert ConstructorStats.detail_reg_inst() == n_inst + 9
    
        del x1, y2, y3, z3
        assert [i.alive() for i in cstats] == [2, 2, 1]
        assert ConstructorStats.detail_reg_inst() == n_inst + 5
        del x2, x3, y1, z1, z2
        assert [i.alive() for i in cstats] == [0, 0, 0]
        assert ConstructorStats.detail_reg_inst() == n_inst
    
>       assert [i.values() for i in cstats] == [
            ["3", "hi!"],
            ["7", "hi again"],
            ["42", "bye"],
        ]
E       AssertionError: assert [['3', 'hi!']...['42', 'bye']] == [['3', 'hi!']...['42', 'bye']]
E         
E         At index 1 diff: ['1', '1', '1', '7', 'hi again'] != ['7', 'hi again']
E         Use -v to get more diff

cstats     = [<pybind11_tests.ConstructorStats object at 0x138aa3d97570>, <pybind11_tests.ConstructorStats object at 0x138aa3d956b0>, <pybind11_tests.ConstructorStats object at 0x138aa3d952b0>]
excinfo    = <ExceptionInfo TypeError('pybind11::init(): factory function returned nullptr') tblen=1>
n_inst     = 92
null_ptr_kind = <pybind11_tests.factory_constructors.tag.null_shared_ptr_tag object at 0x138aa0c553b0>

../../pybind11-3.0.3/tests/test_factory_constructors.py:66: AssertionError
bind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c64490>(array([[ 0., 22., 20.],\n       [31., 37., 33.],\n       [41., 42., 38.]]))
E        +    where <built-in method cpp_copy of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c64490> = m.cpp_copy
E        +    and   array([[ 0., 22., 20.],\n       [31., 37., 33.],\n       [41., 42., 38.]]) = <built-in method get_cm_ref of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c3fdd0>()
E        +      where <built-in method get_cm_ref of pybind11_builtins.pybind11_detail_function_record_v1_system_libcpp_abi1 object at 0x138aa0c3fdd0> = m.get_cm_ref

z          = array([[5., 6.],
       [7., 8.]])

../../pybind11-3.0.3/tests/test_eigen_matrix.py:125: AssertionError
___________________________________________________________________________________ test_sequence ___________________________________________________________________________________

    def test_sequence():
        cstats = ConstructorStats.get(m.Sequence)
    
        s = m.Sequence(5)
        if not env.GRAALPY:
>           assert cstats.values() == ["of size", "5"]
E           AssertionError: assert ['of size', '...of size', '5'] == ['of size', '5']
E             
E             Left contains 2 more items, first extra item: 'of size'
E             Use -v to get more diff

cstats     = <pybind11_tests.ConstructorStats object at 0x138aa3885db0>
s          = <pybind11_tests.sequences_and_iterators.Sequence object at 0x138aa3885c70>

../../pybind11-3.0.3/tests/test_sequences_and_iterators.py:125: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### test_submodule_sequences_and_iterators(module_&)::Sequence @ 0x13899bbf9e00 created of size 5
____________________________________________________________________________ test_methods_and_attributes ____________________________________________________________________________

    def test_methods_and_attributes():
        instance1 = m.ExampleMandA()
        instance2 = m.ExampleMandA(32)
    
        instance1.add1(instance2)
        instance1.add2(instance2)
        instance1.add3(instance2)
        instance1.add4(instance2)
        instance1.add5(instance2)
        instance1.add6(32)
        instance1.add7(32)
        instance1.add8(32)
        instance1.add9(32)
        instance1.add10(32)
    
        assert str(instance1) == "ExampleMandA[value=320]"
        assert str(instance2) == "ExampleMandA[value=32]"
        assert str(instance1.self1()) == "ExampleMandA[value=320]"
        assert str(instance1.self2()) == "ExampleMandA[value=320]"
        assert str(instance1.self3()) == "ExampleMandA[value=320]"
        assert str(instance1.self4()) == "ExampleMandA[value=320]"
        assert str(instance1.self5()) == "ExampleMandA[value=320]"
    
        assert instance1.internal1() == 320
        assert instance1.internal2() == 320
        assert instance1.internal3() == 320
        assert instance1.internal4() == 320
        assert instance1.internal5() == 320
    
        assert instance1.overloaded() == "()"
        assert instance1.overloaded(0) == "(int)"
        assert instance1.overloaded(1, 1.0) == "(int, float)"
        assert instance1.overloaded(2.0, 2) == "(float, int)"
        assert instance1.overloaded(3, 3) == "(int, int)"
        assert instance1.overloaded(4.0, 4.0) == "(float, float)"
        assert instance1.overloaded_const(-3) == "(int) const"
        assert instance1.overloaded_const(5, 5.0) == "(int, float) const"
        assert instance1.overloaded_const(6.0, 6) == "(float, int) const"
        assert instance1.overloaded_const(7, 7) == "(int, int) const"
        assert instance1.overloaded_const(8.0, 8.0) == "(float, float) const"
        assert instance1.overloaded_float(1, 1) == "(float, float)"
        assert instance1.overloaded_float(1, 1.0) == "(float, float)"
        assert instance1.overloaded_float(1.0, 1) == "(float, float)"
        assert instance1.overloaded_float(1.0, 1.0) == "(float, float)"
    
        assert instance1.value == 320
        instance1.value = 100
        assert str(instance1) == "ExampleMandA[value=100]"
    
        if env.GRAALPY:
            pytest.skip("ConstructorStats is incompatible with GraalPy.")
    
        cstats = ConstructorStats.get(m.ExampleMandA)
        assert cstats.alive() == 2
        del instance1, instance2
        assert cstats.alive() == 0
>       assert cstats.values() == ["32"]
E       AssertionError: assert ['123', '-100...', '-7', '32'] == ['32']
E         
E         At index 0 diff: '123' != '32'
E         Left contains 5 more items, first extra item: '-100'
E         Use -v to get more diff

cstats     = <pybind11_tests.ConstructorStats object at 0x138aa370d130>

../../pybind11-3.0.3/tests/test_methods_and_attributes.py:85: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
### ExampleMandA @ 0x138aa26db740 created via default constructor
### ExampleMandA @ 0x138aa26db750 created 32
### ExampleMandA @ 0x8211c1d50 created via copy constructor
### ExampleMandA @ 0x8211c1d54 created via move constructor
### ExampleMandA @ 0x8211c1d54 destroyed
### ExampleMandA @ 0x8211c1d50 destroyed
### ExampleMandA @ 0x8211c1d7c created via copy constructor
### ExampleMandA @ 0x138aa26db798 created via move constructor
### ExampleMandA @ 0x8211c1d7c destroyed
### ExampleMandA @ 0x138aa26db798 destroyed
### ExampleMandA @ 0x138aa26db740 destroyed
### ExampleMandA @ 0x138aa26db750 destroyed
______________________________________________________________________________ test_init_factory_basic ______________________________________________________________________________

    @pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
    def test_init_factory_basic():
        """Tests py::init_factory() wrapper around various ways of returning the object"""
    
        cstats = [
            ConstructorStats.get(c)
            for c in [m.TestFactory1, m.TestFactory2, m.TestFactory3]
        ]
        cstats[0].alive()  # force gc
        n_inst = ConstructorStats.detail_reg_inst()
    
        x1 = m.TestFactory1(tag.unique_ptr, 3)
        assert x1.value == "3"
        y1 = m.TestFactory1(tag.pointer)
        assert y1.value == "(empty)"
        z1 = m.TestFactory1("hi!")
        assert z1.value == "hi!"
    
        assert ConstructorStats.detail_reg_inst() == n_inst + 3
    
        x2 = m.TestFactory2(tag.move)
        assert x2.value == "(empty2)"
        y2 = m.TestFactory2(tag.pointer, 7)
        assert y2.value == "7"
        z2 = m.TestFactory2(tag.unique_ptr, "hi again")
        assert z2.value == "hi again"
    
        assert ConstructorStats.detail_reg_inst() == n_inst + 6
    
        x3 = m.TestFactory3(tag.shared_ptr)
        assert x3.value == "(empty3)"
        y3 = m.TestFactory3(tag.pointer, 42)
        assert y3.value == "42"
        z3 = m.TestFactory3("bye")
        assert z3.value == "bye"
    
        for null_ptr_kind in [tag.null_ptr, tag.null_unique_ptr, tag.null_shared_ptr]:
            with pytest.raises(TypeError) as excinfo:
                m.TestFactory3(null_ptr_kind)
            assert (
                str(excinfo.value) == "pybind11::init(): factory function returned nullptr"
            )
    
        assert [i.alive() for i in cstats] == [3, 3, 3]
        assert ConstructorStats.detail_reg_inst() == n_inst + 9
    
        del x1, y2, y3, z3
        assert [i.alive() for i in cstats] == [2, 2, 1]
        assert ConstructorStats.detail_reg_inst() == n_inst + 5
        del x2, x3, y1, z1, z2
        assert [i.alive() for i in cstats] == [0, 0, 0]
        assert ConstructorStats.detail_reg_inst() == n_inst
    
>       assert [i.values() for i in cstats] == [
            ["3", "hi!"],
            ["7", "hi again"],
            ["42", "bye"],
        ]
E       AssertionError: assert [['3', 'hi!']...['42', 'bye']] == [['3', 'hi!']...['42', 'bye']]
E         
E         At index 1 diff: ['1', '1', '1', '7', 'hi again'] != ['7', 'hi again']
E         Use -v to get more diff

cstats     = [<pybind11_tests.ConstructorStats object at 0x138aa3d97570>, <pybind11_tests.ConstructorStats object at 0x138aa3d956b0>, <pybind11_tests.ConstructorStats object at 0x138aa3d952b0>]
excinfo    = <ExceptionInfo TypeError('pybind11::init(): factory function returned nullptr') tblen=1>
n_inst     = 92
null_ptr_kind = <pybind11_tests.factory_constructors.tag.null_shared_ptr_tag object at 0x138aa0c553b0>

../../pybind11-3.0.3/tests/test_factory_constructors.py:66: AssertionError

Reproducible example code


Is this a regression? Put the last known working version here if it is.

Not a regression

Metadata

Metadata

Assignees

No one assigned

    Labels

    triageNew bug, unverified

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions