[subset] apply subset profiles (flags) to the subset integration tests.

This commit is contained in:
Garret Rieger 2018-02-27 13:15:40 -08:00
parent a4aca190a9
commit 5241d7f4b9
3 changed files with 24 additions and 17 deletions

View File

@ -15,16 +15,17 @@ def usage():
print "Usage: generate-expected-outputs.py <test suite file> ..." print "Usage: generate-expected-outputs.py <test suite file> ..."
def generate_expected_output(input_file, unicodes, output_path): def generate_expected_output(input_file, unicodes, profile_flags, output_path):
check_call(["fonttools", "subset", args = ["fonttools", "subset", input_file]
input_file, args.extend(profile_flags)
"--notdef-outline", args.extend(["--notdef-outline",
"--name-IDs=*", "--name-IDs=*",
"--name-languages=*", "--name-languages=*",
"--name-legacy", "--name-legacy",
"--drop-tables+=DSIG,GPOS,GSUB,GDEF", "--drop-tables+=DSIG,GPOS,GSUB,GDEF",
"--unicodes=%s" % unicodes, "--unicodes=%s" % unicodes,
"--output-file=%s" % output_path]) "--output-file=%s" % output_path])
check_call(args)
args = sys.argv[1:] args = sys.argv[1:]
@ -41,6 +42,6 @@ for path in args:
unicodes = test.unicodes() unicodes = test.unicodes()
font_name = test.get_font_name() font_name = test.get_font_name()
print "Creating subset %s/%s" % (output_directory, font_name) print "Creating subset %s/%s" % (output_directory, font_name)
generate_expected_output(test.font_path, unicodes, generate_expected_output(test.font_path, unicodes, test.get_profile_flags(),
os.path.join(output_directory, os.path.join(output_directory,
font_name)) font_name))

View File

@ -44,6 +44,7 @@ def run_test(test):
"--font-file=" + test.font_path, "--font-file=" + test.font_path,
"--output-file=" + out_file, "--output-file=" + out_file,
"--unicodes=%s" % test.unicodes()] "--unicodes=%s" % test.unicodes()]
cli_args.extend (test.get_profile_flags())
print (' '.join(cli_args)) print (' '.join(cli_args))
_, return_code = cmd(cli_args) _, return_code = cmd(cli_args)
@ -78,7 +79,7 @@ def run_ttx(file):
def strip_check_sum (ttx_string): def strip_check_sum (ttx_string):
return re.sub ('checkSumAdjustment value=["]0x([0-9a-fA-F])+["]', return re.sub ('checkSumAdjustment value=["]0x([0-9a-fA-F])+["]',
'checkSumAdjustment value="0x00000000"', 'checkSumAdjustment value="0x00000000"',
ttx_string, count=1) ttx_string, count=1)
args = sys.argv[1:] args = sys.argv[1:]

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
import io
import os import os
# A single test in a subset test suite. Identifies a font # A single test in a subset test suite. Identifies a font
@ -13,15 +14,19 @@ class Test:
def unicodes(self): def unicodes(self):
return ",".join("%X" % ord(c) for (i, c) in enumerate(self.subset)) 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): def get_font_name(self):
font_base_name = os.path.basename(self.font_path) font_base_name = os.path.basename(self.font_path)
font_base_name_parts = os.path.splitext(font_base_name) font_base_name_parts = os.path.splitext(font_base_name)
profile_name = os.path.splitext(os.path.basename(self.profile_path))[0] profile_name = os.path.splitext(os.path.basename(self.profile_path))[0]
return "%s.%s.%s%s" % (font_base_name_parts[0], return "%s.%s.%s%s" % (font_base_name_parts[0],
profile_name, profile_name,
self.unicodes(), self.unicodes(),
font_base_name_parts[1]) font_base_name_parts[1])
# A group of tests to perform on the subsetter. Each test # A group of tests to perform on the subsetter. Each test
# Identifies a font a subsetting profile, and a subset to be cut. # Identifies a font a subsetting profile, and a subset to be cut.