- Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathtest_signatures.py
67 lines (57 loc) · 1.75 KB
/
test_signatures.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
frominspectimportParameter, Signature, signature
importpytest
fromarray_api_tests .test_signaturesimport_test_inspectable_func
defstub(foo, /, bar=None, *, baz=None):
pass
stub_sig=signature(stub)
@pytest.mark.parametrize(
"sig",
[
Signature(
[
Parameter("foo", Parameter.POSITIONAL_ONLY),
Parameter("bar", Parameter.POSITIONAL_OR_KEYWORD),
Parameter("baz", Parameter.KEYWORD_ONLY),
]
),
Signature(
[
Parameter("foo", Parameter.POSITIONAL_ONLY),
Parameter("bar", Parameter.POSITIONAL_OR_KEYWORD),
Parameter("baz", Parameter.POSITIONAL_OR_KEYWORD),
]
),
Signature(
[
Parameter("foo", Parameter.POSITIONAL_ONLY),
Parameter("bar", Parameter.POSITIONAL_OR_KEYWORD),
Parameter("qux", Parameter.KEYWORD_ONLY),
Parameter("baz", Parameter.KEYWORD_ONLY),
]
),
],
)
deftest_good_sig_passes(sig):
_test_inspectable_func(sig, stub_sig)
@pytest.mark.parametrize(
"sig",
[
Signature(
[
Parameter("foo", Parameter.POSITIONAL_ONLY),
Parameter("bar", Parameter.POSITIONAL_ONLY),
Parameter("baz", Parameter.KEYWORD_ONLY),
]
),
Signature(
[
Parameter("foo", Parameter.POSITIONAL_ONLY),
Parameter("bar", Parameter.KEYWORD_ONLY),
Parameter("baz", Parameter.KEYWORD_ONLY),
]
),
],
)
deftest_raises_on_bad_sig(sig):
withpytest.raises(AssertionError):
_test_inspectable_func(sig, stub_sig)