lorax/tests/mkksiso/test_liveimg.sh
Brian C. Lane dcd92cf8c0 tests: Add 'test_mkksiso' tests
These use beakerlib to download a Fedora boot.iso and run mkksiso on
it. It currently does not try to boot the resulting iso, it mounts it
and checks that the expected config files have been modified and the
extra files have been added.
2019-11-05 11:09:42 -08:00

59 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/bash
# Note: execute this file from the project root directory
set -e
[ -z "$1" ] && (echo "$0: Missing path to iso"; exit 1)
[ -z "$2" ] && (echo "$0: Missing kickstart"; exit 1)
[ "$(id -u)" -eq 0 ] || (echo "$0 must be run as root"; exit 1)
. /usr/share/beakerlib/beakerlib.sh
CLI="${CLI:-./src/sbin/mkksiso}"
rlJournalStart
rlPhaseStartSetup "Setup a fake root image"
TMP_DIR=$(mktemp -d -p /var/tmp)
rlRun -t -c "mkdir -p $TMP_DIR/fake-root/etc"
rlRun -t -c "touch $TMP_DIR/fake-root/etc/passwd"
rlRun -t -c "tar -cvaf $TMP_DIR/root.tar.xz -C $TMP_DIR/fake-root/ ."
rlPhaseEnd
rlPhaseStartTest "Make a new iso with kickstart and root.tar.xz"
rlRun -t -c "$CLI --add $TMP_DIR/root.tar.xz $2 $1 $TMP_DIR/liveimg-boot.iso"
rlAssertExists "$TMP_DIR/liveimg-boot.iso"
rlPhaseEnd
rlPhaseStartTest "Check the new ISO"
ISO_DIR="$TMP_DIR/mnt-iso/"
rlRun -t -c "mkdir $ISO_DIR"
rlRun "mount $TMP_DIR/liveimg-boot.iso $ISO_DIR"
fail=0
rlLogInfo "Checking for kickstart $(basename "$2")"
if [ ! -e "$ISO_DIR$(basename "$2")" ]; then
rlLogError "The kickstart is missing from the iso"
fail=1
fi
for cfg in isolinux/isolinux.cfg EFI/BOOT/grub.cfg EFI/BOOT/BOOT.conf \
boot/grub/grub.cfg images/generic.prm; do
if [ -e "$ISO_DIR$cfg" ]; then
rlLogInfo "Checking $cfg"
if ! grep -q "$(basename "$2")" "$ISO_DIR$cfg"; then
rlLogError "$cfg is missing the kickstart"
fail=1
fi
fi
done
rlLogInfo "Checking for root.tar.xz on iso"
if [ ! -e "$TMP_DIR/root.tar.xz" ]; then
rlLogError "The root.tar.xz file is missing from the iso"
fail=1
fi
rlAssertEquals "All checks have passed" $fail 0
rlPhaseEnd
rlPhaseStartCleanup
rlRun -t -c "umount $ISO_DIR"
rlRun -t -c "rm -rf $TMP_DIR"
rlPhaseEnd
rlJournalEnd
rlJournalPrintText