Skip to content

Commit b92b287

Browse files
committed
Add tests for disable enum members docstring option
1 parent 771fecc commit b92b287

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

tests/test_docstring_options.cpp

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,77 @@ TEST_SUBMODULE(docstring_options, m) {
8585
&DocstringTestFoo::setValue,
8686
"This is a property docstring");
8787
}
88+
89+
{
90+
enum class DocstringTestEnum1
91+
{
92+
Member1,
93+
Member2
94+
};
95+
96+
py::enum_<DocstringTestEnum1>(m, "DocstringTestEnum1", "Enum docstring")
97+
.value("Member1", DocstringTestEnum1::Member1)
98+
.value("Member2", DocstringTestEnum1::Member2);
99+
}
100+
101+
{
102+
py::options options;
103+
options.enable_enum_members_docstring();
104+
105+
enum class DocstringTestEnum2
106+
{
107+
Member1,
108+
Member2
109+
};
110+
111+
py::enum_<DocstringTestEnum2>(m, "DocstringTestEnum2", "Enum docstring")
112+
.value("Member1", DocstringTestEnum2::Member1)
113+
.value("Member2", DocstringTestEnum2::Member2);
114+
}
115+
116+
{
117+
py::options options;
118+
options.disable_enum_members_docstring();
119+
120+
enum class DocstringTestEnum3
121+
{
122+
Member1,
123+
Member2
124+
};
125+
126+
py::enum_<DocstringTestEnum3>(m, "DocstringTestEnum3", "Enum docstring")
127+
.value("Member1", DocstringTestEnum3::Member1)
128+
.value("Member2", DocstringTestEnum3::Member2);
129+
}
130+
131+
{
132+
py::options options;
133+
options.disable_user_defined_docstrings();
134+
135+
enum class DocstringTestEnum4
136+
{
137+
Member1,
138+
Member2
139+
};
140+
141+
py::enum_<DocstringTestEnum4>(m, "DocstringTestEnum4", "Enum docstring")
142+
.value("Member1", DocstringTestEnum4::Member1)
143+
.value("Member2", DocstringTestEnum4::Member2);
144+
}
145+
146+
{
147+
py::options options;
148+
options.disable_user_defined_docstrings();
149+
options.disable_enum_members_docstring();
150+
151+
enum class DocstringTestEnum5
152+
{
153+
Member1,
154+
Member2
155+
};
156+
157+
py::enum_<DocstringTestEnum5>(m, "DocstringTestEnum5", "Enum docstring")
158+
.value("Member1", DocstringTestEnum5::Member1)
159+
.value("Member2", DocstringTestEnum5::Member2);
160+
}
88161
}

tests/test_docstring_options.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,20 @@ def test_docstring_options():
3939
# Suppression of user-defined docstrings for non-function objects
4040
assert not m.DocstringTestFoo.__doc__
4141
assert not m.DocstringTestFoo.value_prop.__doc__
42+
43+
# Check existig behaviour of enum docstings
44+
assert m.DocstringTestEnum1.__doc__ == "Enum docstring\n\nMembers:\n\n Member1\n\n Member2"
45+
46+
# options.enable_enum_members_docstring()
47+
assert m.DocstringTestEnum2.__doc__ == "Enum docstring\n\nMembers:\n\n Member1\n\n Member2"
48+
49+
# options.disable_enum_members_docstring()
50+
assert m.DocstringTestEnum3.__doc__ == "Enum docstring"
51+
52+
# options.disable_user_defined_docstrings()
53+
assert m.DocstringTestEnum4.__doc__ == "Members:\n\n Member1\n\n Member2"
54+
55+
# options.disable_user_defined_docstrings()
56+
# options.disable_enum_members_docstring()
57+
# When all options are disabled, no docstring (instead of an empty one) should be generated
58+
assert m.DocstringTestEnum5.__doc__ is None

0 commit comments

Comments
 (0)