[pypy-svn] r48940 - in pypy/dist/pypy/translator/llvm: . test

rxe at codespeak.net rxe at codespeak.net
Thu Nov 22 18:28:09 CET 2007


Author: rxe
Date: Thu Nov 22 18:28:09 2007
New Revision: 48940

Added:
   pypy/dist/pypy/translator/llvm/test/test_standalone.py
Modified:
   pypy/dist/pypy/translator/llvm/genllvm.py
   pypy/dist/pypy/translator/llvm/test/runtest.py
Log:
add tests for standalone eventually

Modified: pypy/dist/pypy/translator/llvm/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/genllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm/genllvm.py	Thu Nov 22 18:28:09 2007
@@ -25,6 +25,7 @@
     bk = translator.annotator.bookkeeper
     graph_entrypoint = bk.getdesc(entrypoint).getuniquegraph()
     s_result = translator.annotator.binding(graph_entrypoint.getreturnvar())
+
     get_argc = rffi.llexternal('_pypy_getargc', [], rffi.INT)
     get_argv = rffi.llexternal('_pypy_getargv', [], rffi.CCHARPP)
 
@@ -36,11 +37,10 @@
 
     entrypoint._annenforceargs_ = [s_list_of_strings]
     mixlevelannotator = MixLevelHelperAnnotator(translator.rtyper)
+
     graph = mixlevelannotator.getgraph(new_entrypoint, [], s_result)
     mixlevelannotator.finish()
-
-    from pypy.translator.backendopt.all import backend_optimizations
-    backend_optimizations(translator)
+    mixlevelannotator.backend_optimize()
     
     return new_entrypoint
 

Modified: pypy/dist/pypy/translator/llvm/test/runtest.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/runtest.py	(original)
+++ pypy/dist/pypy/translator/llvm/test/runtest.py	Thu Nov 22 18:28:09 2007
@@ -100,6 +100,7 @@
                     isolate=True,
                     
                     # pass to compile
+                    exe_name=None,
                     optimize=True,
                     extra_opts={}):
 
@@ -120,7 +121,7 @@
 
     options.update(extra_opts)
     config.set(**options)
-    driver = TranslationDriver(config=config)
+    driver = TranslationDriver(config=config, exe_name=exe_name)
     driver.setup(function, annotation)
     driver.annotate()
     if conftest.option.view:
@@ -158,8 +159,12 @@
     return compile_test(function, annotation, isolate_hint=isolate_hint, **kwds)[1]
 
 def compile_standalone(function, **kwds):
+    exe_name = kwds.pop('exe_name', function.func_name)
     optimize = kwds.pop('optimize', optimize_tests)
-    drvier = genllvm_compile(function, None, optimize=optimize, **kwds)
+    driver = genllvm_compile(function, None,
+                             optimize=optimize,
+                             exe_name=exe_name,
+                             **kwds)
 #______________________________________________________________________________
 
 # XXX Work in progress, this was mostly copied from cli

Added: pypy/dist/pypy/translator/llvm/test/test_standalone.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/llvm/test/test_standalone.py	Thu Nov 22 18:28:09 2007
@@ -0,0 +1,39 @@
+import py
+from pypy.translator.llvm.test.runtest import compile_standalone
+
+def cmdexec(exe_name, *args):
+    from pypy.tool.udir import udir
+    exe_name = udir.join(exe_name)
+    args = ' '.join(args)
+    return py.process.cmdexec('%s %s' % (exe_name, args))
+
+def test_print():
+    def entry_point(argv):
+        print "argument count:", len(argv)
+        print "arguments:", argv
+        print "argument lengths:",
+        print [len(s) for s in argv]
+        return 0
+
+    exe_name = 'test_print'
+    compile_standalone(entry_point, exe_name=exe_name)
+    data = cmdexec(exe_name, 'abc', 'def')
+    assert data.startswith('argument count: 3')
+    data = cmdexec(exe_name)
+    assert data.startswith('argument count: 1')
+    
+def test_hello_world():
+    import os
+    def entry_point(argv):
+        os.write(1, "hello world\n")
+        argv = argv[1:]
+        os.write(1, "argument count: " + str(len(argv)) + "\n")
+        for s in argv:
+            os.write(1, "   '" + str(s) + "'\n")
+        return 0
+
+    exe_name = 'test_hello_world'
+    compile_standalone(entry_point, exe_name=exe_name)
+    data = cmdexec(exe_name, 'hi', 'there')
+    assert data.startswith('''hello world\nargument count: 2\n   'hi'\n   'there'\n''')
+



More information about the Pypy-commit mailing list