Browse Source

test: new test TEST-99-RPM

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.
master
Harald Hoyer 13 years ago
parent
commit
4eafdbdbe8
  1. 10
      test/TEST-99-RPM/Makefile
  2. 83
      test/TEST-99-RPM/test.sh

10
test/TEST-99-RPM/Makefile

@ -0,0 +1,10 @@ @@ -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

83
test/TEST-99-RPM/test.sh

@ -0,0 +1,83 @@ @@ -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
Loading…
Cancel
Save