[tests] revert da95a8c and use the shared hb-shape process
diff --git a/test/shaping/run-tests.py b/test/shaping/run-tests.py
index 9731067..cbc6187 100755
--- a/test/shaping/run-tests.py
+++ b/test/shaping/run-tests.py
@@ -2,6 +2,11 @@
 
 import sys, os, subprocess, hashlib, tempfile, shutil
 
+def cmd(command):
+	global process
+	process.stdin.write ((' '.join (command) + '\n').encode ("utf-8"))
+	process.stdin.flush ()
+	return process.stdout.readline().decode ("utf-8").strip ()
 
 args = sys.argv[1:]
 
@@ -14,21 +19,10 @@
 	sys.exit ("""First argument does not seem to point to usable hb-shape.""")
 hb_shape, args = args[0], args[1:]
 
-def cmd(command):
-	process = subprocess.Popen ([hb_shape, '--batch'],
+process = subprocess.Popen ([hb_shape, '--batch'],
 			    stdin=subprocess.PIPE,
 			    stdout=subprocess.PIPE,
-			    stderr=subprocess.PIPE)
-	process.stdin.write ((' '.join (command) + '\n').encode ("utf-8"))
-	process.stdin.flush ()
-	ret_stdout = None
-	ret_stderr = None
-	ret_stdout, ret_stderr = process.communicate ()
-	if ret_stdout is not None:
-		ret_stdout = ret_stdout.decode ("utf-8").strip ()
-	if ret_stderr is not None:
-		ret_stderr = ret_stderr.decode ("utf-8").strip ()
-	return (ret_stdout, ret_stderr)
+			    stderr=sys.stdout)
 
 passes = 0
 fails = 0
@@ -110,31 +104,23 @@
 			fontfile] + extra_options + ["--unicodes",
 			unicodes] + (options.split (' ') if options else []))
 
-		if glyphs1[1] is not None or glyphs1[1] != '':
-			check_string = hb_shape[hb_shape.find(os.path.sep) + 1:] + \
-			               ': Unknown font function implementation `ft\''
-			if glyphs1[1].startswith(check_string):
-				skips += 1
-				print ("Skipping test due to lack of FreeType support")
-				continue
-
 		glyphs2 = cmd ([hb_shape, "--font-funcs=ot",
 			fontfile] + extra_options + ["--unicodes",
 			unicodes] + (options.split (' ') if options else []))
 
-		if glyphs1[0] != glyphs2[0] and glyphs_expected != '*':
-			print ("FT funcs: " + glyphs1[0], file=sys.stderr)
-			print ("OT funcs: " + glyphs2[0], file=sys.stderr)
+		if glyphs1 != glyphs2 and glyphs_expected != '*':
+			print ("FT funcs: " + glyphs1, file=sys.stderr)
+			print ("OT funcs: " + glyphs2, file=sys.stderr)
 			fails += 1
 		else:
 			passes += 1
 
 		if reference:
-			print (":".join ([fontfile, options, unicodes, glyphs1[0]]))
+			print (":".join ([fontfile, options, unicodes, glyphs1]))
 			continue
 
-		if glyphs1[0].strip() != glyphs_expected and glyphs_expected != '*':
-			print ("Actual:   " + glyphs1[0], file=sys.stderr)
+		if glyphs1.strip() != glyphs_expected and glyphs_expected != '*':
+			print ("Actual:   " + glyphs1, file=sys.stderr)
 			print ("Expected: " + glyphs_expected, file=sys.stderr)
 			fails += 1
 		else: