Author: Antonio Cuni <anto.c...@gmail.com>
Branch: app_main-refactor
Changeset: r55507:4ac1f0f2666b
Date: 2012-06-08 14:33 +0200
http://bitbucket.org/pypy/pypy/changeset/4ac1f0f2666b/

Log:    add rlib.rpath, which contains RPython (and more limited) versions
        of some os.path functions

diff --git a/pypy/rlib/rpath.py b/pypy/rlib/rpath.py
new file mode 100644
--- /dev/null
+++ b/pypy/rlib/rpath.py
@@ -0,0 +1,22 @@
+"""
+Minimal (and limited) RPython version of some functions contained in os.path.
+"""
+
+import os.path
+from os import sep, pathsep
+from pypy.rlib import rposix
+
+if os.name == 'posix':
+    # the posix version is already RPython, just use it
+    rabspath = os.path.abspath
+elif os.name == 'nt':
+    def rabspath(path):
+        if path == '':
+            path = os.getcwd()
+        try:
+            return rposix._getfullpathname(path)
+        except OSError:
+            return path
+else:
+    raise ImportError('Unsupported os: %s' % os.name)
+
diff --git a/pypy/rlib/test/test_rpath.py b/pypy/rlib/test/test_rpath.py
new file mode 100644
--- /dev/null
+++ b/pypy/rlib/test/test_rpath.py
@@ -0,0 +1,18 @@
+import py
+import os
+from pypy.rlib import rpath
+
+IS_WINDOWS = os.name == 'nt'
+
+def test_rabspath_relative(tmpdir):
+    tmpdir.chdir()
+    assert rpath.rabspath('foo') == tmpdir.join('foo')
+
+@py.test.mark.skipif("IS_WINDOWS")
+def test_rabspath_absolute_posix():
+    assert rpath.rabspath('/foo') == '/foo'
+
+@py.test.mark.skipif("not IS_WINDOWS")
+def test_rabspath_absolute_nt():
+    curdrive, _ = os.path.splitdrive(os.getcwd())
+    assert rpath.rabspath('\\foo') == '%s\\foo' % curdrive
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to