1from pluggy import _formatdef, varnames
2
3
4def test_varnames():
5    def f(x):
6        i = 3  # noqa
7
8    class A(object):
9        def f(self, y):
10            pass
11
12    class B(object):
13        def __call__(self, z):
14            pass
15
16    assert varnames(f) == (("x",), ())
17    assert varnames(A().f) == (('y',), ())
18    assert varnames(B()) == (('z',), ())
19
20
21def test_varnames_default():
22    def f(x, y=3):
23        pass
24
25    assert varnames(f) == (("x",), ("y",))
26
27
28def test_varnames_class():
29    class C(object):
30        def __init__(self, x):
31            pass
32
33    class D(object):
34        pass
35
36    class E(object):
37        def __init__(self, x):
38            pass
39
40    class F(object):
41        pass
42
43    assert varnames(C) == (("x",), ())
44    assert varnames(D) == ((), ())
45    assert varnames(E) == (("x",), ())
46    assert varnames(F) == ((), ())
47
48
49def test_formatdef():
50    def function1():
51        pass
52
53    assert _formatdef(function1) == 'function1()'
54
55    def function2(arg1):
56        pass
57
58    assert _formatdef(function2) == "function2(arg1)"
59
60    def function3(arg1, arg2="qwe"):
61        pass
62
63    assert _formatdef(function3) == "function3(arg1, arg2='qwe')"
64
65    def function4(arg1, *args, **kwargs):
66        pass
67
68    assert _formatdef(function4) == "function4(arg1, *args, **kwargs)"
69