mirror of https://github.com/swig/swig
205 lines
6.2 KiB
Python
205 lines
6.2 KiB
Python
from autodoc import *
|
|
import comment_verifier
|
|
import inspect
|
|
import sys
|
|
|
|
def check(got, expected, expected_builtin=None, skip=False):
|
|
if not skip:
|
|
expect = expected
|
|
if is_python_builtin() and expected_builtin != None:
|
|
expect = expected_builtin
|
|
comment_verifier.check(got, expect)
|
|
|
|
def is_fastproxy():
|
|
fastproxy = True
|
|
try:
|
|
from autodoc import _swig_new_instance_method
|
|
except ImportError:
|
|
fastproxy = False
|
|
return fastproxy
|
|
|
|
if is_fastproxy():
|
|
# Detect when -fastproxy is specified and skip test as it changes the function names making it
|
|
# hard to test... skip until the number of options are reduced in SWIG-3.1 and autodoc is improved
|
|
sys.exit(0)
|
|
|
|
# skip builtin check - the autodoc is missing, but it probably should not be
|
|
skip = True
|
|
|
|
check(inspect.getdoc(A), "Proxy of C++ A class.", "::A")
|
|
check(inspect.getdoc(A.funk), "just a string.")
|
|
check(inspect.getdoc(A.func0),
|
|
"func0(self, arg2, hello) -> int")
|
|
check(inspect.getdoc(A.func1),
|
|
"func1(A self, short arg2, Tuple hello) -> int")
|
|
check(inspect.getdoc(A.func2),
|
|
"func2(self, arg2, hello) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"arg2: short\n"
|
|
"hello: int tuple[2]")
|
|
check(inspect.getdoc(A.func3),
|
|
"func3(A self, short arg2, Tuple hello) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"arg2: short\n"
|
|
"hello: int tuple[2]")
|
|
|
|
check(inspect.getdoc(A.func0default),
|
|
"func0default(self, e, arg3, hello, f=2) -> int\n"
|
|
"func0default(self, e, arg3, hello) -> int")
|
|
check(inspect.getdoc(A.func1default),
|
|
"func1default(A self, A e, short arg3, Tuple hello, double f=2) -> int\n"
|
|
"func1default(A self, A e, short arg3, Tuple hello) -> int")
|
|
check(inspect.getdoc(A.func2default),
|
|
"func2default(self, e, arg3, hello, f=2) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg3: short\n"
|
|
"hello: int tuple[2]\n"
|
|
"f: double\n"
|
|
"\n"
|
|
"func2default(self, e, arg3, hello) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg3: short\n"
|
|
"hello: int tuple[2]")
|
|
check(inspect.getdoc(A.func3default),
|
|
"func3default(A self, A e, short arg3, Tuple hello, double f=2) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg3: short\n"
|
|
"hello: int tuple[2]\n"
|
|
"f: double\n"
|
|
"\n"
|
|
"func3default(A self, A e, short arg3, Tuple hello) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg3: short\n"
|
|
"hello: int tuple[2]")
|
|
|
|
check(inspect.getdoc(A.func0static),
|
|
"func0static(e, arg2, hello, f=2) -> int\n"
|
|
"func0static(e, arg2, hello) -> int")
|
|
check(inspect.getdoc(A.func1static),
|
|
"func1static(A e, short arg2, Tuple hello, double f=2) -> int\n"
|
|
"func1static(A e, short arg2, Tuple hello) -> int")
|
|
check(inspect.getdoc(A.func2static),
|
|
"func2static(e, arg2, hello, f=2) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg2: short\n"
|
|
"hello: int tuple[2]\n"
|
|
"f: double\n"
|
|
"\n"
|
|
"func2static(e, arg2, hello) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg2: short\n"
|
|
"hello: int tuple[2]")
|
|
check(inspect.getdoc(A.func3static),
|
|
"func3static(A e, short arg2, Tuple hello, double f=2) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg2: short\n"
|
|
"hello: int tuple[2]\n"
|
|
"f: double\n"
|
|
"\n"
|
|
"func3static(A e, short arg2, Tuple hello) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"e: A *\n"
|
|
"arg2: short\n"
|
|
"hello: int tuple[2]")
|
|
|
|
if sys.version_info[0:2] > (2, 4):
|
|
# Python 2.4 does not seem to work
|
|
check(inspect.getdoc(A.variable_a),
|
|
"A_variable_a_get(self) -> int",
|
|
"A.variable_a"
|
|
)
|
|
check(inspect.getdoc(A.variable_b),
|
|
"A_variable_b_get(A self) -> int",
|
|
"A.variable_b"
|
|
)
|
|
check(inspect.getdoc(A.variable_c),
|
|
"A_variable_c_get(self) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"self: A *",
|
|
"A.variable_c"
|
|
)
|
|
check(inspect.getdoc(A.variable_d),
|
|
"A_variable_d_get(A self) -> int\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"self: A *",
|
|
"A.variable_d"
|
|
)
|
|
|
|
check(inspect.getdoc(B),
|
|
"Proxy of C++ B class.",
|
|
"::B"
|
|
)
|
|
check(inspect.getdoc(C.__init__), "__init__(self, a, b, h) -> C", None, skip)
|
|
check(inspect.getdoc(D.__init__),
|
|
"__init__(D self, int a, int b, Hola h) -> D", None, skip)
|
|
check(inspect.getdoc(E.__init__),
|
|
"__init__(self, a, b, h) -> E\n"
|
|
"\n"
|
|
"__init__(self, a, b, h) -> E\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"a: special comment for parameter a\n"
|
|
"b: another special comment for parameter b\n"
|
|
"h: enum Hola", None, skip
|
|
)
|
|
check(inspect.getdoc(F.__init__),
|
|
"__init__(F self, int a, int b, Hola h) -> F\n"
|
|
"\n"
|
|
"__init__(F self, int a, int b, Hola h) -> F\n"
|
|
"\n"
|
|
"Parameters\n"
|
|
"----------\n"
|
|
"a: special comment for parameter a\n"
|
|
"b: another special comment for parameter b\n"
|
|
"h: enum Hola", None, skip
|
|
)
|
|
|
|
check(inspect.getdoc(B.funk),
|
|
"funk(B self, int c, int d) -> int")
|
|
check(inspect.getdoc(funk), "funk(A e, short arg2, int c, int d) -> int")
|
|
check(inspect.getdoc(funkdefaults),
|
|
"funkdefaults(A e, short arg2, int c, int d, double f=2) -> int\n"
|
|
"funkdefaults(A e, short arg2, int c, int d) -> int")
|
|
|
|
check(inspect.getdoc(func_input), "func_input(int * INPUT) -> int")
|
|
check(inspect.getdoc(func_output), "func_output() -> int")
|
|
check(inspect.getdoc(func_inout), "func_inout(int * INOUT) -> int")
|
|
check(inspect.getdoc(func_cb), "func_cb(int c, int d) -> int")
|
|
check(inspect.getdoc(banana), "banana(S a, S b, int c, Integer d)")
|
|
|
|
check(inspect.getdoc(TInteger), "Proxy of C++ T< int > class.", "::T< int >")
|
|
check(inspect.getdoc(TInteger.__init__), "__init__(TInteger self) -> TInteger", None, skip)
|
|
check(inspect.getdoc(TInteger.inout), "inout(TInteger self, TInteger t) -> TInteger")
|