]> arthur.barton.de Git - bup.git/commitdiff
helpers: rename realpath to resolve_parent
authorRob Browning <rlb@defaultvalue.org>
Sat, 9 Jan 2016 18:55:45 +0000 (12:55 -0600)
committerRob Browning <rlb@defaultvalue.org>
Sat, 9 Jan 2016 18:55:45 +0000 (12:55 -0600)
helpers.realpath does not behave quite like os.path.realpath since it
doesn't resolve any leaf symlink, so to avoid confusion, rename it to
resolve_parent.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
cmd/save-cmd.py
lib/bup/drecurse.py
lib/bup/helpers.py
lib/bup/index.py
lib/bup/t/tindex.py
lib/bup/t/tmetadata.py
t/lib.sh
t/test.sh

index 7f72d004a0314e41b57bfd18a7ba1fc19a88cf3f..961d7f3fa171797917a424ffe32ccc8de68b2dd5 100755 (executable)
@@ -69,7 +69,8 @@ if opt.graft:
             old_path, new_path = splitted_parameter
             if not (old_path and new_path):
                 o.fatal("a graft point cannot be empty")
-            graft_points.append((realpath(old_path), realpath(new_path)))
+            graft_points.append((resolve_parent(old_path),
+                                 resolve_parent(new_path)))
 
 is_reverse = os.environ.get('BUP_SERVER_REVERSE')
 if is_reverse and opt.remote:
index de8e5aa704888bb4c5d2e120d53f4af69d5d371f..90b7f26de4bf6316230c68ed49304a5d73e8c927 100644 (file)
@@ -40,7 +40,7 @@ def _dirlist():
         try:
             st = xstat.lstat(n)
         except OSError as e:
-            add_error(Exception('%s: %s' % (realpath(n), str(e))))
+            add_error(Exception('%s: %s' % (resolve_parent(n), str(e))))
             continue
         if (st.st_mode & _IFMT) == stat.S_IFDIR:
             n += '/'
index 377678bf39332db1fa245d63cb979eee2591e615..b052b63021511b035a94ac9945e01dce1099637d 100644 (file)
@@ -247,8 +247,8 @@ to return multiple strings in order to respect ARG_MAX)."""
         yield readpipe(command + sub_args, preexec_fn=preexec_fn)
 
 
-def realpath(p):
-    """Get the absolute path of a file.
+def resolve_parent(p):
+    """Return the absolute path of a file without following any final symlink.
 
     Behaves like os.path.realpath, but doesn't follow a symlink for the last
     element. (ie. if 'p' itself is a symlink, this one won't follow it, but it
@@ -895,15 +895,15 @@ def parse_excludes(options, fatal):
     for flag in options:
         (option, parameter) = flag
         if option == '--exclude':
-            excluded_paths.append(realpath(parameter))
+            excluded_paths.append(resolve_parent(parameter))
         elif option == '--exclude-from':
             try:
-                f = open(realpath(parameter))
+                f = open(resolve_parent(parameter))
             except IOError as e:
                 raise fatal("couldn't read %s" % parameter)
             for exclude_path in f.readlines():
                 # FIXME: perhaps this should be rstrip('\n')
-                exclude_path = realpath(exclude_path.strip())
+                exclude_path = resolve_parent(exclude_path.strip())
                 if exclude_path:
                     excluded_paths.append(exclude_path)
     return sorted(frozenset(excluded_paths))
@@ -923,7 +923,7 @@ def parse_rx_excludes(options, fatal):
                 fatal('invalid --exclude-rx pattern (%s): %s' % (parameter, ex))
         elif option == '--exclude-rx-from':
             try:
-                f = open(realpath(parameter))
+                f = open(resolve_parent(parameter))
             except IOError as e:
                 raise fatal("couldn't read %s" % parameter)
             for pattern in f.readlines():
index fdf304380942a2a6802620598193542660e824e2..d4dbc55f7a54e4a623fbae5c2eeaa8cd9974e343 100644 (file)
@@ -443,7 +443,7 @@ class Writer:
         self.count = 0
         self.lastfile = None
         self.filename = None
-        self.filename = filename = realpath(filename)
+        self.filename = filename = resolve_parent(filename)
         self.metastore = metastore
         self.tmax = tmax
         (dir,name) = os.path.split(filename)
@@ -529,7 +529,7 @@ class Writer:
 def reduce_paths(paths):
     xpaths = []
     for p in paths:
-        rp = realpath(p)
+        rp = resolve_parent(p)
         try:
             st = os.lstat(rp)
             if stat.S_ISDIR(st.st_mode):
index 106d0feac9bf8b90e44f4ae3fefa5f7004a0de60..14a8d4acaafc8aee6180921a5b7c1db7766ed6bb 100644 (file)
@@ -1,8 +1,11 @@
 import os
 import time, tempfile
+
 from bup import index, metadata
 from bup.helpers import *
+import bup.helpers as helpers
 import bup.xstat as xstat
+
 from wvtest import *
 
 lib_t_dir = os.getcwd()
@@ -14,11 +17,11 @@ def index_basic():
     cd = os.path.realpath('../../../t')
     WVPASS(cd)
     sd = os.path.realpath(cd + '/sampledata')
-    WVPASSEQ(index.realpath(cd + '/sampledata'), sd)
+    WVPASSEQ(helpers.resolve_parent(cd + '/sampledata'), sd)
     WVPASSEQ(os.path.realpath(cd + '/sampledata/x'), sd + '/x')
     WVPASSEQ(os.path.realpath(cd + '/sampledata/var/abs-symlink'),
              sd + '/var/abs-symlink-target')
-    WVPASSEQ(index.realpath(cd + '/sampledata/var/abs-symlink'),
+    WVPASSEQ(helpers.resolve_parent(cd + '/sampledata/var/abs-symlink'),
              sd + '/var/abs-symlink')
 
 
index 4aa87cc1b17f8ff6c9eeebe6cc35b361f3708923..65742ddf48aa42586309290512c4e2608922e3e3 100644 (file)
@@ -1,7 +1,7 @@
 import errno, glob, grp, pwd, stat, tempfile, subprocess
 import bup.helpers as helpers
 from bup import git, metadata, vfs
-from bup.helpers import clear_errors, detect_fakeroot, is_superuser, realpath
+from bup.helpers import clear_errors, detect_fakeroot, is_superuser, resolve_parent
 from wvtest import *
 from bup.xstat import utime, lutime
 
@@ -135,7 +135,7 @@ def test_metadata_method():
     ex(bup_path, '-d', bup_dir, 'save', '-tvvn', 'test', data_path)
     git.check_repo_or_die(bup_dir)
     top = vfs.RefList(None)
-    n = top.lresolve('/test/latest' + realpath(data_path))
+    n = top.lresolve('/test/latest' + resolve_parent(data_path))
     m = n.metadata()
     WVPASS(m.mtime == test_time2)
     WVPASS(len(n.subs()) == 2)
index e9dc25e3cecb62125801894ba9c093d68786c3c3..5c5b01ee5947659b3d687ee11792374ced57371d 100644 (file)
--- a/t/lib.sh
+++ b/t/lib.sh
@@ -12,12 +12,12 @@ force-delete()
     "$bup_t_lib_script_home/force-delete" "$@"
 }
 
-realpath()
+resolve-parent()
 {
     test "$#" -eq 1 || return $?
     echo "$1" | \
         PYTHONPATH="$bup_t_lib_script_home/../lib" bup-python -c \
-        "import sys, bup.helpers; print bup.helpers.realpath(sys.stdin.readline())" \
+        "import sys, bup.helpers; print bup.helpers.resolve_parent(sys.stdin.readline())" \
         || return $?
 }
 
index d270e61583d164578243009da3a39fc5da5b16c3..f82c3452b67e0c2263a0ba29e42f028e0503f78d 100755 (executable)
--- a/t/test.sh
+++ b/t/test.sh
@@ -197,8 +197,8 @@ c/"
 WVSTART "save disjoint top-level directories"
 (
     # Resolve any symlinks involving the top top-level dirs.
-    real_pwd="$(WVPASS realpath .)" || exit $?
-    real_tmp="$(WVPASS realpath /tmp/.)" || exit $?
+    real_pwd="$(WVPASS resolve-parent .)" || exit $?
+    real_tmp="$(WVPASS resolve-parent /tmp/.)" || exit $?
     pwd_top="$(echo $real_pwd | WVPASS awk -F "/" '{print $2}')" || exit $?
     tmp_top="$(echo $real_tmp | WVPASS awk -F "/" '{print $2}')" || exit $?