[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