Match pixel-based tests against both the GDI and default renderer
When pixel/corpus tests run with --use-renderer=gdi, PNGDiffer will only
consider the following list of test expectations suffixes:
['_gdi_{os}', '_gdi', '_{os}', '']
This is not sufficient, as sometimes the --use-renderer=gdi output
depends on whether the default renderer is AGG or Skia.
Change PNGDiffer so its test expectations suffixes list takes both
--use-renderer=gdi and the default renderer into account. e.g.
--use-renderer=gdi with Skia as the default renderer now uses the
following suffixes:
['_gdi_skia_{os}', '_gdi_skia', '_gdi_{os}', '_gdi', '_{os}', '']
Also fix a few nits/lint errors along the way.
Bug: pdfium:2056
Change-Id: If7dd0dfbbad0511c23330aa63087aadcb8c57bd5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/112092
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Nigi <nigi@chromium.org>
diff --git a/testing/tools/pngdiffer.py b/testing/tools/pngdiffer.py
index ceb4022..d9f0d9a 100755
--- a/testing/tools/pngdiffer.py
+++ b/testing/tools/pngdiffer.py
@@ -19,7 +19,10 @@
# most specific, and the root being the least specific.
_COMMON_SUFFIX_ORDER = ('_{os}', '')
_AGG_SUFFIX_ORDER = ('_agg_{os}', '_agg') + _COMMON_SUFFIX_ORDER
-_GDI_SUFFIX_ORDER = ('_gdi_{os}', '_gdi') + _COMMON_SUFFIX_ORDER
+_GDI_AGG_SUFFIX_ORDER = ('_gdi_agg_{os}', '_gdi_agg', '_gdi_{os}',
+ '_gdi') + _COMMON_SUFFIX_ORDER
+_GDI_SKIA_SUFFIX_ORDER = ('_gdi_skia_{os}', '_gdi_skia', '_gdi_{os}',
+ '_gdi') + _COMMON_SUFFIX_ORDER
_SKIA_SUFFIX_ORDER = ('_skia_{os}', '_skia') + _COMMON_SUFFIX_ORDER
@@ -40,18 +43,24 @@
class PNGDiffer():
- def __init__(self, finder, reverse_byte_order, rendering_option):
+ def __init__(self, finder, reverse_byte_order, rendering_option,
+ default_renderer):
self.pdfium_diff_path = finder.ExecutablePath('pdfium_diff')
self.os_name = finder.os_name
self.reverse_byte_order = reverse_byte_order
- if rendering_option == 'agg':
+ self.suffix_order = None
+ if rendering_option == 'gdi':
+ if default_renderer == 'agg':
+ self.suffix_order = _GDI_AGG_SUFFIX_ORDER
+ elif default_renderer == 'skia':
+ self.suffix_order = _GDI_SKIA_SUFFIX_ORDER
+ elif rendering_option == 'agg':
self.suffix_order = _AGG_SUFFIX_ORDER
- elif rendering_option == 'gdi':
- self.suffix_order = _GDI_SUFFIX_ORDER
elif rendering_option == 'skia':
self.suffix_order = _SKIA_SUFFIX_ORDER
- else:
+
+ if not self.suffix_order:
raise ValueError(f'rendering_option={rendering_option}')
def CheckMissingTools(self, regenerate_expected):
diff --git a/testing/tools/test_runner.py b/testing/tools/test_runner.py
index c7f8aa7..c52849a 100644
--- a/testing/tools/test_runner.py
+++ b/testing/tools/test_runner.py
@@ -28,7 +28,7 @@
# Arbitrary timestamp, expressed in seconds since the epoch, used to make sure
# that tests that depend on the current time are stable. Happens to be the
# timestamp of the first commit to repo, 2014/5/9 17:48:50.
-TEST_SEED_TIME = "1399672130"
+TEST_SEED_TIME = '1399672130'
# List of test types that should run text tests instead of pixel tests.
TEXT_TESTS = ['javascript']
@@ -55,7 +55,7 @@
def IsSkiaGoldEnabled(self):
return (self.options.run_skia_gold and
- not self.per_process_config.test_type in TEXT_TESTS)
+ self.per_process_config.test_type not in TEXT_TESTS)
def IsExecutionSuppressed(self, input_path):
return self.per_process_state.test_suppressor.IsExecutionSuppressed(
@@ -435,6 +435,7 @@
enforce_expected_images: bool = False
options: dict = None
features: set = None
+ default_renderer: str = None
rendering_option: str = None
def NewFinder(self):
@@ -449,19 +450,20 @@
self.features = set(output.decode('utf-8').strip().split(','))
if 'SKIA' in self.features:
- self.rendering_option = 'skia'
+ self.default_renderer = 'skia'
else:
- self.rendering_option = 'agg'
+ self.default_renderer = 'agg'
+ self.rendering_option = self.default_renderer
if self.options.use_renderer == 'agg':
self.rendering_option = 'agg'
elif self.options.use_renderer == 'gdi':
if 'GDI' not in self.features:
- return 'pdfium_test does not support the GDI renderer'
+ return 'pdfium_test missing GDI renderer support'
self.rendering_option = 'gdi'
elif self.options.use_renderer == 'skia':
if 'SKIA' not in self.features:
- return 'pdfium_test does not support the Skia renderer'
+ return 'pdfium_test missing Skia renderer support'
self.rendering_option = 'skia'
return None
@@ -493,7 +495,8 @@
self.options.disable_xfa, config.rendering_option)
self.image_differ = pngdiffer.PNGDiffer(finder,
self.options.reverse_byte_order,
- config.rendering_option)
+ config.rendering_option,
+ config.default_renderer)
self.process_name = multiprocessing.current_process().name
self.skia_tester = None
@@ -690,7 +693,7 @@
])
def _VerifyEmptyText(self, txt_path):
- with open(txt_path, "rb") as txt_file:
+ with open(txt_path, 'rb') as txt_file:
txt_data = txt_file.read()
if txt_data: