summaryrefslogtreecommitdiff
path: root/testing/tools
diff options
context:
space:
mode:
authorRyan Harrison <rharrison@chromium.org>2018-05-31 19:26:52 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-05-31 19:26:52 +0000
commit1118a66bfe024e137324075ac4d9433b9425e373 (patch)
tree54b52b97df28789dd22c1619ef96d67d8ac0d77f /testing/tools
parent9bff799490de4ac9da53d708f547d106f28d5c72 (diff)
downloadpdfium-1118a66bfe024e137324075ac4d9433b9425e373.tar.xz
Make XFA pixel tests more stablechromium/3447
When generating PDFs using the fixup script and a .in, specify them to to use Ahem.ttf as the text font. Ahem is a font designed to reduce flakiness in pixel tests due to font rendering differences between platforms. Specifically the glyphs in the font are standard size black boxes, so though the specific text content cannot be easily compared, things like layout and high level changes to the content can still be tested. Testing things like specific text changes should be done via an embedder test, where the strings in the elements can be extracted and inspected. The font itself is is CID type 2 font, which is relatively complex to correctly embed in a PDF due to subsetting and other features. Instead of embedding it in the generated PDFs, which was originally attempted, it is being supplied to pdfium_test via the --font-dir flag. This flag overrides where the binary looks for system fonts. This works correctly on Mac and Linux, but not on Windows, which is why that platform remains suppressed. BUG=pdfium:1008,pdfium:1020 Change-Id: I00811536de98f736fc599d96b397194ccf8db0cd Reviewed-on: https://pdfium-review.googlesource.com/27790 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'testing/tools')
-rwxr-xr-xtesting/tools/fixup_pdf_template.py8
-rw-r--r--testing/tools/test_runner.py12
2 files changed, 16 insertions, 4 deletions
diff --git a/testing/tools/fixup_pdf_template.py b/testing/tools/fixup_pdf_template.py
index bee7a3d002..0f536785c1 100755
--- a/testing/tools/fixup_pdf_template.py
+++ b/testing/tools/fixup_pdf_template.py
@@ -30,11 +30,15 @@ import os
import re
import sys
+SCRIPT_PATH = os.path.abspath(os.path.dirname(__file__))
+
+
class StreamLenState:
START = 1
FIND_STREAM = 2
FIND_ENDSTREAM = 3
+
class TemplateProcessor:
HEADER_TOKEN = '{{header}}'
HEADER_REPLACEMENT = '%PDF-1.7\n%\xa0\xf2\xa4\xf4'
@@ -45,7 +49,7 @@ class TemplateProcessor:
XREF_REPLACEMENT_N = '%010d %05d n \n'
XREF_REPLACEMENT_F = '0000000000 65535 f \n'
# XREF rows must be exactly 20 bytes - space required.
- assert(len(XREF_REPLACEMENT_F) == 20)
+ assert len(XREF_REPLACEMENT_F) == 20
TRAILER_TOKEN = '{{trailer}}'
TRAILER_REPLACEMENT = 'trailer <<\n /Root 1 0 R\n /Size %d\n>>'
@@ -230,7 +234,7 @@ class TemplateProcessor:
def preprocess_line(self, line):
if self.STREAMLEN_TOKEN in line:
- assert(self.streamlen_state == StreamLenState.START)
+ assert self.streamlen_state == StreamLenState.START
self.streamlen_state = StreamLenState.FIND_STREAM
self.streamlens.append(0)
return
diff --git a/testing/tools/test_runner.py b/testing/tools/test_runner.py
index 3fa1c79e04..3737969fb2 100644
--- a/testing/tools/test_runner.py
+++ b/testing/tools/test_runner.py
@@ -51,6 +51,8 @@ class TestRunner:
# tests and outputfiles is a list tuples:
# (path_to_image, md5_hash_of_pixelbuffer)
def GenerateAndTest(self, input_filename, source_dir):
+ use_ahem = 'use_ahem' in source_dir
+
input_root, _ = os.path.splitext(input_filename)
expected_txt_path = os.path.join(source_dir, input_root + '_expected.txt')
@@ -76,7 +78,7 @@ class TestRunner:
if os.path.exists(expected_txt_path):
raised_exception = self.TestText(input_root, expected_txt_path, pdf_path)
else:
- raised_exception, results = self.TestPixel(input_root, pdf_path)
+ raised_exception, results = self.TestPixel(input_root, pdf_path, use_ahem)
if raised_exception is not None:
print 'FAILURE: %s; %s' % (input_filename, raised_exception)
@@ -136,10 +138,15 @@ class TestRunner:
cmd = [sys.executable, self.text_diff_path, expected_txt_path, txt_path]
return common.RunCommand(cmd)
- def TestPixel(self, input_root, pdf_path):
+ def TestPixel(self, input_root, pdf_path, use_ahem):
cmd_to_run = [self.pdfium_test_path, '--send-events', '--png', '--md5']
+
if self.oneshot_renderer:
cmd_to_run.append('--render-oneshot')
+
+ if use_ahem:
+ cmd_to_run.append('--font-dir=%s' % self.font_dir)
+
cmd_to_run.append(pdf_path)
return common.RunCommandExtractHashedFiles(cmd_to_run)
@@ -219,6 +226,7 @@ class TestRunner:
finder = common.DirectoryFinder(self.options.build_dir)
self.fixup_path = finder.ScriptPath('fixup_pdf_template.py')
self.text_diff_path = finder.ScriptPath('text_diff.py')
+ self.font_dir = os.path.join(finder.TestingDir(), 'resources', 'fonts')
self.source_dir = finder.TestingDir()
if self.test_dir != 'corpus':