@@ -105,27 +105,43 @@ def test_parser_numerical(self, setup_parser):
105
105
) # Check correct value parsed
106
106
assert len (n_args ) == 1 # Check one leftover
107
107
108
- def test_parser_systemexits (self , setup_parser ):
108
+ def test_parser_systemexits (self , capsys , setup_parser ):
109
109
# ###Basic tests for any variety of morphing###
110
110
111
111
# Ensure only two pargs given for morphing
112
112
(opts , pargs ) = self .parser .parse_args (["toofewfiles" ])
113
113
with pytest .raises (SystemExit ):
114
114
single_morph (self .parser , opts , pargs , stdout_flag = False )
115
+ _ , err = capsys .readouterr ()
116
+ assert "You must supply FILE1 and FILE2." in err
115
117
with pytest .raises (SystemExit ):
116
118
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
119
+ _ , err = capsys .readouterr ()
120
+ assert "You must supply FILE and DIRECTORY." in err
117
121
(opts , pargs ) = self .parser .parse_args (["too" , "many" , "files" ])
118
122
with pytest .raises (SystemExit ):
119
123
single_morph (self .parser , opts , pargs , stdout_flag = False )
124
+ _ , err = capsys .readouterr ()
125
+ assert (
126
+ "Too many arguments. Make sure you only supply FILE1 and FILE2."
127
+ in err
128
+ )
120
129
with pytest .raises (SystemExit ):
121
130
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
131
+ _ , err = capsys .readouterr ()
132
+ assert (
133
+ "Too many arguments. You must only supply a FILE and a DIRECTORY."
134
+ in err
135
+ )
122
136
123
137
# Make sure rmax greater than rmin
124
138
(opts , pargs ) = self .parser .parse_args (
125
139
[f"{ nickel_PDF } " , f"{ nickel_PDF } " , "--rmin" , "10" , "--rmax" , "1" ]
126
140
)
127
141
with pytest .raises (SystemExit ):
128
142
single_morph (self .parser , opts , pargs , stdout_flag = False )
143
+ _ , err = capsys .readouterr ()
144
+ assert "rmin must be less than rmax" in err
129
145
130
146
# ###Tests exclusive to multiple morphs###
131
147
# Make sure we save to a directory that exists
@@ -140,8 +156,12 @@ def test_parser_systemexits(self, setup_parser):
140
156
)
141
157
with pytest .raises (SystemExit ):
142
158
single_morph (self .parser , opts , pargs , stdout_flag = False )
159
+ _ , err = capsys .readouterr ()
160
+ assert "Unable to save to designated location." in err
143
161
with pytest .raises (SystemExit ):
144
162
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
163
+ _ , err = capsys .readouterr ()
164
+ assert "is not a directory." in err
145
165
146
166
# Ensure first parg is a FILE and second parg is a DIRECTORY
147
167
(opts , pargs ) = self .parser .parse_args (
@@ -152,15 +172,21 @@ def test_parser_systemexits(self, setup_parser):
152
172
(opts , pargs ) = self .parser .parse_args (
153
173
[f"{ testsequence_dir } " , f"{ testsequence_dir } " ]
154
174
)
175
+ _ , err = capsys .readouterr ()
176
+ assert "is not a directory." in err
155
177
with pytest .raises (SystemExit ):
156
178
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
179
+ _ , err = capsys .readouterr ()
180
+ assert "is not a file." in err
157
181
158
182
# Try sorting by non-existing field
159
183
(opts , pargs ) = self .parser .parse_args (
160
184
[f"{ nickel_PDF } " , f"{ testsequence_dir } " , "--sort-by" , "fake_field" ]
161
185
)
162
186
with pytest .raises (SystemExit ):
163
187
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
188
+ _ , err = capsys .readouterr ()
189
+ assert "The requested field is missing from a PDF file header." in err
164
190
(opts , pargs ) = self .parser .parse_args (
165
191
[
166
192
f"{ nickel_PDF } " ,
@@ -173,6 +199,8 @@ def test_parser_systemexits(self, setup_parser):
173
199
)
174
200
with pytest .raises (SystemExit ):
175
201
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
202
+ _ , err = capsys .readouterr ()
203
+ assert "The requested field was not found in the metadata file." in err
176
204
177
205
# Try plotting an unknown parameter
178
206
(opts , pargs ) = self .parser .parse_args (
@@ -185,6 +213,8 @@ def test_parser_systemexits(self, setup_parser):
185
213
)
186
214
with pytest .raises (SystemExit ):
187
215
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
216
+ _ , err = capsys .readouterr ()
217
+ assert "Cannot find specified plot parameter. No plot shown." in err
188
218
189
219
# Try plotting an unrefined parameter
190
220
(opts , pargs ) = self .parser .parse_args (
@@ -197,6 +227,26 @@ def test_parser_systemexits(self, setup_parser):
197
227
)
198
228
with pytest .raises (SystemExit ):
199
229
multiple_targets (self .parser , opts , pargs , stdout_flag = False )
230
+ _ , err = capsys .readouterr ()
231
+ assert (
232
+ "The plot parameter is missing values for at "
233
+ "least one morph and target pair. "
234
+ "No plot shown." in err
235
+ )
236
+
237
+ # Pass a non-float list to squeeze
238
+ (opts , pargs ) = self .parser .parse_args (
239
+ [
240
+ f"{ nickel_PDF } " ,
241
+ f"{ nickel_PDF } " ,
242
+ "--squeeze" ,
243
+ "1,a,0" ,
244
+ ]
245
+ )
246
+ with pytest .raises (SystemExit ):
247
+ single_morph (self .parser , opts , pargs , stdout_flag = False )
248
+ _ , err = capsys .readouterr ()
249
+ assert "a could not be converted to float." in err
200
250
201
251
def test_morphsequence (self , setup_morphsequence ):
202
252
# Parse arguments sorting by field
0 commit comments