aboutsummaryrefslogtreecommitdiff
path: root/bpkg/test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bpkg/test.sh')
-rwxr-xr-xbpkg/test.sh177
1 files changed, 177 insertions, 0 deletions
diff --git a/bpkg/test.sh b/bpkg/test.sh
new file mode 100755
index 0000000..d71609a
--- /dev/null
+++ b/bpkg/test.sh
@@ -0,0 +1,177 @@
+#! /usr/bin/env bash
+
+trap 'exit 1' ERR
+
+bpkg="./bpkg $*"
+#bpkg="valgrind -q ./bpkg $*"
+cfg=/tmp/conf
+pkg=libhello
+ver=1.0.0
+pkga=../../hello/dist/$pkg-$ver.tar.bz2
+pkgd=../../hello/dist/$pkg-$ver
+
+function error ()
+{
+ echo "$*" 1>&2
+ exit 1
+}
+
+function test ()
+{
+ local cmd=$1
+ shift
+
+ $bpkg $cmd -d $cfg $*
+
+ if [ $? -ne 0 ]; then
+ error "failed: $bpkg $cmd -d $cfg $*"
+ fi
+}
+
+function fail ()
+{
+ local cmd=$1
+ shift
+
+ $bpkg $cmd -d $cfg $*
+
+ if [ $? -eq 0 ]; then
+ error "succeeded: $bpkg $cmd -d $cfg $*"
+ fi
+
+ return 0
+}
+
+# Verify package status.
+#
+function stat ()
+{
+ local s=`$bpkg pkg-status -d $cfg $pkg $ver`
+
+ if [ "$s" != "$1" ]; then
+ error "status: $s, expected: $1"
+ fi
+}
+
+# Verify path is gone (no longer exists)
+#
+function gone ()
+{
+ if [ -e "$1" ]; then
+ error "path $1 still exists"
+ fi
+}
+
+##
+## cfg-create
+##
+
+test cfg-create --wipe config.cxx=g++-4.9 cxx config.install.root=/tmp/install
+stat unknown
+
+##
+## pkg-fetch
+##
+
+# fetch existing archive
+#
+stat unknown
+test pkg-fetch -e $pkga
+stat fetched
+test pkg-purge $pkg
+stat unknown
+
+
+##
+## pkg-purge
+##
+
+fail pkg-purge
+fail pkg-purge $pkg
+
+# purge fetched
+#
+test pkg-fetch -e $pkga
+test pkg-purge $pkg
+stat unknown
+
+# --keep
+#
+test pkg-fetch -e $pkga
+test pkg-purge -k $pkg
+stat fetched
+test pkg-purge $pkg
+
+# archive --purge
+#
+cp $pkga $cfg/
+test pkg-fetch -e -p $cfg/`basename $pkga`
+test pkg-purge $pkg
+stat unknown
+gone $cfg/`basename $pkga`
+
+# no archive but --keep
+#
+test pkg-unpack -e $pkgd
+fail pkg-purge --keep $pkg
+stat unpacked
+test pkg-purge $pkg
+
+# purge unpacked directory
+#
+test pkg-unpack -e $pkgd
+test pkg-purge $pkg
+stat unknown
+
+# purge unpacked archive
+#
+test pkg-fetch -e $pkga
+test pkg-unpack $pkg
+test pkg-purge $pkg
+stat unknown
+gone $cfg/`basename $pkgd`
+
+# purge unpacked archive but --keep
+#
+test pkg-fetch -e $pkga
+test pkg-unpack $pkg
+test pkg-purge --keep $pkg
+stat fetched
+gone $cfg/`basename $pkgd`
+test pkg-purge $pkg
+
+# directory --purge
+#
+cp -r $pkgd $cfg/
+test pkg-unpack -e -p $cfg/`basename $pkgd`
+test pkg-purge $pkg
+stat unknown
+gone $cfg/`basename $pkgd`
+
+# archive --purge
+#
+cp $pkga $cfg/
+test pkg-fetch -e -p $cfg/`basename $pkga`
+test pkg-unpack $pkg
+test pkg-purge $pkg
+stat unknown
+gone $cfg/`basename $pkgd`
+gone $cfg/`basename $pkga`
+
+# broken
+#
+cp $pkga $cfg/
+test pkg-fetch -e -p $cfg/`basename $pkga`
+test pkg-unpack $pkg
+chmod 000 $cfg/`basename $pkgd`
+fail pkg-purge $pkg
+stat broken
+fail pkg-purge $pkg # need --force
+fail pkg-purge -f -k $pkg # can't keep broken
+fail pkg-purge -f $pkg # directory still exists
+chmod 755 $cfg/`basename $pkgd`
+rm -r $cfg/`basename $pkgd`
+fail pkg-purge -f $pkg # archive still exists
+rm $cfg/`basename $pkga`
+test pkg-purge -f $pkg
+stat unknown