forked from micropython/micropython-lib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_argparse.py
More file actions
112 lines (101 loc) · 4 KB
/
test_argparse.py
File metadata and controls
112 lines (101 loc) · 4 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import argparse
parser = argparse.ArgumentParser(description="command line program")
parser.add_argument("a")
parser.add_argument("b")
parser.add_argument(dest="c")
args = parser.parse_args(["1", "2", "3"])
assert args.a == "1" and args.b == "2" and args.c == "3"
parser = argparse.ArgumentParser()
parser.add_argument("-a", action="store_true")
parser.add_argument("-b", default=123)
args = parser.parse_args([])
assert args.a is False and args.b == 123
args = parser.parse_args(["-a"])
assert args.a is True and args.b == 123
args = parser.parse_args(["-b", "456"])
assert args.a is False and args.b == "456"
parser = argparse.ArgumentParser()
parser.add_argument("-a", "--a-opt", action="store_true")
parser.add_argument("-b", "--b-opt", default=123)
parser.add_argument("--c-opt", default="test")
args = parser.parse_args([])
assert args.a_opt is False and args.b_opt == 123 and args.c_opt == "test"
args = parser.parse_args(["--a-opt"])
assert args.a_opt is True and args.b_opt == 123 and args.c_opt == "test"
args = parser.parse_args(["--b-opt", "456"])
assert args.a_opt is False and args.b_opt == "456" and args.c_opt == "test"
args = parser.parse_args(["--c-opt", "override"])
assert args.a_opt is False and args.b_opt == 123 and args.c_opt == "override"
parser = argparse.ArgumentParser()
parser.add_argument("files", nargs="+")
args = parser.parse_args(["a"])
assert args.files == ["a"]
args = parser.parse_args(["a", "b", "c"])
assert args.files == ["a", "b", "c"]
parser = argparse.ArgumentParser()
parser.add_argument("files1", nargs=2)
parser.add_argument("files2", nargs="*")
args = parser.parse_args(["a", "b"])
assert args.files1 == ["a", "b"] and args.files2 == []
args = parser.parse_args(["a", "b", "c"])
assert args.files1 == ["a", "b"] and args.files2 == ["c"]
parser = argparse.ArgumentParser()
parser.add_argument("a", nargs=2)
parser.add_argument("-b")
args, rest = parser.parse_known_args(["a", "b", "-b", "2"])
assert args.a == ["a", "b"] and args.b == "2"
assert rest == []
args, rest = parser.parse_known_args(["-b", "2", "a", "b", "c"])
assert args.a == ["a", "b"] and args.b == "2"
assert rest == ["c"]
args, rest = parser.parse_known_args(["a", "b", "-b", "2", "c"])
assert args.a == ["a", "b"] and args.b == "2"
assert rest == ["c"]
args, rest = parser.parse_known_args(["-b", "2", "a", "b", "-", "c"])
assert args.a == ["a", "b"] and args.b == "2"
assert rest == ["-", "c"]
args, rest = parser.parse_known_args(["a", "b", "-b", "2", "-", "x", "y"])
assert args.a == ["a", "b"] and args.b == "2"
assert rest == ["-", "x", "y"]
args, rest = parser.parse_known_args(["a", "b", "c", "-b", "2", "--x", "5", "1"])
assert args.a == ["a", "b"] and args.b == "2"
assert rest == ["c", "--x", "5", "1"]
class CustomArgType:
def __init__(self, add):
self.add = add
def __call__(self, value):
return int(value) + self.add
parser = argparse.ArgumentParser()
parser.add_argument("-a", type=int)
args = parser.parse_args(["-a", "123"])
assert args.a == 123
parser.add_argument("-b", type=str)
args = parser.parse_args(["-b", "string"])
assert args.b == "string"
parser.add_argument("-c", type=CustomArgType(1))
args = parser.parse_args(["-c", "123"])
assert args.c == 124
try:
parser.add_argument("-d", type=())
assert False
except ValueError as e:
assert "not callable" in str(e)
parser.add_argument("-d", type=int, nargs="+")
args = parser.parse_args(["-d", "123", "124", "125"])
assert args.d == [123, 124, 125]
parser.add_argument("-e", type=CustomArgType(1), nargs="+")
args = parser.parse_args(["-e", "123", "124", "125"])
assert args.e == [124, 125, 126]
parser.add_argument("-f", type=CustomArgType(1), nargs="?")
args = parser.parse_args(["-f", "123"])
assert args.f == 124
parser.add_argument("-g", type=CustomArgType(1), default=1)
parser.add_argument("-i", type=CustomArgType(1), default="1")
args = parser.parse_args([])
assert args.g == 1
assert args.i == 2
parser.add_argument("-j", type=CustomArgType(1), default=1)
args = parser.parse_args(["-j", "3"])
assert args.g == 1
assert args.i == 2
assert args.j == 4