aboutsummaryrefslogtreecommitdiff
path: root/testcode/mini_tpkg.sh
diff options
context:
space:
mode:
Diffstat (limited to 'testcode/mini_tpkg.sh')
-rwxr-xr-xtestcode/mini_tpkg.sh128
1 files changed, 128 insertions, 0 deletions
diff --git a/testcode/mini_tpkg.sh b/testcode/mini_tpkg.sh
new file mode 100755
index 000000000000..ebf27a7d48a1
--- /dev/null
+++ b/testcode/mini_tpkg.sh
@@ -0,0 +1,128 @@
+# tpkg that only exes the files.
+args="../.."
+if test "$1" = "-a"; then
+ args=$2
+ shift
+ shift
+fi
+
+if test "$1" = "clean"; then
+ echo "rm -f result.* .done* .tpkg.var.master .tpkg.var.test"
+ rm -f result.* .done* .tpkg.var.master .tpkg.var.test
+ exit 0
+fi
+if test "$1" = "fake"; then
+ echo "minitpkg fake $2"
+ echo "fake" > .done-`basename $2 .tpkg`
+ exit 0
+fi
+if test "$1" = "report" || test "$2" = "report"; then
+ echo "Minitpkg Report"
+ for result in *.tpkg; do
+ name=`basename $result .tpkg`
+ if test -f ".done-$name"; then
+ if test "$1" != "-q"; then
+ echo "** PASSED ** : $name"
+ fi
+ else
+ if test -f "result.$name"; then
+ echo "!! FAILED !! : $name"
+ else
+ echo ">> SKIPPED<< : $name"
+ fi
+ fi
+ done
+ exit 0
+fi
+
+if test "$1" != 'exe'; then
+ # usage
+ echo "mini tpkg. Reduced functionality for old shells."
+ echo " tpkg exe <file>"
+ echo " tpkg fake <file>"
+ echo " tpkg clean"
+ echo " tpkg [-q] report"
+ exit 1
+fi
+shift
+
+# do not execute if the disk is too full
+#DISKLIMIT=100000
+# This check is not portable (to Solaris 10).
+#avail=`df . | tail -1 | awk '{print $4}'`
+#if test "$avail" -lt "$DISKLIMIT"; then
+ #echo "minitpkg: The disk is too full! Only $avail."
+ #exit 1
+#fi
+
+name=`basename $1 .tpkg`
+dir=$name.$$
+result=result.$name
+done=.done-$name
+success="no"
+if test -x "`which bash`"; then
+ shell="bash"
+else
+ shell="sh"
+fi
+
+# check already done
+if test -f .done-$name; then
+ echo "minitpkg .done-$name exists. skip test."
+ exit 0
+fi
+
+# Extract
+echo "minitpkg extract $1 to $dir"
+mkdir $dir
+gzip -cd $name.tpkg | (cd $dir; tar xf -)
+cd $dir
+mv $name.dir/* .
+
+# EXE
+echo "minitpkg exe $name" > $result
+grep "Description:" $name.dsc >> $result 2>&1
+echo "DateRunStart: "`date "+%s" 2>/dev/null` >> $result
+if test -f $name.pre; then
+ echo "minitpkg exe $name.pre"
+ echo "minitpkg exe $name.pre" >> $result
+ $shell $name.pre $args >> $result
+ if test $? -ne 0; then
+ echo "Warning: $name.pre did not exit successfully"
+ fi
+fi
+if test -f $name.test; then
+ echo "minitpkg exe $name.test"
+ echo "minitpkg exe $name.test" >> $result
+ $shell $name.test $args >>$result 2>&1
+ if test $? -ne 0; then
+ echo "$name: FAILED" >> $result
+ echo "$name: FAILED"
+ success="no"
+ else
+ echo "$name: PASSED" >> $result
+ echo "$name: PASSED" > ../.done-$name
+ echo "$name: PASSED"
+ success="yes"
+ fi
+fi
+if test -f $name.post; then
+ echo "minitpkg exe $name.post"
+ echo "minitpkg exe $name.post" >> $result
+ $shell $name.post $args >> $result
+ if test $? -ne 0; then
+ echo "Warning: $name.post did not exit successfully"
+ fi
+fi
+echo "DateRunEnd: "`date "+%s" 2>/dev/null` >> $result
+
+mv $result ..
+cd ..
+rm -rf $dir
+# compat for windows where deletion may not succeed initially (files locked
+# by processes that still have to exit).
+if test $? -eq 1; then
+ echo "minitpkg waiting for processes to terminate"
+ sleep 2 # some time to exit, and try again
+ rm -rf $dir
+fi