diff --git a/tests/test_class_sh_property.cpp b/tests/test_class_sh_property.cpp index 35615cec6..1f6922634 100644 --- a/tests/test_class_sh_property.cpp +++ b/tests/test_class_sh_property.cpp @@ -35,6 +35,15 @@ struct Outer { inline void DisownOuter(std::unique_ptr) {} +struct WithCharArrayMember { + WithCharArrayMember() { std::memcpy(char6_member, "Char6", 6); } + char char6_member[6]; +}; + +struct WithConstCharPtrMember { + const char *const_char_ptr_member = "ConstChar*"; +}; + } // namespace test_class_sh_property PYBIND11_TYPE_CASTER_BASE_HOLDER(test_class_sh_property::ClassicField, @@ -45,6 +54,9 @@ PYBIND11_TYPE_CASTER_BASE_HOLDER(test_class_sh_property::ClassicOuter, PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::Field) PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::Outer) +PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::WithCharArrayMember) +PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::WithConstCharPtrMember) + TEST_SUBMODULE(class_sh_property, m) { using namespace test_class_sh_property; @@ -83,4 +95,12 @@ TEST_SUBMODULE(class_sh_property, m) { .def_readwrite("m_shcp_readwrite", &Outer::m_shcp); m.def("DisownOuter", DisownOuter); + + py::classh(m, "WithCharArrayMember") + .def(py::init<>()) + .def_readonly("char6_member", &WithCharArrayMember::char6_member); + + py::classh(m, "WithConstCharPtrMember") + .def(py::init<>()) + .def_readonly("const_char_ptr_member", &WithConstCharPtrMember::const_char_ptr_member); } diff --git a/tests/test_class_sh_property.py b/tests/test_class_sh_property.py index 9aeef44e0..089cf7caa 100644 --- a/tests/test_class_sh_property.py +++ b/tests/test_class_sh_property.py @@ -152,3 +152,13 @@ def test_unique_ptr_field_proxy_poc(m_attr): with pytest.raises(AttributeError): del field_proxy.num assert field_proxy.num == 82 + + +def test_readonly_char6_member(): + obj = m.WithCharArrayMember() + assert obj.char6_member == "Char6" + + +def test_readonly_const_char_ptr_member(): + obj = m.WithConstCharPtrMember() + assert obj.const_char_ptr_member == "ConstChar*"