import 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
+from bup.helpers import clear_errors, detect_fakeroot, is_superuser, realpath
from wvtest import *
from bup.xstat import utime, lutime
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' + data_path)
+ n = top.lresolve('/test/latest' + realpath(data_path))
m = n.metadata()
WVPASS(m.mtime == test_time2)
WVPASS(len(n.subs()) == 2)
fi
done
}
+
+realpath()
+(
+ set -e;
+ test "$#" -eq 1
+ script_home=$(cd "$(dirname $0)" && pwd)
+ echo "$1" | \
+ PYTHONPATH="${script_home}/../lib" python -c \
+ "import sys, bup.helpers; print bup.helpers.realpath(sys.stdin.readline())"
+)
WVSTART "save disjoint top-level directories"
(
set -e
- top_dir="$(echo $(pwd) | awk -F "/" '{print $2}')"
- if [ "$top_dir" == tmp ]; then
- echo "(running from within /tmp; skipping test)"
+ # Resolve any symlinks involving the top top-level dirs.
+ real_pwd="$(realpath .)"
+ real_tmp="$(realpath /tmp/.)"
+ pwd_top="$(echo $real_pwd | awk -F "/" '{print $2}')"
+ tmp_top="$(echo $real_tmp | awk -F "/" '{print $2}')"
+ if [ "$pwd_top" = "$tmp_top" ]; then
+ echo "(running from within /$tmp_top; skipping test)"
exit 0
fi
D=bupdata.tmp
force-delete $D
mkdir -p $D/x
date > $D/x/1
- tmpdir="$(mktemp -d /tmp/bup-test-XXXXXXX)"
+ tmpdir="$(mktemp -d $real_tmp/bup-test-XXXXXXX)"
cleanup() { set -x; rm -r "${tmpdir}"; set +x; }
trap cleanup EXIT
date > "$tmpdir/2"
WVPASS bup init
WVPASS bup index -vu $(pwd)/$D/x "$tmpdir"
WVPASS bup save -t -n src $(pwd)/$D/x "$tmpdir"
+
# For now, assume that "ls -a" and "sort" use the same order.
- WVPASSEQ "$(bup ls -a src/latest)" "$(echo -e "$top_dir/\ntmp/" | sort)"
+ WVPASSEQ "$(bup ls -a src/latest)" \
+ "$(echo -e "$pwd_top/\n$tmp_top/" | sort)"
) || WVFAIL
WVSTART "clear-index"