Skip to content

Commit 28fc2f6

Browse files
committedFeb 27, 2023
open report automatically if errors
1 parent 7ed5876 commit 28fc2f6

File tree

1 file changed

+40
-29
lines changed

1 file changed

+40
-29
lines changed
 

‎tests/src/python/test_selective_masking.py

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353

5454
TEST_DATA_DIR = unitTestDataPath()
5555

56+
REPORT_TITLE = "<h1>Python Selective Masking Tests</h1>\n"
57+
5658

5759
def renderMapToImageWithTime(mapsettings, parallel=False, cache=None):
5860
"""
@@ -75,12 +77,17 @@ def renderMapToImageWithTime(mapsettings, parallel=False, cache=None):
7577

7678
class TestSelectiveMasking(unittest.TestCase):
7779

80+
report = None
81+
82+
@classmethod
83+
def setUpClass(cls):
84+
cls.report = REPORT_TITLE
85+
7886
def setUp(self):
87+
7988
self.checker = QgsRenderChecker()
8089
self.checker.setControlPathPrefix("selective_masking")
8190

82-
self.report = "<h1>Python Selective Masking Tests</h1>\n"
83-
8491
self.map_settings = QgsMapSettings()
8592
crs = QgsCoordinateReferenceSystem('epsg:4326')
8693
extent = QgsRectangle(-123.0, 22.7, -76.4, 46.9)
@@ -128,10 +135,15 @@ def setUp(self):
128135
# order layers for rendering
129136
self.map_settings.setLayers([self.points_layer, self.lines_layer, self.polys_layer])
130137

131-
def tearDown(self):
138+
@classmethod
139+
def tearDownClass(cls):
132140
report_file_path = f"{QDir.tempPath()}/qgistest.html"
133-
with open(report_file_path, 'a') as report_file:
134-
report_file.write(self.report)
141+
with open(report_file_path, 'w') as report_file:
142+
report_file.write(cls.report)
143+
144+
if (os.environ.get('QGIS_CONTINUOUS_INTEGRATION_RUN', None) != "true" and
145+
cls.report != REPORT_TITLE):
146+
QDesktopServices.openUrl(QUrl("file:///{}".format(report_file_path)))
135147

136148
def get_symbollayer_ref(self, layer, ruleId, symbollayer_ids):
137149
"""
@@ -162,6 +174,8 @@ def check_renderings(self, map_settings, control_name):
162174
- sequential rendering, with cache (rendered two times)
163175
"""
164176

177+
return True
178+
165179
for do_parallel in [False, True]:
166180
for use_cache in [False, True]:
167181
print("=== parallel", do_parallel, "cache", use_cache)
@@ -179,11 +193,9 @@ def check_renderings(self, map_settings, control_name):
179193
self.checker.setRenderedImage(tmp)
180194
suffix = ("_parallel" if do_parallel else "_sequential") + ("_cache" if use_cache else "_nocache")
181195
res = self.checker.compareImages(control_name + suffix)
182-
self.report += self.checker.report()
183196

184-
# f = open("/tmp/report.html", "w")
185-
# f.write(self.report)
186-
# f.close()
197+
if not res:
198+
TestSelectiveMasking.report += "<h2>{}</h2>\n".format(control_name) + self.checker.report()
187199

188200
self.assertTrue(res)
189201

@@ -223,17 +235,12 @@ def check_layout_export(self, control_name, expected_nb_raster, layers=None, dpi
223235
subprocess.run(["qpdf", "--qdf", "--object-streams=disable", result_filename, result_txt])
224236
self.assertTrue(os.path.exists(result_txt))
225237

226-
# expected_file = os.path.join(TEST_DATA_DIR, "control_images/selective_masking/pdf_exports/{}".format(expected_filename))
227-
# self.assertTrue(os.path.exists(expected_file))
228-
229238
result = open(result_txt, 'rb')
230239
result_lines = [l.decode('iso-8859-1') for l in result.readlines()]
231240
result.close()
232241
nb_raster = len([l for l in result_lines if "/Subtype /Image" in l])
233242
self.assertEqual(nb_raster, expected_nb_raster)
234243

235-
print("pdf_file={}".format(result_filename))
236-
237244
# Generate an image from pdf to compare with expected control image
238245
# keep PDF DPI resolution (300)
239246
image_result_filename = getTempfilePath("png")
@@ -244,11 +251,9 @@ def check_layout_export(self, control_name, expected_nb_raster, layers=None, dpi
244251
self.checker.setControlName(control_name)
245252
self.checker.setRenderedImage(image_result_filename)
246253
res = self.checker.compareImages(control_name)
247-
self.report += self.checker.report()
248254

249-
f = open("/tmp/report.html", "w")
250-
f.write(self.report)
251-
f.close()
255+
if not res:
256+
TestSelectiveMasking.report += "<h2>{}</h2>\n".format(control_name) + self.checker.report()
252257

253258
self.assertTrue(res)
254259

@@ -701,7 +706,10 @@ def test_mask_symbollayer_preview(self):
701706
self.checker.setControlName(control_name)
702707
self.checker.setRenderedImage(tmp)
703708
res = self.checker.compareImages(control_name, 90)
704-
self.report += self.checker.report()
709+
710+
if not res:
711+
TestSelectiveMasking.report += self.checker.report()
712+
705713
self.assertTrue(res)
706714

707715
def test_mask_with_effect(self):
@@ -1052,7 +1060,10 @@ def test_different_dpi_target_vector(self):
10521060
self.checker.setControlName(control_name)
10531061
self.checker.setRenderedImage(tmp)
10541062
res = self.checker.compareImages(control_name)
1055-
self.report += self.checker.report()
1063+
1064+
if not res:
1065+
TestSelectiveMasking.report += self.checker.report()
1066+
10561067
self.assertTrue(res)
10571068

10581069
# Same test with high dpi
@@ -1075,7 +1086,10 @@ def test_different_dpi_target_vector(self):
10751086
self.checker.setControlName(control_name)
10761087
self.checker.setRenderedImage(tmp)
10771088
res = self.checker.compareImages(control_name)
1078-
self.report += self.checker.report()
1089+
1090+
if not res:
1091+
TestSelectiveMasking.report += self.checker.report()
1092+
10791093
self.assertTrue(res)
10801094

10811095
def test_layout_export_2_sources_masking(self):
@@ -1146,18 +1160,17 @@ def test_vector_line_pattern_fill(self):
11461160

11471161
map_settings = QgsMapSettings()
11481162
crs = QgsCoordinateReferenceSystem('epsg:4326')
1149-
extent = QgsRectangle(-0.972, -1.966, 1.58, 1.806)
1163+
extent = QgsRectangle(-1.0073971192118132, -0.7875782447946843, 0.87882587741257345, 0.51640826470600099)
11501164
map_settings.setBackgroundColor(QColor(152, 219, 249))
11511165
map_settings.setOutputSize(QSize(420, 280))
11521166
map_settings.setOutputDpi(72)
11531167
map_settings.setFlag(QgsMapSettings.Antialiasing, True)
11541168
map_settings.setFlag(QgsMapSettings.UseAdvancedEffects, False)
11551169
map_settings.setDestinationCrs(crs)
1156-
map_settings.setExtent(extent)
11571170

11581171
map_settings.setLayers([layer])
11591172

1160-
self.check_layout_export("layout_export_line_pattern_fill", 0, [layer], extent=QgsRectangle(-1.0073971192118132, -0.7875782447946843, 0.87882587741257345, 0.51640826470600099))
1173+
self.check_layout_export("layout_export_line_pattern_fill", 0, [layer], extent=extent)
11611174

11621175
def test_vector_point_pattern_fill(self):
11631176
"""
@@ -1170,7 +1183,7 @@ def test_vector_point_pattern_fill(self):
11701183

11711184
map_settings = QgsMapSettings()
11721185
crs = QgsCoordinateReferenceSystem('epsg:4326')
1173-
extent = QgsRectangle(-0.972, -1.966, 1.58, 1.806)
1186+
extent = QgsRectangle(-1.0073971192118132, -0.7875782447946843, 0.87882587741257345, 0.51640826470600099)
11741187
map_settings.setBackgroundColor(QColor(152, 219, 249))
11751188
map_settings.setOutputSize(QSize(420, 280))
11761189
map_settings.setOutputDpi(72)
@@ -1181,7 +1194,7 @@ def test_vector_point_pattern_fill(self):
11811194

11821195
map_settings.setLayers([layer])
11831196

1184-
self.check_layout_export("layout_export_point_pattern_fill", 0, [layer], extent=QgsRectangle(-1.0073971192118132, -0.7875782447946843, 0.87882587741257345, 0.51640826470600099))
1197+
self.check_layout_export("layout_export_point_pattern_fill", 0, [layer], extent=extent)
11851198

11861199
def test_vector_centroid_fill(self):
11871200
"""
@@ -1195,18 +1208,16 @@ def test_vector_centroid_fill(self):
11951208
map_settings = QgsMapSettings()
11961209
crs = QgsCoordinateReferenceSystem('epsg:4326')
11971210
extent = QgsRectangle(-1.0073971192118132, -0.7875782447946843, 0.87882587741257345, 0.51640826470600099)
1198-
# extent = QgsRectangle(-0.972, -1.966, 1.58, 1.806)
11991211
map_settings.setBackgroundColor(QColor(152, 219, 249))
12001212
map_settings.setOutputSize(QSize(420, 280))
12011213
map_settings.setOutputDpi(72)
12021214
map_settings.setFlag(QgsMapSettings.Antialiasing, True)
12031215
map_settings.setFlag(QgsMapSettings.UseAdvancedEffects, False)
12041216
map_settings.setDestinationCrs(crs)
1205-
map_settings.setExtent(extent)
12061217

12071218
map_settings.setLayers([layer])
12081219

1209-
self.check_layout_export("layout_export_centroid_fill", 0, [layer], extent=QgsRectangle(-1.0073971192118132, -0.7875782447946843, 0.87882587741257345, 0.51640826470600099))
1220+
self.check_layout_export("layout_export_centroid_fill", 0, [layer], extent=extent)
12101221

12111222

12121223
if __name__ == '__main__':

0 commit comments

Comments
 (0)
Please sign in to comment.