Skip to content

Commit 51a968c

Browse files
authored
Import additional test code originally added under PR #5213 (test_class_sh_property_bakein) (#5256)
Corresponding to PR #5213 commit 3406be6 Reduced from use cases in the wild: * `test_readonly_char6_member()`: https://github.com/pytorch/pytorch/blob/4410c44ae6fd8eb36f2358ac76f7d988ca7537c5/torch/csrc/cuda/Module.cpp#L961 * `test_readonly_const_char_ptr_member()`: https://github.com/facebookresearch/nle/blob/862a439a84f52abca94d1f744d57061da12c5831/include/permonst.h#L43
1 parent 800e5e1 commit 51a968c

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

tests/test_class_sh_property.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ struct Outer {
3535

3636
inline void DisownOuter(std::unique_ptr<Outer>) {}
3737

38+
struct WithCharArrayMember {
39+
WithCharArrayMember() { std::memcpy(char6_member, "Char6", 6); }
40+
char char6_member[6];
41+
};
42+
43+
struct WithConstCharPtrMember {
44+
const char *const_char_ptr_member = "ConstChar*";
45+
};
46+
3847
} // namespace test_class_sh_property
3948

4049
PYBIND11_TYPE_CASTER_BASE_HOLDER(test_class_sh_property::ClassicField,
@@ -45,6 +54,9 @@ PYBIND11_TYPE_CASTER_BASE_HOLDER(test_class_sh_property::ClassicOuter,
4554
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::Field)
4655
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::Outer)
4756

57+
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::WithCharArrayMember)
58+
PYBIND11_SMART_HOLDER_TYPE_CASTERS(test_class_sh_property::WithConstCharPtrMember)
59+
4860
TEST_SUBMODULE(class_sh_property, m) {
4961
using namespace test_class_sh_property;
5062

@@ -83,4 +95,12 @@ TEST_SUBMODULE(class_sh_property, m) {
8395
.def_readwrite("m_shcp_readwrite", &Outer::m_shcp);
8496

8597
m.def("DisownOuter", DisownOuter);
98+
99+
py::classh<WithCharArrayMember>(m, "WithCharArrayMember")
100+
.def(py::init<>())
101+
.def_readonly("char6_member", &WithCharArrayMember::char6_member);
102+
103+
py::classh<WithConstCharPtrMember>(m, "WithConstCharPtrMember")
104+
.def(py::init<>())
105+
.def_readonly("const_char_ptr_member", &WithConstCharPtrMember::const_char_ptr_member);
86106
}

tests/test_class_sh_property.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,13 @@ def test_unique_ptr_field_proxy_poc(m_attr):
152152
with pytest.raises(AttributeError):
153153
del field_proxy.num
154154
assert field_proxy.num == 82
155+
156+
157+
def test_readonly_char6_member():
158+
obj = m.WithCharArrayMember()
159+
assert obj.char6_member == "Char6"
160+
161+
162+
def test_readonly_const_char_ptr_member():
163+
obj = m.WithConstCharPtrMember()
164+
assert obj.const_char_ptr_member == "ConstChar*"

0 commit comments

Comments
 (0)