#!/usr/bin/env bash
-. ./wvtest-bup.sh
+. ./wvtest-bup.sh || exit $?
+. t/lib.sh || exit $?
set -o pipefail
WVPASS cd "$tmpdir"
WVPASS mkdir src
-WVPASS touch -t 196907202018 src/.dotfile
-WVPASS bup random 1k > src/file
-WVPASS touch -t 196907202018 src/file
-(WVPASS cd src; WVPASS ln -s file symlink) || exit $?
+WVPASS touch src/.dotfile src/executable
WVPASS mkfifo src/fifo
-WVPASS touch -t 196907202018 src/fifo
WVPASS "$top"/t/mksock src/socket
-WVPASS touch -t 196907202018 src/socket
-WVPASS touch -t 196907202018 src/executable
+WVPASS bup random 1k > src/file
WVPASS chmod u+x src/executable
-WVPASS touch -t 196907202018 src/executable
+WVPASS chmod -R u=rwX,g-rwx,o-rwx .
+WVPASS touch -t 196907202018 src/.dotfile src/*
+(WVPASS cd src; WVPASS ln -s file symlink) || exit $?
WVPASS touch -t 196907202018 src
WVPASS touch -t 196907202018 .
-WVPASS chmod -R u=rwX,g-rwx,o-rwx .
WVPASS bup index src
-WVPASS bup save -n src src
+WVPASS bup save -n src -d 242312160 src
+WVPASS bup tag some-tag src
+
WVSTART "ls (short)"
+(export BUP_FORCE_TTY=1; WVPASSEQ "$(WVPASS bup ls | tr -d ' ')" src)
+
WVPASSEQ "$(WVPASS bup ls /)" "src"
WVPASSEQ "$(WVPASS bup ls -A /)" ".commit
.tag/
src/"
+WVPASSEQ "$(WVPASS bup ls /.tag)" "some-tag"
+
+WVPASSEQ "$(WVPASS bup ls /src)" \
+"1977-09-05-125600
+latest"
+
WVPASSEQ "$(WVPASS bup ls src/latest/"$tmpdir"/src)" "executable
fifo
file
socket=
symlink@"
+WVPASSEQ "$(WVPASS bup ls -d src/latest/"$tmpdir"/src)" "src/latest$tmpdir/src"
+
+
WVSTART "ls (long)"
WVPASSEQ "$(WVPASS bup ls -l / | tr -s ' ' ' ')" \
d--------- ?/? 0 1970-01-01 00:00 .tag/
d--------- ?/? 0 1970-01-01 00:00 src/"
-symlink_mode="$(WVPASS ls -l src/symlink | cut -d' ' -f 1)" || exit $?
+symlink_mode="$(WVPASS ls -l src/symlink | cut -b -10)" || exit $?
-symlink_size="$(WVPASS python -c "import os
-print os.lstat('src/symlink').st_size")" || exit $?
-
-symlink_date="$(WVPASS bup ls -l src/latest"$tmpdir"/src | grep symlink)" || exit $?
-symlink_date="$(WVPASS echo "$symlink_date" \
+symlink_bup_info="$(WVPASS bup ls -l src/latest"$tmpdir"/src | grep symlink)" \
+ || exit $?
+symlink_date="$(WVPASS echo "$symlink_bup_info" \
| WVPASS perl -ne 'm/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $2')" \
|| exit $?
-uid="$(id -u)" || exit $?
-gid="$(id -g)" || exit $?
-user="$(id -un)" || exit $?
-group="$(id -gn)" || exit $?
+if test "$(uname -s)" != NetBSD; then
+ symlink_size="$(WVPASS bup-python -c "import os
+print os.lstat('src/symlink').st_size")" || exit $?
+else
+ # NetBSD appears to return varying sizes, so for now, just ignore it.
+ symlink_size="$(WVPASS echo "$symlink_bup_info" \
+ | WVPASS perl -ne 'm/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $1')" \
+ || exit $?
+fi
+
+uid="$(WVPASS id -u)" || exit $?
+gid="$(WVPASS bup-python -c 'import os; print os.stat("src").st_gid')" || exit $?
+user="$(WVPASS id -un)" || exit $?
+group="$(WVPASS bup-python -c 'import grp, os;
+print grp.getgrgid(os.stat("src").st_gid)[0]')" || exit $?
WVPASSEQ "$(bup ls -l src/latest"$tmpdir"/src | tr -s ' ' ' ')" \
"-rwx------ $user/$group 0 1969-07-20 20:18 executable
srwx------ $uid/$gid 0 1969-07-20 20:18 socket
$symlink_mode $uid/$gid $symlink_size $symlink_date symlink -> file"
+WVPASSEQ "$(bup ls -ld "src/latest$tmpdir/src" | tr -s ' ' ' ')" \
+"drwx------ $user/$group 0 1969-07-20 20:18 src/latest$tmpdir/src"
+
+
WVSTART "ls (backup set - long)"
WVPASSEQ "$(bup ls -l src | cut -d' ' -f 1-2)" \
"l--------- ?/?
l--------- ?/?"
+
WVSTART "ls (dates TZ != UTC)"
-export TZ=US/Central
+export TZ=America/Chicago
symlink_date_central="$(bup ls -l src/latest"$tmpdir"/src | grep symlink)"
symlink_date_central="$(echo "$symlink_date_central" \
| perl -ne 'm/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $2')"
$symlink_mode $uid/$gid $symlink_size $symlink_date_central symlink -> file"
unset TZ
+
WVPASS rm -rf "$tmpdir"