@@ -176,12 +176,20 @@ def _result(self, data):
176
176
177
177
return data [1 ], headers
178
178
179
- def _img_diff (self , image , control_image , max_diff , max_size_diff = QSize ()):
180
- temp_image = os .path .join (tempfile .gettempdir (), "%s_result.png" % control_image )
179
+ def _img_diff (self , image , control_image , max_diff , max_size_diff = QSize (), outputJpg = False ):
180
+
181
+ extFile = 'png'
182
+ if outputJpg :
183
+ extFile = 'jpg'
184
+
185
+ temp_image = os .path .join (tempfile .gettempdir (), "%s_result.%s" % (control_image , extFile ))
181
186
182
187
with open (temp_image , "wb" ) as f :
183
188
f .write (image )
184
189
190
+ if outputJpg :
191
+ return (True , "QgsRenderChecker can't be used for JPG images" )
192
+
185
193
control = QgsRenderChecker ()
186
194
control .setControlPathPrefix ("qgis_server" )
187
195
control .setControlName (control_image )
@@ -190,35 +198,41 @@ def _img_diff(self, image, control_image, max_diff, max_size_diff=QSize()):
190
198
control .setSizeTolerance (max_size_diff .width (), max_size_diff .height ())
191
199
return control .compareImages (control_image , max_diff ), control .report ()
192
200
193
- def _img_diff_error (self , response , headers , image , max_diff = 100 , max_size_diff = QSize (), unittest_data_path = 'control_images' ):
201
+ def _img_diff_error (self , response , headers , image , max_diff = 100 , max_size_diff = QSize (), unittest_data_path = 'control_images' , outputJpg = False ):
202
+
203
+ extFile = 'png'
204
+ contentType = 'image/png'
205
+ if outputJpg :
206
+ extFile = 'jpg'
207
+ contentType = 'image/jpeg'
194
208
195
- reference_path = unitTestDataPath (unittest_data_path ) + '/qgis_server/' + image + '/' + image + '.png'
209
+ reference_path = unitTestDataPath (unittest_data_path ) + '/qgis_server/' + image + '/' + image + '.' + extFile
196
210
self .store_reference (reference_path , response )
197
211
198
212
self .assertEqual (
199
- headers .get ("Content-Type" ), "image/png" ,
200
- "Content type is wrong: %s\n %s" % (headers .get ("Content-Type" ), response ))
213
+ headers .get ("Content-Type" ), contentType ,
214
+ "Content type is wrong: %s instead of %s \n %s" % (headers .get ("Content-Type" ), contentType , response ))
201
215
202
- test , report = self ._img_diff (response , image , max_diff , max_size_diff )
216
+ test , report = self ._img_diff (response , image , max_diff , max_size_diff , outputJpg )
203
217
204
- with open (os .path .join (tempfile .gettempdir (), image + "_result.png" ), "rb" ) as rendered_file :
218
+ with open (os .path .join (tempfile .gettempdir (), image + "_result." + extFile ), "rb" ) as rendered_file :
205
219
encoded_rendered_file = base64 .b64encode (rendered_file .read ())
206
220
if not os .environ .get ('ENCODED_OUTPUT' ):
207
- message = "Image is wrong\: rendered file %s/%s_result.png " % (tempfile .gettempdir (), image )
221
+ message = "Image is wrong\: rendered file %s/%s_result.%s " % (tempfile .gettempdir (), image , extFile )
208
222
else :
209
- message = "Image is wrong\n %s\n Image:\n echo '%s' | base64 -d >%s/%s_result.png " % (
210
- report , encoded_rendered_file .strip ().decode ('utf8' ), tempfile .gettempdir (), image
223
+ message = "Image is wrong\n %s\n Image:\n echo '%s' | base64 -d >%s/%s_result.%s " % (
224
+ report , encoded_rendered_file .strip ().decode ('utf8' ), tempfile .gettempdir (), image , extFile
211
225
)
212
226
213
227
# If the failure is in image sizes the diff file will not exists.
214
- if os .path .exists (os .path .join (tempfile .gettempdir (), image + "_result_diff.png" )):
215
- with open (os .path .join (tempfile .gettempdir (), image + "_result_diff.png" ), "rb" ) as diff_file :
228
+ if os .path .exists (os .path .join (tempfile .gettempdir (), image + "_result_diff." + extFile )):
229
+ with open (os .path .join (tempfile .gettempdir (), image + "_result_diff." + extFile ), "rb" ) as diff_file :
216
230
if not os .environ .get ('ENCODED_OUTPUT' ):
217
- message = "Image is wrong\: diff file %s/%s_result_diff.png " % (tempfile .gettempdir (), image )
231
+ message = "Image is wrong\: diff file %s/%s_result_diff.%s " % (tempfile .gettempdir (), image , extFile )
218
232
else :
219
233
encoded_diff_file = base64 .b64encode (diff_file .read ())
220
- message += "\n Diff:\n echo '%s' | base64 -d > %s/%s_result_diff.png " % (
221
- encoded_diff_file .strip ().decode ('utf8' ), tempfile .gettempdir (), image
234
+ message += "\n Diff:\n echo '%s' | base64 -d > %s/%s_result_diff.%s " % (
235
+ encoded_diff_file .strip ().decode ('utf8' ), tempfile .gettempdir (), image , extFile
222
236
)
223
237
224
238
self .assertTrue (test , message )
0 commit comments