--- trunk/grubby/test.sh 2011/06/03 20:32:19 1332 +++ trunk/grubby/test.sh 2012/10/01 12:39:50 1940 @@ -69,10 +69,43 @@ fi } +# Test feature that display some information, checking that output instead of +# the generated configuration file +oneDisplayTest() { + typeset mode=$1 cfg=test/$2 correct=test/results/$3 + shift 3 + local BIO="--bad-image-okay" + if [ "$1" == "--bad-image-bad" ]; then + BIO="" + shift + fi + + echo "$testing ... $mode $cfg $correct" + runme=( ./grubby "$mode" $BIO -c "$cfg" "$@" ) + if "${runme[@]}" 2>&1 | cmp "$correct" > /dev/null; then + (( pass++ )) + if $opt_verbose; then + echo ------------------------------------------------------------- + echo -n "PASS: " + printf "%q " "${runme[@]}"; echo + "${runme[@]}" 2>&1 | diff -U30 "$cfg" - + echo + fi + else + (( fail++ )) + echo ------------------------------------------------------------- + echo -n "FAIL: " + printf "%q " "${runme[@]}"; echo + "${runme[@]}" 2>&1 | diff -U30 "$correct" - + echo + fi +} + # generate convenience functions for b in $(./grubby --help | \ sed -n 's/^.*--\([^ ]*\) *configure \1 bootloader$/\1/p'); do eval "${b}Test() { [[ \"$b\" == \$opt_bootloader ]] && oneTest --$b \"\$@\"; }" + eval "${b}DisplayTest() { [[ \"$b\" == \$opt_bootloader ]] && oneDisplayTest --$b \"\$@\"; }" done #---------------------------------------------------------------------- @@ -93,9 +126,15 @@ done export MALLOC_CHECK_=2 +if [ -n "${RANDOM}" ]; then + export MALLOC_PERTURB_=$(($RANDOM % 255 + 1)) +else + export MALLOC_PERTURB_=1 +fi testing="Parse/write comparison" for n in test/*.[0-9]*; do + [ -d $n ] && continue n=${n#*/} # remove test/ b=${n%.*} # remove suffix [[ $b == $opt_bootloader ]] || continue @@ -170,6 +209,37 @@ grubTest grub.4 default/g4.2 --boot-filesystem=/ --set-default=/boot/vmlinuz-2.4.7-ac3 --remove-kernel /boot/vmlinuz-2.4.7-2.5 --add-kernel=/boot/new-kernel --copy-default --title New_Title grubTest grub.6 default/g6.1 --remove-kernel=/boot/vmlinuz-2.4.7-2.9 --boot-filesystem=/ +testing="GRUB default index directive" +grubTest grub.13 setdefaultindex/g.13.0 --set-default-index=0 +grubTest grub.13 setdefaultindex/g.13.1 --set-default-index=1 +grubTest grub.13 setdefaultindex/g.13.9 --set-default-index=9 + +testing="GRUB display default index" +grubDisplayTest grub.1 defaultindex/0 --default-index +grubDisplayTest grub.2 defaultindex/0 --default-index +grubDisplayTest grub.3 defaultindex/0 --default-index +grubDisplayTest grub.4 defaultindex/0 --default-index +grubDisplayTest grub.5 defaultindex/0 --default-index +grubDisplayTest grub.6 defaultindex/2 --default-index +grubDisplayTest grub.7 defaultindex/2 --default-index +grubDisplayTest grub.8 defaultindex/0 --default-index +grubDisplayTest grub.9 defaultindex/0 --default-index +grubDisplayTest grub.10 defaultindex/0 --default-index +grubDisplayTest grub.10 defaultindex/0 --default-index + +testing="GRUB display default title" +grubDisplayTest grub.1 defaulttitle/g.1 --default-title +grubDisplayTest grub.2 defaulttitle/g.2 --default-title +grubDisplayTest grub.3 defaulttitle/g.3 --default-title +grubDisplayTest grub.4 defaulttitle/g.4 --default-title +grubDisplayTest grub.5 defaulttitle/g.5 --default-title +grubDisplayTest grub.6 defaulttitle/g.6 --default-title +grubDisplayTest grub.7 defaulttitle/g.7 --default-title +grubDisplayTest grub.8 defaulttitle/g.8 --default-title +grubDisplayTest grub.9 defaulttitle/g.9 --default-title +grubDisplayTest grub.10 defaulttitle/g.10 --default-title +grubDisplayTest grub.11 defaulttitle/g.11 --default-title + testing="LILO default directive" liloTest lilo.1 default/l1.1 --set-default=/boot/vmlinuz-2.4.18-4 liloTest lilo.1 default/l1.2 --remove-kernel=/boot/vmlinuz-2.4.18-4smp @@ -246,6 +316,12 @@ --update-kernel=/vmlinuz-2.4.7-2smp \ --args "ro root=LABEL=/ single" +testing="GRUB lba and root information on SuSE systems" +GRUBBY_SUSE_RELEASE=test/grub.12-support_files/etc/SuSE-release \ + GRUBBY_SUSE_GRUB_CONF=test/grub.12-support_files/etc/grub.conf \ + GRUBBY_GRUB_DEVICE_MAP=test/grub.12-support_files/boot/grub/device.map \ + grubTest grub.12 info/g12.1 --info=0 + testing="LILO update kernel argument handling" liloTest lilo.1 updargs/l1.1 --update-kernel=/boot/vmlinuz-2.4.18-4 \ --args="root=/dev/md1" @@ -301,6 +377,57 @@ --initrd=/boot/new-initrd --boot-filesystem=/boot --copy-default \ --args='console=tty0 console=ttyS1,9600n81 single' +testing="GRUB2 add kernel" +grub2Test grub2.1 add/g2-1.1 --add-kernel=/boot/new-kernel.img --title='title' \ + --initrd=/boot/new-initrd --boot-filesystem=/boot/ --copy-default +grub2Test grub2.1 add/g2-1.6 --add-kernel=/boot/new-kernel.img --title='title' \ + --initrd=/boot/new-initrd --boot-filesystem=/boot/ --copy-default --efi +grub2Test grub2.6 add/g2-1.7 --add-kernel=/boot/new-kernel.img --title='title' \ + --initrd=/boot/new-initrd --boot-filesystem=/boot/ --copy-default --efi +grub2Test grub2.1 add/g2-1.2 --add-kernel=/boot/new-kernel.img --title='title' \ + --initrd=/boot/new-initrd --boot-filesystem=/boot/ \ + --copy-default --make-default +grub2Test grub2.1 add/g2-1.3 --add-kernel=/boot/new-kernel.img --title='title' \ + --boot-filesystem=/boot/ --copy-default --make-default +grub2Test grub2.1 remove/g2-1.4 --remove-kernel=/boot/vmlinuz-2.6.38.2-9.fc15.x86_64 \ + --boot-filesystem=/boot/ +grub2Test grub2.5 add/g2-1.5 --add-kernel=/boot/new-kernel.img --title='title' \ + --initrd=/boot/new-initrd --boot-filesystem=/boot/ --copy-default + +testing="GRUB2 add initrd" +grub2Test grub2.2 add/g2-1.4 --update-kernel=/boot/new-kernel.img \ + --initrd=/boot/new-initrd --boot-filesystem=/boot/ + +testing="GRUB2 display default index" +grub2DisplayTest grub2.1 defaultindex/0 --default-index +grub2DisplayTest grub2.2 defaultindex/0 --default-index + +testing="GRUB2 display default title" +grub2DisplayTest grub2.1 defaulttitle/g2.1 --default-title +grub2DisplayTest grub2.2 defaulttitle/g2.2 --default-title + +testing="GRUB2 display debug failure" +grub2DisplayTest grub2.1 debug/g2.1 --bad-image-bad --boot-filesystem=/boot --default-kernel --debug +testing="GRUB2 display debug success" +grub2DisplayTest grub2.1 debug/g2.1.2 --boot-filesystem=/boot --default-kernel --debug + +testing="GRUB2 remove kernel via index" +grub2Test grub2.3 remove/g2-1.1 --remove-kernel=1 + +testing="GRUB2 remove kernel via title" +grub2Test grub2.3 remove/g2-1.1 --remove-kernel="TITLE=title2" + +testing="GRUB2 (submenu) remove kernel via index" +grub2Test grub2.4 remove/g2-1.2 --remove-kernel=2 + +testing="GRUB2 (submenu) remove kernel via title" +grub2Test grub2.4 remove/g2-1.2 --remove-kernel="TITLE=title2" + +testing="GRUB2 default index directive" +grub2Test grub2.1 setdefaultindex/g2.1.0 --set-default-index=0 +grub2Test grub2.1 setdefaultindex/g2.1.1 --set-default-index=1 +grub2Test grub2.1 setdefaultindex/g2.1.9 --set-default-index=9 + testing="YABOOT add kernel" yabootTest yaboot.1 add/y1.1 --copy-default --boot-filesystem=/ --add-kernel=/boot/new-kernel \ --title=newtitle