From 5241d7f4b999d5457de564bd950b60d70f9d0e19 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 27 Feb 2018 13:15:40 -0800 Subject: [PATCH] [subset] apply subset profiles (flags) to the subset integration tests. --- test/subset/generate-expected-outputs.py | 27 ++++++++++++------------ test/subset/run-tests.py | 3 ++- test/subset/subset_test_suite.py | 11 +++++++--- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/test/subset/generate-expected-outputs.py b/test/subset/generate-expected-outputs.py index 1be89b754..9ebf082f6 100755 --- a/test/subset/generate-expected-outputs.py +++ b/test/subset/generate-expected-outputs.py @@ -15,16 +15,17 @@ def usage(): print "Usage: generate-expected-outputs.py ..." -def generate_expected_output(input_file, unicodes, output_path): - check_call(["fonttools", "subset", - input_file, - "--notdef-outline", - "--name-IDs=*", - "--name-languages=*", - "--name-legacy", - "--drop-tables+=DSIG,GPOS,GSUB,GDEF", - "--unicodes=%s" % unicodes, - "--output-file=%s" % output_path]) +def generate_expected_output(input_file, unicodes, profile_flags, output_path): + args = ["fonttools", "subset", input_file] + args.extend(profile_flags) + args.extend(["--notdef-outline", + "--name-IDs=*", + "--name-languages=*", + "--name-legacy", + "--drop-tables+=DSIG,GPOS,GSUB,GDEF", + "--unicodes=%s" % unicodes, + "--output-file=%s" % output_path]) + check_call(args) args = sys.argv[1:] @@ -41,6 +42,6 @@ for path in args: unicodes = test.unicodes() font_name = test.get_font_name() print "Creating subset %s/%s" % (output_directory, font_name) - generate_expected_output(test.font_path, unicodes, - os.path.join(output_directory, - font_name)) + generate_expected_output(test.font_path, unicodes, test.get_profile_flags(), + os.path.join(output_directory, + font_name)) diff --git a/test/subset/run-tests.py b/test/subset/run-tests.py index 99f97826e..f1ef4614a 100755 --- a/test/subset/run-tests.py +++ b/test/subset/run-tests.py @@ -44,6 +44,7 @@ def run_test(test): "--font-file=" + test.font_path, "--output-file=" + out_file, "--unicodes=%s" % test.unicodes()] + cli_args.extend (test.get_profile_flags()) print (' '.join(cli_args)) _, return_code = cmd(cli_args) @@ -78,7 +79,7 @@ def run_ttx(file): def strip_check_sum (ttx_string): return re.sub ('checkSumAdjustment value=["]0x([0-9a-fA-F])+["]', - 'checkSumAdjustment value="0x00000000"', + 'checkSumAdjustment value="0x00000000"', ttx_string, count=1) args = sys.argv[1:] diff --git a/test/subset/subset_test_suite.py b/test/subset/subset_test_suite.py index 256e20713..35386508e 100644 --- a/test/subset/subset_test_suite.py +++ b/test/subset/subset_test_suite.py @@ -1,5 +1,6 @@ #!/usr/bin/env python +import io import os # A single test in a subset test suite. Identifies a font @@ -13,15 +14,19 @@ class Test: def unicodes(self): return ",".join("%X" % ord(c) for (i, c) in enumerate(self.subset)) + def get_profile_flags(self): + with io.open(self.profile_path, mode="r", encoding="utf-8") as f: + return f.read().splitlines(); + def get_font_name(self): font_base_name = os.path.basename(self.font_path) font_base_name_parts = os.path.splitext(font_base_name) profile_name = os.path.splitext(os.path.basename(self.profile_path))[0] return "%s.%s.%s%s" % (font_base_name_parts[0], - profile_name, - self.unicodes(), - font_base_name_parts[1]) + profile_name, + self.unicodes(), + font_base_name_parts[1]) # A group of tests to perform on the subsetter. Each test # Identifies a font a subsetting profile, and a subset to be cut.