From 4bb1b04fd1d7d6fe410e1af14816d11da456aac5 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Thu, 16 Mar 2006 15:20:45 +0000 Subject: Redo test suite to be able to test more than one command at a time. Eliminate $COMMAND environment variable, instead put full command line (including command to run) in second argument. Modify $PATH to have test versions of commands at start of path. (Also more infrastructure for testing as root, work in progress...) --- testsuite/testing.sh | 63 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 18 deletions(-) (limited to 'testsuite/testing.sh') diff --git a/testsuite/testing.sh b/testsuite/testing.sh index 08f4200c5..bec5976e1 100755 --- a/testsuite/testing.sh +++ b/testsuite/testing.sh @@ -56,45 +56,41 @@ optional() testing () { + NAME="$1" + [ -z "$1" ] && NAME=$2 + if [ $# -ne 5 ] then - echo "Test $1 has the wrong number of arguments ($# $*)" >&2 + echo "Test $NAME has the wrong number of arguments ($# $*)" >&2 exit fi - if [ -n "$DEBUG" ] ; then - set -x - fi + [ -n "$DEBUG" ] && set -x if [ -n "$SKIP" ] then - echo "SKIPPED: $1" + echo "SKIPPED: $NAME" return 0 fi echo -ne "$3" > expected echo -ne "$4" > input - echo -ne "$5" | eval "$COMMAND $2" > actual + [ -z "$VERBOSE" ] || echo "echo '$5' | $COMMAND $2" + echo -ne "$5" | eval "$2" > actual RETVAL=$? cmp expected actual > /dev/null if [ $? -ne 0 ] then FAILCOUNT=$[$FAILCOUNT+1] - echo "FAIL: $1" - if [ -n "$VERBOSE" ] - then - diff -u expected actual - fi + echo "FAIL: $NAME" + [ -n "$VERBOSE" ] && diff -u expected actual else - echo "PASS: $1" + echo "PASS: $NAME" fi rm -f input expected actual - if [ -n "$DEBUG" ] - then - set +x - fi + [ -n "$DEBUG" ] && set +x return $RETVAL } @@ -108,6 +104,8 @@ function mkchroot { [ $# -lt 2 ] && return + echo -n . + dest=$1 shift for i in "$@" @@ -119,9 +117,38 @@ function mkchroot mkdir -p "$dest/$d" && cat "$i" > "$dest/$i" && chmod +x "$dest/$i" - else - i="$dest/$i" fi mkchroot "$dest" $(ldd "$i" | egrep -o '/.* ') done } + +# Set up a chroot environment and run commands within it. +# Needed commands listed on command line +# Script fed to stdin. + +function dochroot +{ + mkdir tmpdir4chroot + mount -t ramfs tmpdir4chroot tmpdir4chroot + mkdir -p tmpdir4chroot/{etc,sys,proc,tmp,dev} + cp -L testing.sh tmpdir4chroot + + # Copy utilities from command line arguments + + echo -n "Setup chroot" + mkchroot tmpdir4chroot $* + echo + + mknod tmpdir4chroot/dev/tty c 5 0 + mknod tmpdir4chroot/dev/null c 1 3 + mknod tmpdir4chroot/dev/zero c 1 5 + + # Copy script from stdin + + cat > tmpdir4chroot/test.sh + chmod +x tmpdir4chroot/test.sh + chroot tmpdir4chroot /test.sh + umount -l tmpdir4chroot + rmdir tmpdir4chroot +} + -- cgit v1.2.3