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...)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user