summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael E Brown <michael_e_brown@dell.com>2007-12-13 15:06:58 -0600
committerMichael E Brown <michael_e_brown@dell.com>2007-12-13 15:06:58 -0600
commit772393088cd0e6169f2a21e3a3470f6ebb59d2b1 (patch)
treefb79e3aad960499e28ac19c1eb7aa78df38358ed
parent64dbe925996c7f643cb9f980ac8b4fb4b6dbe1a0 (diff)
downloadmock-772393088cd0e6169f2a21e3a3470f6ebb59d2b1.tar.gz
mock-772393088cd0e6169f2a21e3a3470f6ebb59d2b1.tar.xz
mock-772393088cd0e6169f2a21e3a3470f6ebb59d2b1.zip
rename releasetests.sh to runtests.sh to prepare for adding 'make check' function
-rwxr-xr-xdocs/runtests.sh177
1 files changed, 177 insertions, 0 deletions
diff --git a/docs/runtests.sh b/docs/runtests.sh
new file mode 100755
index 0000000..d627bff
--- /dev/null
+++ b/docs/runtests.sh
@@ -0,0 +1,177 @@
+#!/bin/sh
+# vim:tw=0:ts=4:sw=4
+
+# this is a test script to run everything through its paces before you do a
+# release. The basic idea is:
+
+# 1) make distcheck to ensure that all autoconf stuff is setup properly
+# 2) run some basic tests to test different mock options.
+# 3) rebuild mock srpm using this version of mock under all distributed configs
+
+# This test will only run on a machine with full access to internet.
+# might work with http_proxy= env var, but I havent tested that.
+#
+# This test script expects to be run on an x86_64 machine. It will *not* run
+# properly on an i386 machine.
+#
+
+set -e
+set -x
+
+DIR=$(cd $(dirname $0); pwd)
+TOP_SRCTREE=$DIR/../
+cd $TOP_SRCTREE
+
+./autogen.sh
+make distclean ||:
+./configure
+make distcheck
+make srpm
+gcc -o docs/daemontest docs/daemontest.c
+
+#
+# most tests below will use this mock command line
+#
+testConfig=fedora-8-x86_64
+uniqueext="$$-$RANDOM"
+MOCKCMD="sudo ./py/mock.py --resultdir=$TOP_SRCTREE/mock-unit-test --uniqueext=$uniqueext -r $testConfig $MOCK_EXTRA_ARGS"
+CHROOT=/var/lib/mock/${testConfig}-$uniqueext/root
+
+# clear out any old test results
+sudo rm -rf $TOP_SRCTREE/mock-unit-test
+
+# clear out root cache so we get at least run without root cache present
+sudo rm -rf /var/lib/mock/cache/${testConfig}/root_cache
+
+#
+# pre-populate yum cache for the rest of the commands below
+#
+time $MOCKCMD --init
+time $MOCKCMD --installdeps mock-*.src.rpm
+if [ ! -e $CHROOT/usr/include/python* ]; then
+ echo "installdeps test FAILED. could not find /usr/include/python*"
+ exit 1
+fi
+
+#
+# Test that chroot return code is properly passed up
+#
+set +e
+time $MOCKCMD --offline --chroot -- bash -c "exit 5"
+if [ $? -ne 5 ]; then
+ echo "'mock --chroot' return code not properly passed back."
+ exit 1
+fi
+set -e
+
+#
+# test mock shell (interactive) and return code passing
+#
+set +e
+echo exit 5 | time $MOCKCMD --offline --shell
+if [ $? -ne 5 ]; then
+ echo "'mock --chroot' return code not properly passed back."
+ exit 1
+fi
+set -e
+
+#
+# Test that chroot with one arg is getting passed though a shell (via os.system())
+#
+time $MOCKCMD --offline --chroot 'touch /tmp/{foo,bar,baz}'
+if [ ! -f $CHROOT/tmp/foo ] || [ ! -f $CHROOT/tmp/bar ] || [ ! -f $CHROOT/tmp/baz ]; then
+ echo "'mock --chroot' with one argument is not being passed to os.system()"
+ exit 1
+fi
+
+#
+# Test that chroot with more than one arg is not getting passed through a shell
+#
+time $MOCKCMD --offline --chroot touch '/tmp/{quux,wibble}'
+if [ ! -f $CHROOT/tmp/\{quux,wibble\} ] || [ -f $CHROOT/tmp/quux ] || [ -f $CHROOT/tmp/wibble ]; then
+ echo "'mock --chroot' with more than one argument is being passed to os.system()"
+ exit 1
+fi
+
+#
+# Test offline build
+#
+time $MOCKCMD --offline --rebuild mock-*.src.rpm
+if [ ! -e mock-unit-test/mock-*.x86_64.rpm ]; then
+ echo "rebuild test FAILED. could not find mock-unit-test/mock-*.x86_64.rpm"
+ exit 1
+fi
+
+#
+# Test orphanskill feature (std)
+#
+if pgrep daemontest; then
+ echo "Exiting because there is already a daemontest running."
+ exit 1
+fi
+time $MOCKCMD --offline --init
+cp docs/daemontest $CHROOT/tmp
+time $MOCKCMD --offline --chroot -- /tmp/daemontest
+if pgrep daemontest; then
+ echo "Daemontest FAILED. found a daemontest process running after exit."
+ exit 1
+fi
+
+#
+# Test orphanskill feature (explicit)
+#
+time $MOCKCMD --offline --init
+cp docs/daemontest $CHROOT/tmp
+echo -e "#!/bin/sh\n/tmp/daemontest\nsleep 60\n" >> $CHROOT/tmp/try
+# the following should launch about three processes in the chroot: bash, sleep, daemontest
+$MOCKCMD --offline --chroot -- bash /tmp/try &
+mockpid=$!
+sleep 1
+# now we 'prematurely' kill mock. This should leave the three orphans above
+sudo kill -9 $mockpid
+if ! pgrep daemontest; then
+ echo "Daemontest failed. daemontest should be running now but is not."
+ exit 1
+fi
+$MOCKCMD --offline --orphanskill
+if pgrep daemontest; then
+ echo "Daemontest FAILED. found a daemontest process running after exit."
+ exit 1
+fi
+
+
+#
+# test init/clean
+#
+time $MOCKCMD --offline --clean
+if [ -e $CHROOT ]; then
+ echo "clean test FAILED. still found $CHROOT dir."
+ exit 1
+fi
+
+time $MOCKCMD --offline --init
+time $MOCKCMD --offline --install ccache
+if [ ! -e $CHROOT/usr/bin/ccache ]; then
+ echo "init/clean test FAILED. ccache not found."
+ exit 1
+fi
+
+#
+# test old-style cmdline options
+#
+time $MOCKCMD --offline clean
+time $MOCKCMD --offline init
+time $MOCKCMD --offline install ccache
+if [ ! -e $CHROOT/usr/bin/ccache ]; then
+ echo "init/clean test FAILED. ccache not found."
+ exit 1
+fi
+
+#
+# Test build all configs we ship.
+#
+for i in $(ls etc/mock | grep .cfg | grep -v default | grep -v ppc); do
+ time sudo ./py/mock.py --resultdir=$TOP_SRCTREE/mock-unit-test --uniqueext=$uniqueext rebuild mock-*.src.rpm -r $(basename $i .cfg) $MOCK_EXTRA_ARGS
+done
+
+