[pypy-svn] r19055 - pypy/dist/pypy/translator/llvm/test

rxe at codespeak.net rxe at codespeak.net
Thu Oct 27 07:20:08 CEST 2005


Author: rxe
Date: Thu Oct 27 07:20:05 2005
New Revision: 19055

Modified:
   pypy/dist/pypy/translator/llvm/test/test_extfunc.py
Log:
More tests from genc (one failing because of opaque type - skipping).



Modified: pypy/dist/pypy/translator/llvm/test/test_extfunc.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/test_extfunc.py	(original)
+++ pypy/dist/pypy/translator/llvm/test/test_extfunc.py	Thu Oct 27 07:20:05 2005
@@ -7,6 +7,7 @@
 from pypy.tool.udir import udir
 from pypy.translator.llvm.test.runtest import compile_function
 from pypy.rpython.rarithmetic import r_uint
+from pypy.rpython import ros
 
 def test_external_function_ll_os_dup():
     def fn():
@@ -292,4 +293,83 @@
     f1(True)
     assert not os.path.exists(path)
 
+# more from translator/c/test/test_extfunc.py Revision: 19054
+
+
+def _real_getenv(var):
+    cmd = '''%s -c "import os; x=os.environ.get('%s'); print (x is None) and 'F' or ('T'+x)"''' % (
+        sys.executable, var)
+    g = os.popen(cmd, 'r')
+    output = g.read().strip()
+    g.close()
+    if output == 'F':
+        return None
+    elif output.startswith('T'):
+        return output[1:]
+    else:
+        raise ValueError, 'probing for env var returned %r' % (output,)
+
+def _real_envkeys():
+    cmd = '''%s -c "import os; print os.environ.keys()"''' % sys.executable
+    g = os.popen(cmd, 'r')
+    output = g.read().strip()
+    g.close()
+    if output.startswith('[') and output.endswith(']'):
+        return eval(output)
+    else:
+        raise ValueError, 'probing for all env vars returned %r' % (output,)
+
+def test_putenv():
+    s = 'abcdefgh=12345678'
+    def put():
+        ros.putenv(s)
+        return 0
+    func = compile_function(put, [])
+    func()
+    assert _real_getenv('abcdefgh') == '12345678'
+
+posix = __import__(os.name)
+if hasattr(posix, "unsetenv"):
+    def test_unsetenv():
+        def unsetenv():
+            os.unsetenv("ABCDEF")
+            return 0
+        f = compile_function(unsetenv, [])
+        os.putenv("ABCDEF", "a")
+        assert _real_getenv('ABCDEF') == 'a'
+        f()
+        assert _real_getenv('ABCDEF') is None
+        f()
+        assert _real_getenv('ABCDEF') is None
+
+def test_opendir_readdir():
+    py.test.skip("XXX need to implement opaque types")
+    s = str(udir)
+    result = []
+    def mylistdir():
+        dir = ros.opendir(s)
+        try:
+            while True:
+                nextentry = dir.readdir()
+                if nextentry is None:
+                    break
+                result.append(nextentry)
+        finally:
+            dir.closedir()
+        return 0
+    func = compile_function(mylistdir, [])
+    result = func()
+    result = result.split('\x00')
+    assert '.' in result
+    assert '..' in result
+    result.remove('.')
+    result.remove('..')
+    result.sort()
+    compared_with = os.listdir(str(udir))
+    compared_with.sort()
+    assert result == compared_with
+
 # end of tests taken from c backend
+
+
+



More information about the Pypy-commit mailing list