WIP test runner for subset tests.
diff --git a/test/subset/run-tests.py b/test/subset/run-tests.py
new file mode 100755
index 0000000..90da962
--- /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.")