]> arthur.barton.de Git - bup.git/blobdiff - wvtest.py
wvtest.py: add a fallback definition of relpath() for Python < 2.6.
[bup.git] / wvtest.py
index 4c4b4b99d0469e668c8241f8007230ac41a6a3f5..27749e348834ee354e58c59189e4a23cee93937b 100755 (executable)
--- a/wvtest.py
+++ b/wvtest.py
@@ -149,9 +149,31 @@ def _run_in_chdir(path, func, *args, **kwargs):
         sys.path = oldpath
 
 
+if sys.version_info >= (2,6,0):
+    _relpath = os.path.relpath;
+else:
+    # Implementation for Python 2.5, taken from CPython (tag v2.6,
+    # file Lib/posixpath.py, hg-commit 95fff5a6a276).  Update
+    # ./LICENSE When this code is eventually removed.
+    def _relpath(path, start=os.path.curdir):
+        if not path:
+            raise ValueError("no path specified")
+
+        start_list = os.path.abspath(start).split(os.path.sep)
+        path_list = os.path.abspath(path).split(os.path.sep)
+
+        # Work out how much of the filepath is shared by start and path.
+        i = len(os.path.commonprefix([start_list, path_list]))
+
+        rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]
+        if not rel_list:
+            return curdir
+        return os.path.join(*rel_list)
+
+
 def _runtest(fname, f):
     mod = inspect.getmodule(f)
-    relpath = os.path.relpath(mod.__file__, os.getcwd()).replace('.pyc', '.py')
+    relpath = _relpath(mod.__file__, os.getcwd()).replace('.pyc', '.py')
     print
     print 'Testing "%s" in %s:' % (fname, relpath)
     sys.stdout.flush()