from python_docstring import * import inspect import sys def check(got, expected): expected_list = expected.split("\n") got_list = got.split("\n") if expected_list != got_list: raise RuntimeError("\n" + "Expected: " + str(expected_list) + "\n" + "Got : " + str(got_list)) # When getting docstrings, use inspect.getdoc(x) instead of x.__doc__ otherwise the different options # such as -O and -builtin may produce different initial indentation. check(inspect.getdoc(DocStrings.docstring1), " line 1\n" "line 2\n" "\n" "\n" "\n" "line 3" ) check(inspect.getdoc(DocStrings.docstring2), "line 1\n" " line 2\n" "\n" "\n" "\n" " line 3" ) check(inspect.getdoc(DocStrings.docstring3), "line 1\n" " line 2\n" "\n" "\n" "\n" " line 3" ) check(inspect.getdoc(DocStrings.docstring4), "line 1\n" " line 2\n" "\n" "\n" "\n" " line 3" ) check(inspect.getdoc(DocStrings.docstring5), "line 1\n" " line 2\n" "\n" "\n" "\n" " line 3" ) check(inspect.getdoc(DocStrings.docstring6), "line 1\n" " line 2\n" "\n" "\n" "\n" " line 3" ) check(inspect.getdoc(DocStrings.docstring7), "line 1\n" "line 2\n" "line 3" ) check(inspect.getdoc(DocStrings.docstringA), "first line\n" "second line" ) check(inspect.getdoc(DocStrings.docstringB), "first line\n" "second line" ) check(inspect.getdoc(DocStrings.docstringC), "first line\n" "second line" ) # One line doc special case, use __doc__ to check for stripped whitespace check(DocStrings.docstringW.__doc__, "one line docs") check(DocStrings.docstringX.__doc__, "one line docs leading whitespace") check(DocStrings.docstringY.__doc__, "one line docs trailing whitespace") check(DocStrings.docstringZ.__doc__, "one line docs whitespace") check(inspect.getdoc(DocStrings.docstringW), "one line docs" ) check(inspect.getdoc(DocStrings.docstringX), "one line docs leading whitespace" ) check(inspect.getdoc(DocStrings.docstringY), "one line docs trailing whitespace" ) check(inspect.getdoc(DocStrings.docstringZ), "one line docs whitespace" )