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:
