test: new test TEST-99-RPM
authorHarald Hoyer <harald@redhat.com>
Mon, 9 Jul 2012 14:28:47 +0000 (16:28 +0200)
committerHarald Hoyer <harald@redhat.com>
Mon, 9 Jul 2012 14:44:45 +0000 (16:44 +0200)
This test installs the dracut rpm together with the kernel in an
installroot. rpm -Va and rpm -qf are used, to ensure nothing modified
files in the real root.

test/TEST-99-RPM/Makefile [new file with mode: 0644]
test/TEST-99-RPM/test.sh [new file with mode: 0755]

diff --git a/test/TEST-99-RPM/Makefile b/test/TEST-99-RPM/Makefile
new file mode 100644 (file)
index 0000000..5513c52
--- /dev/null
@@ -0,0 +1,10 @@
+all:
+       @make -s --no-print-directory -C ../.. clean all rpm
+       @basedir=../.. testdir=../ ./test.sh --all
+setup:
+       @make --no-print-directory -C ../.. clean rpm
+       @basedir=../.. testdir=../ ./test.sh --setup
+clean:
+       @basedir=../.. testdir=../ ./test.sh --clean
+run:
+       @basedir=../.. testdir=../ ./test.sh --run
diff --git a/test/TEST-99-RPM/test.sh b/test/TEST-99-RPM/test.sh
new file mode 100755 (executable)
index 0000000..25c1895
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+TEST_DESCRIPTION="rpm integrity after dracut and kernel install"
+$TESTDIR
+
+test_run() {
+    set -x
+    export rootdir=$TESTDIR/root
+
+    mkdir -p $rootdir
+
+    mkdir -p "$rootdir/proc"
+    mkdir -p "$rootdir/sys"
+    mkdir -p "$rootdir/dev"
+
+    mount --bind /proc "$rootdir/proc"
+    mount --bind /sys "$rootdir/sys"
+    mount -t devtmpfs devtmpfs "$rootdir/dev"
+
+    yum --nogpgcheck --releasever=/ --installroot "$rootdir"/ install -y \
+       yum \
+       passwd \
+       rootfiles \
+       systemd \
+       kernel \
+       fedora-release \
+       device-mapper-multipath \
+       lvm2 \
+       mdadm \
+        bash \
+        iscsi-initiator-utils \
+        $basedir/dracut-[0-9]*.$(arch).rpm \
+        $basedir/dracut-network-[0-9]*.$(arch).rpm
+
+    cat >"$rootdir"/test.sh <<EOF
+#!/bin/bash
+set -x
+export LC_MESSAGES=C
+rpm -Va &> /test.output
+find / -xdev -type f -not -path '/var/*' \
+  -not -path '/usr/lib/modules/*/modules.*' \
+  -not -path '/etc/*-' \
+  -not -path '/etc/.pwd.lock' \
+  -not -path '/run/mount/utab' \
+  -not -path '/test.sh' \
+  -not -path '/test.output' \
+  -not -path '/etc/nsswitch.conf.bak' \
+  -not -path '/etc/iscsi/initiatorname.iscsi' \
+  -not -path '/dev/null' \
+  -exec rpm -qf '{}' ';' | \
+  fgrep 'not owned' &> /test.output
+exit
+EOF
+
+    chmod 0755 "$rootdir/test.sh"
+
+    chroot "$rootdir" /test.sh
+
+    if [[ -s "$rootdir"/test.output ]]; then
+       failed=1
+       echo TEST Failed >&2
+       cat "$rootdir"/test.output >&2
+    fi
+
+    umount "$rootdir/proc"
+    umount "$rootdir/sys"
+    umount "$rootdir/dev"
+
+    [[ $failed ]] && return 1
+    return 0
+
+}
+
+test_setup() {
+    return 0
+}
+
+test_cleanup() {
+    return 0
+}
+
+. $testdir/test-functions