1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#!/usr/bin/env bash
. wvtest-bup.sh || exit $?
. dev/lib.sh || exit $?
set -o pipefail
TOP="$(WVPASS pwd)" || exit $?
tmpdir="$(WVPASS wvmktempdir)" || exit $?
export BUP_DIR="$tmpdir/bup"
bup()
{
"$TOP/bup" "$@"
}
wait-for-server-start()
{
curl --unix-socket ./socket http://localhost/
curl_status=$?
while test $curl_status -eq 7; do
sleep 0.2
curl --unix-socket ./socket http://localhost/
curl_status=$?
done
WVPASSEQ $curl_status 0
}
WVPASS cd "$tmpdir"
if test -z "$(type -p curl)"; then
WVSKIP 'curl does not appear to be installed; skipping test'
exit 0
fi
WVPASS bup-cfg-py -c "import socket as s; s.socket(s.AF_UNIX).bind('socket')"
curl -s --unix-socket ./socket http://localhost/foo
if test $? -ne 7; then
WVSKIP 'curl does not appear to support --unix-socket; skipping test'
exit 0
fi
if ! bup-python -c 'import tornado' 2> /dev/null; then
WVSKIP 'unable to import tornado; skipping test'
exit 0
fi
WVSTART 'web'
WVPASS bup init
WVPASS mkdir src
WVPASS echo '¡excitement!' > src/data
WVPASS echo -e 'whee \x80\x90\xff' > "$(echo -ne 'src/whee \x80\x90\xff')"
WVPASS bup index src
WVPASS bup save -n '¡excitement!' --strip src
"$TOP/bup" web unix://socket </dev/null >bup-web.log 2>&1 &
web_pid=$!
# output the log if something fails
trap 'cat bup-web.log' EXIT
wait-for-server-start
WVPASS curl --unix-socket ./socket \
'http://localhost/%C2%A1excitement%21/latest/data' > result
WVPASS curl --unix-socket ./socket \
'http://localhost/%C2%A1excitement%21/latest/whee%20%80%90%ff' > result2
WVPASSEQ "$(curl --unix-socket ./socket http://localhost/static/styles.css)" \
"$(cat "$TOP/lib/web/static/styles.css")"
WVPASSEQ '¡excitement!' "$(cat result)"
WVPASS cmp "$(echo -ne 'src/whee \x80\x90\xff')" result2
WVPASS kill -s TERM "$web_pid"
WVPASS wait "$web_pid"
trap - EXIT
WVPASS rm -r "$tmpdir"
|