File tree 2 files changed +35
-2
lines changed
2 files changed +35
-2
lines changed Original file line number Diff line number Diff line change 46
46
"""
47
47
48
48
49
+ def positive_int_or_none (value_str : str ) -> Optional [int ]:
50
+ """Convert a string argument value into either an int or None.
51
+
52
+ Raise a ValueError if the argument is negative or a string which is not "none"
53
+ """
54
+ try :
55
+ value_int = int (value_str )
56
+ except ValueError :
57
+ if value_str .lower () == "none" :
58
+ return None
59
+ else :
60
+ raise
61
+
62
+ if value_int < 0 :
63
+ raise ValueError
64
+
65
+ return value_int
66
+
67
+
49
68
def get_parser (with_examples : bool = False ) -> ArgumentParser :
50
69
"""Provides an ArgumentParser for the gql-cli script.
51
70
@@ -106,8 +125,8 @@ def get_parser(with_examples: bool = False) -> ArgumentParser:
106
125
parser .add_argument (
107
126
"--execute-timeout" ,
108
127
help = "set the execute_timeout argument of the Client (default: 10)" ,
109
- type = int ,
110
- default = None ,
128
+ type = positive_int_or_none ,
129
+ default = 10 ,
111
130
dest = "execute_timeout" ,
112
131
)
113
132
parser .add_argument (
Original file line number Diff line number Diff line change @@ -78,6 +78,20 @@ def test_cli_parser(parser):
78
78
args = parser .parse_args (["https://your_server.com" , "--execute-timeout" , "1" ])
79
79
assert args .execute_timeout == 1
80
80
81
+ # gql-cli https://your_server.com --execute-timeout=none
82
+ args = parser .parse_args (["https://your_server.com" , "--execute-timeout" , "none" ])
83
+ assert args .execute_timeout is None
84
+
85
+ # gql-cli https://your_server.com --execute-timeout=-1
86
+ with pytest .raises (SystemExit ):
87
+ args = parser .parse_args (["https://your_server.com" , "--execute-timeout" , "-1" ])
88
+
89
+ # gql-cli https://your_server.com --execute-timeout=invalid
90
+ with pytest .raises (SystemExit ):
91
+ args = parser .parse_args (
92
+ ["https://your_server.com" , "--execute-timeout" , "invalid" ]
93
+ )
94
+
81
95
82
96
def test_cli_parse_headers (parser ):
83
97
You can’t perform that action at this time.
0 commit comments