23
23
('' , False , 1 , ['domains.yaml file not found: domains.yaml' ]),
24
24
(
25
25
"""
26
- default: some default
27
- build_dir: my/dir
28
- domains:
29
- - name: some default
30
- build_dir: dir/2
31
- - name: another
32
- build_dir: dir/3
33
- flash_order: I don\' t think this is correct
34
- """ ,
35
- True , 1 , ['ERROR: Malformed yaml in file: domains.yaml' ]
36
- ),
37
- (
38
- """
39
26
default: None
40
27
build_dir: some/dir
28
+ domains: []
41
29
""" ,
42
30
True , None , []
43
31
),
46
34
@pytest .mark .parametrize (
47
35
'f_contents, f_exists, exit_code, expected_logs' ,
48
36
TESTDATA_1 ,
49
- ids = ['no file' , 'schema error' , ' valid' ]
37
+ ids = ['no file' , 'valid' ]
50
38
)
51
39
def test_from_file (caplog , f_contents , f_exists , exit_code , expected_logs ):
52
40
def mock_open (* args , ** kwargs ):
@@ -71,43 +59,51 @@ def mock_open(*args, **kwargs):
71
59
72
60
73
61
TESTDATA_2 = [
74
- ({'build_dir' : None , 'default' : None }, True , None , [], None , {}),
75
62
(
76
- {
77
- 'build_dir' : os .path .join ('build' , 'dir' ),
78
- 'domains' : [
79
- {
80
- 'name' : 'a domain' ,
81
- 'build_dir' : os .path .join ('dir' , '1' )
82
- },
83
- {
84
- 'name' : 'default_domain' ,
85
- 'build_dir' : os .path .join ('dir' , '2' )
86
- }
87
- ],
88
- 'default' : 'default_domain' ,
89
- 'flash_order' : ['default_domain' , 'a domain' ]
90
- },
91
- False ,
92
- os .path .join ('build' , 'dir' ),
93
- [('default_domain' , os .path .join ('dir' , '2' )),
94
- ('a domain' , os .path .join ('dir' , '1' ))],
95
- ('default_domain' , os .path .join ('dir' , '2' )),
96
- {'a domain' : ('a domain' , os .path .join ('dir' , '1' )),
97
- 'default_domain' : ('default_domain' , os .path .join ('dir' , '2' ))}
63
+ """
64
+ default: some default
65
+ build_dir: my/dir
66
+ domains:
67
+ - name: some default
68
+ build_dir: dir/2
69
+ - name: another
70
+ build_dir: dir/3
71
+ flash_order: I don\' t think this is correct
72
+ """ ,
73
+ 1 , None , None , None , None
74
+ ),
75
+ (
76
+ """
77
+ build_dir: build/dir
78
+ domains:
79
+ - name: a domain
80
+ build_dir: dir/1
81
+ - name: default_domain
82
+ build_dir: dir/2
83
+ default: default_domain
84
+ flash_order:
85
+ - default_domain
86
+ - a domain
87
+ """ ,
88
+ None ,
89
+ 'build/dir' ,
90
+ [('default_domain' , 'dir/2' ), ('a domain' , 'dir/1' )],
91
+ ('default_domain' , 'dir/2' ),
92
+ {'a domain' : ('a domain' , 'dir/1' ),
93
+ 'default_domain' : ('default_domain' , 'dir/2' )}
98
94
),
99
95
]
100
96
101
97
@pytest .mark .parametrize (
102
- 'data, expect_warning , expected_build_dir, expected_flash_order,' \
98
+ 'data, exit_code , expected_build_dir, expected_flash_order,' \
103
99
' expected_default, expected_domains' ,
104
100
TESTDATA_2 ,
105
- ids = ['required only ' , 'with default domain ' ]
101
+ ids = ['invalid ' , 'valid ' ]
106
102
)
107
- def test_from_data (
103
+ def test_from_yaml (
108
104
caplog ,
109
105
data ,
110
- expect_warning ,
106
+ exit_code ,
111
107
expected_build_dir ,
112
108
expected_flash_order ,
113
109
expected_default ,
@@ -116,15 +112,13 @@ def test_from_data(
116
112
def mock_domain (name , build_dir , * args , ** kwargs ):
117
113
return name , build_dir
118
114
119
- warning_log = "no domains defined; this probably won't work"
115
+ with mock .patch ('domains.Domain' , side_effect = mock_domain ), \
116
+ pytest .raises (SystemExit ) if exit_code else nullcontext () as exit_st :
117
+ doms = domains .Domains .from_yaml (data )
120
118
121
- with mock .patch ('domains.Domain' , side_effect = mock_domain ):
122
- doms = domains .Domains .from_data (data )
123
-
124
- if expect_warning :
125
- assert warning_log in caplog .text
126
- else :
127
- assert warning_log not in caplog .text
119
+ if exit_code :
120
+ assert str (exit_st .value ) == str (exit_code )
121
+ return
128
122
129
123
assert doms .get_default_domain () == expected_default
130
124
assert doms .get_top_build_dir () == expected_build_dir
@@ -139,50 +133,93 @@ def mock_domain(name, build_dir, *args, **kwargs):
139
133
(
140
134
None ,
141
135
True ,
142
- None ,
143
- [],
144
136
[('some' , os .path .join ('dir' , '2' )),
145
137
('order' , os .path .join ('dir' , '1' ))]
146
138
),
147
139
(
148
140
None ,
149
141
False ,
150
- None ,
151
- [],
152
142
[('order' , os .path .join ('dir' , '1' )),
153
143
('some' , os .path .join ('dir' , '2' ))]
154
144
),
155
- (
156
- ['some' , 'other' ],
157
- False ,
158
- 1 ,
159
- ['domain other not found, valid domains are: order, some' ],
160
- [('some' , os .path .join ('dir' , '2' )),
161
- ('order' , os .path .join ('dir' , '1' ))]
162
- ),
163
145
(
164
146
['some' ],
165
147
False ,
166
- None ,
167
- [],
168
148
[('some' , os .path .join ('dir' , '2' ))]
169
149
),
170
150
]
171
151
172
152
@pytest .mark .parametrize (
173
- 'names, default_flash_order, exit_code, expected_logs, expected_result' ,
153
+ 'names, default_flash_order, expected_result' ,
174
154
TESTDATA_3 ,
175
- ids = ['order only' , 'no parameters' , 'domain not found' , ' valid' ]
155
+ ids = ['order only' , 'no parameters' , 'valid' ]
176
156
)
177
157
def test_get_domains (
178
158
caplog ,
179
159
names ,
180
160
default_flash_order ,
161
+ expected_result
162
+ ):
163
+ doms = domains .Domains (
164
+ """
165
+ domains:
166
+ - name: dummy
167
+ build_dir: dummy
168
+ default: dummy
169
+ build_dir: dummy
170
+ """
171
+ )
172
+ doms ._flash_order = [
173
+ ('some' , os .path .join ('dir' , '2' )),
174
+ ('order' , os .path .join ('dir' , '1' ))
175
+ ]
176
+ doms ._domains = {
177
+ 'order' : ('order' , os .path .join ('dir' , '1' )),
178
+ 'some' : ('some' , os .path .join ('dir' , '2' ))
179
+ }
180
+
181
+ result = doms .get_domains (names , default_flash_order )
182
+
183
+ assert result == expected_result
184
+
185
+
186
+
187
+ TESTDATA_3 = [
188
+ (
189
+ 'other' ,
190
+ 1 ,
191
+ ['domain "other" not found, valid domains are: order, some' ],
192
+ None
193
+ ),
194
+ (
195
+ 'some' ,
196
+ None ,
197
+ [],
198
+ ('some' , os .path .join ('dir' , '2' ))
199
+ ),
200
+ ]
201
+
202
+ @pytest .mark .parametrize (
203
+ 'name, exit_code, expected_logs, expected_result' ,
204
+ TESTDATA_3 ,
205
+ ids = ['domain not found' , 'valid' ]
206
+ )
207
+ def test_get_domain (
208
+ caplog ,
209
+ name ,
181
210
exit_code ,
182
211
expected_logs ,
183
212
expected_result
184
213
):
185
- doms = domains .Domains ({'domains' : [], 'default' : None })
214
+ doms = domains .Domains (
215
+ """
216
+ domains:
217
+ - name: dummy
218
+ build_dir: dummy
219
+ default: dummy
220
+ build_dir: dummy
221
+ """
222
+ )
186
223
doms ._flash_order = [
187
224
('some' , os .path .join ('dir' , '2' )),
188
225
('order' , os .path .join ('dir' , '1' ))
@@ -193,7 +230,7 @@ def test_get_domains(
193
230
}
194
231
195
232
with pytest .raises (SystemExit ) if exit_code else nullcontext () as s_exit :
196
- result = doms .get_domains ( names , default_flash_order )
233
+ result = doms .get_domain ( name )
197
234
198
235
assert all ([log in caplog .text for log in expected_logs ])
199
236
0 commit comments