test_docstring_options.py revision 12037
111986Sandreas.sandberg@arm.com
211986Sandreas.sandberg@arm.com
311986Sandreas.sandberg@arm.comdef test_docstring_options():
411986Sandreas.sandberg@arm.com    from pybind11_tests import (test_function1, test_function2, test_function3,
511986Sandreas.sandberg@arm.com                                test_function4, test_function5, test_function6,
612037Sandreas.sandberg@arm.com                                test_function7, DocstringTestFoo,
712037Sandreas.sandberg@arm.com                                test_overloaded1, test_overloaded2, test_overloaded3)
811986Sandreas.sandberg@arm.com
911986Sandreas.sandberg@arm.com    # options.disable_function_signatures()
1011986Sandreas.sandberg@arm.com    assert not test_function1.__doc__
1111986Sandreas.sandberg@arm.com
1211986Sandreas.sandberg@arm.com    assert test_function2.__doc__ == "A custom docstring"
1311986Sandreas.sandberg@arm.com
1412037Sandreas.sandberg@arm.com    # docstring specified on just the first overload definition:
1512037Sandreas.sandberg@arm.com    assert test_overloaded1.__doc__ == "Overload docstring"
1612037Sandreas.sandberg@arm.com
1712037Sandreas.sandberg@arm.com    # docstring on both overloads:
1812037Sandreas.sandberg@arm.com    assert test_overloaded2.__doc__ == "overload docstring 1\noverload docstring 2"
1912037Sandreas.sandberg@arm.com
2012037Sandreas.sandberg@arm.com    # docstring on only second overload:
2112037Sandreas.sandberg@arm.com    assert test_overloaded3.__doc__ == "Overload docstr"
2212037Sandreas.sandberg@arm.com
2311986Sandreas.sandberg@arm.com    # options.enable_function_signatures()
2411986Sandreas.sandberg@arm.com    assert test_function3.__doc__ .startswith("test_function3(a: int, b: int) -> None")
2511986Sandreas.sandberg@arm.com
2611986Sandreas.sandberg@arm.com    assert test_function4.__doc__ .startswith("test_function4(a: int, b: int) -> None")
2711986Sandreas.sandberg@arm.com    assert test_function4.__doc__ .endswith("A custom docstring\n")
2811986Sandreas.sandberg@arm.com
2911986Sandreas.sandberg@arm.com    # options.disable_function_signatures()
3011986Sandreas.sandberg@arm.com    # options.disable_user_defined_docstrings()
3111986Sandreas.sandberg@arm.com    assert not test_function5.__doc__
3211986Sandreas.sandberg@arm.com
3311986Sandreas.sandberg@arm.com    # nested options.enable_user_defined_docstrings()
3411986Sandreas.sandberg@arm.com    assert test_function6.__doc__ == "A custom docstring"
3511986Sandreas.sandberg@arm.com
3611986Sandreas.sandberg@arm.com    # RAII destructor
3711986Sandreas.sandberg@arm.com    assert test_function7.__doc__ .startswith("test_function7(a: int, b: int) -> None")
3811986Sandreas.sandberg@arm.com    assert test_function7.__doc__ .endswith("A custom docstring\n")
3911986Sandreas.sandberg@arm.com
4011986Sandreas.sandberg@arm.com    # Suppression of user-defined docstrings for non-function objects
4111986Sandreas.sandberg@arm.com    assert not DocstringTestFoo.__doc__
4211986Sandreas.sandberg@arm.com    assert not DocstringTestFoo.value_prop.__doc__
43