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: