1
1
from dataclasses import dataclass , field
2
- from typing import Any , Union
2
+ from typing import Union
3
+ from collections import UserList
3
4
5
+ import pytest
4
6
from nepattern import BasePattern , MatchMode
5
7
6
8
from arclet .alconna import Alconna , Args , Option
7
- from arclet .alconna .ingedia ._argv import argv_config
9
+ from arclet .alconna .ingedia ._argv import argv_config , reset_argv_config
8
10
9
11
10
12
@dataclass
@@ -49,7 +51,7 @@ def test_filter_out():
49
51
ana = Alconna ("ana" , Args .foo (str ))
50
52
assert ana .parse (["ana" , 123 , "bar" ]).matched is True
51
53
assert ana .parse ("ana bar" ).matched is True
52
- argv_config ( filter_out = [] )
54
+ reset_argv_config ( )
53
55
ana_1 = Alconna ("ana" , Args .foo (str ))
54
56
assert ana_1 .parse (["ana" , 123 , "bar" ]).matched is False
55
57
@@ -59,7 +61,7 @@ def test_preprocessor():
59
61
ana1 = Alconna ("ana1" , Args .bar (int ))
60
62
assert ana1 .parse (["ana1" , [1 , 2 , 3 ]]).matched is True
61
63
assert ana1 .parse (["ana1" , [1 , 2 , 3 ]]).bar == 3
62
- argv_config ( preprocessors = {} )
64
+ reset_argv_config ( )
63
65
ana1_1 = Alconna ("ana1" , Args .bar (int ))
64
66
assert ana1_1 .parse (["ana1" , [1 , 2 , 3 ]]).matched is False
65
67
@@ -72,7 +74,7 @@ def test_with_set_unit():
72
74
assert res .matched is True
73
75
assert res .foo .data ["qq" ] == "123456"
74
76
assert not ana2 .parse ([Segment .text ("ana2" ), Segment .face (103 ), Segment .at (123456 )]).matched
75
- argv_config ()
77
+ reset_argv_config ()
76
78
77
79
78
80
def test_unhashable_unit ():
@@ -88,15 +90,18 @@ def test_unhashable_unit():
88
90
print (ana3_1 .parse (["ana3_1" , "--foo" , "--comp" , Segment .at (123 )]))
89
91
print (ana3_1 .parse (["ana3_1" , "--comp" , Segment .at (123 )]))
90
92
93
+ reset_argv_config ()
94
+
91
95
92
96
def test_checker ():
93
- argv_config (checker = lambda x : isinstance (x , list ))
97
+ argv_config (checker = lambda x : isinstance (x , UserList ))
94
98
ana4 = Alconna ("ana4" , Args .foo (int ))
95
- print (ana4 .parse (["ana4" , "123" ]))
96
- try :
97
- print (ana4 .parse ("ana4 123" ))
98
- except TypeError as e :
99
- print (e )
99
+ assert ana4 .parse (UserList (["ana4" , "123" ]))
100
+
101
+ with pytest .raises (TypeError ):
102
+ ana4 .parse ("ana4 123" )
103
+
104
+ reset_argv_config ()
100
105
101
106
102
107
if __name__ == "__main__" :
0 commit comments