diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh index 79e432b..86ca63a 100755 --- a/tests/scripts/run_tests.sh +++ b/tests/scripts/run_tests.sh @@ -1,6 +1,149 @@ #!/bin/bash set -eux +FAILANY=0 +BOOTISO=/var/tmp/lorax-rhel9-iso/images/boot.iso +KSNAME=minimal.ks +KS="/usr/share/doc/lorax/$KSNAME" +OUTISO=/var/tmp/out.iso +ISODIR=/var/tmp/iso +IMGDIR=/var/tmp/img +## Functions for testing mkkiso + + +function fail { + echo -e "\n\n#### ERROR: $1\n" + FAIL=1 + FAILANY=1 +} + +function status { + if [ "$FAIL" -eq 0 ]; then + echo -e "\n\n#### PASS: $1\n" + else + echo -e "\n\n#### FAIL: $1\n" + fi +} + +function running { + FAIL=0 + echo -e "\n\n#### RUN: $1\n" +} + +[ -e "$ISODIR" ] || mkdir "$ISODIR" +[ -e "$IMGDIR" ] || mkdir "$IMGDIR" + +# Only add kickstart +function ks_only { + running "Add kickstart to iso" + + mkksiso $KS $BOOTISO $OUTISO || exit 1 + mount $OUTISO $ISODIR || exit 1 + + test_ks + + status "Add kickstart" + umount "$IMGDIR" + umount "$ISODIR" +} + +function test_ks { + ## This all needs to be another function + # Is there a kickstart in / of the iso? + [ -e "$ISODIR/$KSNAME" ] || fail "Missing kickstart" + + # Is the kickstart in the BIOS config? + grep "inst.ks=.*$KSNAME" "$ISODIR/isolinux/isolinux.cfg" || fail "Missing isolinux.cfg kickstart entry" + + # Is the kickstart in the UEFI config? + mount "$ISODIR/images/efiboot.img" "$IMGDIR" || exit 1 + grep "inst.ks=.*$KSNAME" "$IMGDIR/EFI/BOOT/grub.cfg" || fail "Missing UEFI grub.cfg kickstart entry" +} + +# Add ks and cmdline +function ks_serial { + running "Add kickstart and serial cmdline" + + mkksiso -c "console=ttyS0,115200n8" $KS $BOOTISO $OUTISO || exit 1 + mount $OUTISO $ISODIR || exit 1 + + test_ks + test_ks_serial + + status "Add kickstart and serial cmdline" + umount "$IMGDIR" + umount "$ISODIR" +} + +function test_ks_serial { + + # Is the serial in the BIOS config? + grep "console=ttyS0,115200n8" "$ISODIR/isolinux/isolinux.cfg" || fail "Missing isolinux.cfg cmdline entry" + + # Is the serial in the UEFI config? + grep "console=ttyS0,115200n8" "$IMGDIR/EFI/BOOT/grub.cfg" || fail "Missing UEFI grub.cfg cmdline entry" +} + +# New VOLID +function new_volid { + running "Use a new VOLID" + + mkksiso -V "mkksiso-test" $KS $BOOTISO $OUTISO || exit 1 + mount $OUTISO $ISODIR || exit 1 + + test_ks + test_volid + + status "Use a new VOLID" + umount "$IMGDIR" + umount "$ISODIR" +} + +function test_volid { + # Is the VOLID in the BIOS config? + grep "hd:LABEL=mkksiso-test" "$ISODIR/isolinux/isolinux.cfg" || fail "Missing isolinux.cfg kickstart entry" + + # Is the VOLID in the UEFI config? + grep "hd:LABEL=mkksiso-test" "$IMGDIR/EFI/BOOT/grub.cfg" || fail "Missing UEFI grub.cfg kickstart entry" +} + +# Add extra files +function add_files { + running "Add files" + + mkksiso -a /etc/services $KS $BOOTISO $OUTISO || exit 1 + mount $OUTISO $ISODIR || exit 1 + + test_ks + test_files + + status "Add files" + umount "$IMGDIR" + umount "$ISODIR" +} + +function test_files { + [ -e "$ISODIR/services" ] || fail "Missing file from iso" +} + +# All of the changes +function run_all { + running "Use all the options" + + mkksiso -a /etc/services -V "mkksiso-test" -c "console=ttyS0,115200n8" $KS $BOOTISO $OUTISO || exit 1 + mount $OUTISO $ISODIR || exit 1 + + test_ks + test_ks_serial + test_volid + test_files + + status "Use all the options" + umount "$IMGDIR" + umount "$ISODIR" +} + + if [ ! -e /usr/share/lorax/templates.d/80-rhel/ ]; then echo "Failed to find lorax-templates-rhel templates in /usr/share/lorax/templates.d/" exit 1 @@ -13,6 +156,17 @@ if [ -z "$REPOS" ]; then exit 1 fi +# NOTE: We must use --nomacboot because the test system doesn't have the hfsplus fs available # Run lorax using the host's repository configuration file +running "Build boot.iso with lorax" lorax --product="Red Hat Enterprise Linux" --version=9 --release=9 --volid="RHEL-9-test" \ - $REPOS --isfinal --nomacboot /var/tmp/lorax-rhel9-iso/ + $REPOS --isfinal --nomacboot /var/tmp/lorax-rhel9-iso/ || exit 1 + +# Test mkksiso on the new boot.iso +ks_only +ks_serial +new_volid +add_files +run_all + +exit $FAILANY