about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorDan Liew <daniel.liew@imperial.ac.uk>2014-09-14 13:31:18 +0100
committerDan Liew <daniel.liew@imperial.ac.uk>2014-09-14 13:31:18 +0100
commita2c2e4485bbdbf4bc88755c0b1e0e0477473915a (patch)
tree2b6dd9b99d5c2176b3c91c85ab9b47a8119e1e84
parent7c79c1c5299108e58852905182abcc7d3ba6fa40 (diff)
downloadklee-a2c2e4485bbdbf4bc88755c0b1e0e0477473915a.tar.gz
Upgrade ConcreteTest.py to work with Python3 (Python 2.7.x should still
work)
-rwxr-xr-xtest/Concrete/ConcreteTest.py49
1 files changed, 18 insertions, 31 deletions
diff --git a/test/Concrete/ConcreteTest.py b/test/Concrete/ConcreteTest.py
index 02eaf4d9..290991b7 100755
--- a/test/Concrete/ConcreteTest.py
+++ b/test/Concrete/ConcreteTest.py
@@ -1,55 +1,42 @@
 #!/usr/bin/python
 
+from __future__ import print_function
 import argparse
 import os
-import popen2
+import subprocess
 import sys
 import shutil
 
-def readFile(f):
-    s = ""
-    while 1:
-        data = f.read()
-        if not data:
-            break
-        s += data
-    return s
-
 def testFile(name, klee_path, lli_path):
     baseName,ext = os.path.splitext(name)
     exeFile = 'Output/linked_%s.bc'%baseName
 
-    print '-- building test bitcode --'
+    print('-- building test bitcode --')
     make_cmd = 'make %s 2>&1' % (exeFile,)
-    print "EXECUTING: %s" % (make_cmd,)
+    print("EXECUTING: %s" % (make_cmd,))
     sys.stdout.flush()
     if os.system(make_cmd):
         raise SystemExit('make failed')
 
-    print '\n-- running lli --'
-    lli_cmd = '%s -force-interpreter=true %s' % (lli_path, exeFile)
-    print "EXECUTING: %s" % (lli_cmd,)
-    lli = popen2.Popen3(lli_cmd)
-    lliOut = readFile(lli.fromchild)
-    if lli.wait():
-        raise SystemExit('lli execution failed')
+    print('\n-- running lli --')
+    lli_cmd = [lli_path, '-force-interpreter=true', exeFile]
+    print("EXECUTING: %s" % (lli_cmd,))
 
-    print '-- lli output --\n%s--\n' % (lliOut,)
+    # Decode is for python 3.x
+    lliOut = subprocess.check_output(lli_cmd).decode()
+    print('-- lli output --\n%s--\n' % (lliOut,))
 
-    print '-- running klee --'
+    print('-- running klee --')
     klee_out_path = "Output/%s.klee-out" % (baseName,)
     if os.path.exists(klee_out_path):
         shutil.rmtree(klee_out_path)
-    klee_cmd = '%s --output-dir=%s --no-output %s' % (
-        klee_path, klee_out_path, exeFile)
-    print "EXECUTING: %s" % (klee_cmd,)
+    klee_cmd = [klee_path, '--output-dir=' + klee_out_path,  '--no-output', exeFile]
+    print("EXECUTING: %s" % (klee_cmd,))
     sys.stdout.flush()
-    klee = popen2.Popen3(klee_cmd)
-    kleeOut = readFile(klee.fromchild)
-    if klee.wait():
-        raise SystemExit('klee execution failed')
 
-    print '-- klee output --\n%s--\n' % (kleeOut,)
+    # Decode is for python 3.x
+    kleeOut = subprocess.check_output(klee_cmd).decode()
+    print('-- klee output --\n%s--\n' % (kleeOut,))
         
     if lliOut != kleeOut:
         raise SystemExit('outputs differ')
@@ -59,11 +46,11 @@ def testOneFile(f, printOutput=False):
         testFile(f, printOutput)
         code = ['pass','xpass'][f.startswith('broken')]
         extra = ''
-    except TestError,e:
+    except TestError as e:
         code = ['fail','xfail'][f.startswith('broken')]
         extra = str(e)
 
-    print '%s: %s -- %s'%(code,f,extra)
+    print('%s: %s -- %s'%(code,f,extra))
 
 def main():
     parser = argparse.ArgumentParser()