diff --git a/tests/test_class.cpp b/tests/test_class.cpp index 3d567fc1f5..11e228cb10 100644 --- a/tests/test_class.cpp +++ b/tests/test_class.cpp @@ -477,6 +477,7 @@ TEST_SUBMODULE(class_, m) { // test_qualname // #1166: nested class docstring doesn't show nested name // Also related: tests that __qualname__ is set properly + m.def("module_func", []() {}); struct NestBase {}; struct Nested {}; py::class_ base(m, "NestBase"); @@ -484,9 +485,12 @@ TEST_SUBMODULE(class_, m) { py::class_(base, "Nested") .def(py::init<>()) .def("fn", [](Nested &, int, NestBase &, Nested &) {}) - .def("fa", [](Nested &, int, NestBase &, Nested &) {}, "a"_a, "b"_a, "c"_a); + .def( + "fa", [](Nested &, int, NestBase &, Nested &) {}, "a"_a, "b"_a, "c"_a) + .def_static("static_func", []() {}); base.def("g", [](NestBase &, Nested &) {}); base.def("h", []() { return NestBase(); }); + base.def_static("static_func", []() {}); // test_error_after_conversion // The second-pass path through dispatcher() previously didn't diff --git a/tests/test_class.py b/tests/test_class.py index 1e82930361..9f18b14a7d 100644 --- a/tests/test_class.py +++ b/tests/test_class.py @@ -142,6 +142,12 @@ def test_qualname(doc): assert m.NestBase.__qualname__ == "NestBase" assert m.NestBase.Nested.__qualname__ == "NestBase.Nested" + assert m.module_func.__qualname__ == "module_func" + assert m.NestBase.g.__qualname__ == "NestBase.g" + assert m.NestBase.static_func.__qualname__ == "NestBase.static_func" + assert m.NestBase.Nested.fn.__qualname__ == "NestBase.Nested.fn" + assert m.NestBase.Nested.static_func.__qualname__ == "NestBase.Nested.static_func" + assert ( doc(m.NestBase.__init__) == """