diff --git a/test/subset/run-tests.py b/test/subset/run-tests.py new file mode 100755 index 000000000..90da96249 --- /dev/null +++ b/test/subset/run-tests.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +# Runs a subsetting test suite. Compares the results of subsetting via harfbuz +# to subsetting via fonttools. + +from __future__ import print_function + +import io +import os +import subprocess +import sys + +from subset_test_suite import SubsetTestSuite + + +def cmd(command): + p = subprocess.Popen ( + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p.wait () + print (p.stderr.read (), end="") # file=sys.stderr + return p.stdout.read (), p.returncode + + +def run_test(test): + result, return_code = cmd([hb_subset, + test.font_path, + "--unicodes=%s" % test.unicodes()]) + + if return_code: + print ("ERROR: hb-subset failed for %s, %s, %s" % (test.font_path, test.profile_path, test.unicodes())) + return 1 + + with open(os.path.join(test_suite.get_output_directory(), + test.get_font_name())) as expected: + if not result == expected.read(): + print ("ERROR: hb-subset %s, %s, %s does not match expected value." % (test.font_path, test.profile_path, test.unicodes())) + return 1 + + return 0 + + +args = sys.argv[1:] +if not args or sys.argv[1].find('hb-subset') == -1 or not os.path.exists (sys.argv[1]): + print ("First argument does not seem to point to usable hb-subset.") + sys.exit (1) +hb_subset, args = args[0], args[1:] + +if not len(args): + print ("No tests supplied.") + sys.exit (1) + +fails = 0 +for path in args: + with io.open(path, mode="r", encoding="utf-8") as f: + print ("Running tests in " + path) + test_suite = SubsetTestSuite(path, f.read()) + for test in test_suite.tests(): + fails += run_test(test) + +if fails != 0: + print (str (fails) + " test(s) failed.") + sys.exit(1) +else: + print ("All tests passed.")