From 7fbe63bcb44b782fbb59649960d415c9cf7881ca Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Fri, 25 Jun 2021 12:47:38 -0700 Subject: [PATCH] Add tests for mkksiso --- tests/scripts/run_tests.sh | 157 ++++++++++++++++++++++++++++++++++++- 1 file changed, 156 insertions(+), 1 deletion(-) diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh index 9d31c2f..4894eb5 100755 --- a/tests/scripts/run_tests.sh +++ b/tests/scripts/run_tests.sh @@ -1,5 +1,150 @@ #!/bin/bash set -eux + +FAILANY=0 +BOOTISO=/var/tmp/lorax-fedora-iso/images/boot.iso +KSNAME=fedora-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" +} + + + # Gather up the list of system repo files and use them for lorax REPOS=$(for f in /etc/yum.repos.d/*repo; do echo -n "--repo $f "; done) if [ -z "$REPOS" ]; then @@ -9,5 +154,15 @@ 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="Fedora" --version=rawhide --release=rawhide --volid="Fedora-rawhide-test" \ - $REPOS --isfinal --nomacboot /var/tmp/lorax-fedora-iso/ + $REPOS --isfinal --nomacboot /var/tmp/lorax-fedora-iso/ || exit 1 + +# Test mkksiso on the new boot.iso +ks_only +ks_serial +new_volid +add_files +run_all + +exit $FAILANY