summaryrefslogtreecommitdiffstats
path: root/test/parser
diff options
context:
space:
mode:
authorGeoff Levand <geoff@infradead.org>2013-05-17 17:09:01 +0800
committerGeoff Levand <geoff@infradead.org>2013-05-17 17:44:29 +0800
commite1a6f62162716511956417e6c103de37ce9c71d2 (patch)
tree3feee916f8962b2173828367473d9c1226888c20 /test/parser
parentac319778b407636ae5b0ecf9d75e85752014ef96 (diff)
downloadtalos-petitboot-e1a6f62162716511956417e6c103de37ce9c71d2.tar.gz
talos-petitboot-e1a6f62162716511956417e6c103de37ce9c71d2.zip
test/parser: Add ubuntu grub tests
Signed-off-by: Geoff Levand <geoff@infradead.org>
Diffstat (limited to 'test/parser')
-rw-r--r--test/parser/Makefile.am2
-rw-r--r--test/parser/data/grub2-ubuntu-13_04-x86.conf242
-rw-r--r--test/parser/test-grub2-ubuntu-13_04-x86.c74
3 files changed, 318 insertions, 0 deletions
diff --git a/test/parser/Makefile.am b/test/parser/Makefile.am
index e330e82..af4fbd6 100644
--- a/test/parser/Makefile.am
+++ b/test/parser/Makefile.am
@@ -28,6 +28,7 @@ TESTS = test-null \
test-grub2-single \
test-grub2-multiple-resolve \
test-grub2-f18-ppc64 \
+ test-grub2-ubuntu-13_04-x86 \
test-kboot-single \
test-yaboot-single \
test-yaboot-external \
@@ -36,6 +37,7 @@ TESTS = test-null \
check_PROGRAMS = $(TESTS)
check_LIBRARIES = $(test_libs)
check_DATA = data/grub2-f18-ppc64.conf \
+ data/grub2-ubuntu-13_04-x86.conf \
data/yaboot-rh8-ppc64.conf
common_libs = $(top_builddir)/lib/libpbcore.la
diff --git a/test/parser/data/grub2-ubuntu-13_04-x86.conf b/test/parser/data/grub2-ubuntu-13_04-x86.conf
new file mode 100644
index 0000000..4138b8e
--- /dev/null
+++ b/test/parser/data/grub2-ubuntu-13_04-x86.conf
@@ -0,0 +1,242 @@
+#
+# DO NOT EDIT THIS FILE
+#
+# It is automatically generated by grub-mkconfig using templates
+# from /etc/grub.d and settings from /etc/default/grub
+#
+
+### BEGIN /etc/grub.d/00_header ###
+if [ -s $prefix/grubenv ]; then
+ set have_grubenv=true
+ load_env
+fi
+set default="0"
+
+if [ x"${feature_menuentry_id}" = xy ]; then
+ menuentry_id_option="--id"
+else
+ menuentry_id_option=""
+fi
+
+export menuentry_id_option
+
+if [ "${prev_saved_entry}" ]; then
+ set saved_entry="${prev_saved_entry}"
+ save_env saved_entry
+ set prev_saved_entry=
+ save_env prev_saved_entry
+ set boot_once=true
+fi
+
+function savedefault {
+ if [ -z "${boot_once}" ]; then
+ saved_entry="${chosen}"
+ save_env saved_entry
+ fi
+}
+
+function recordfail {
+ set recordfail=1
+ if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
+}
+
+function load_video {
+ if [ x$feature_all_video_module = xy ]; then
+ insmod all_video
+ else
+ insmod efi_gop
+ insmod efi_uga
+ insmod ieee1275_fb
+ insmod vbe
+ insmod vga
+ insmod video_bochs
+ insmod video_cirrus
+ fi
+}
+
+if [ x$feature_default_font_path = xy ] ; then
+ font=unicode
+else
+insmod part_msdos
+insmod ext2
+set root='hd0,msdos1'
+if [ x$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 29beca39-9181-4780-bbb2-ab5d4be59aaf
+else
+ search --no-floppy --fs-uuid --set=root 29beca39-9181-4780-bbb2-ab5d4be59aaf
+fi
+ font="/usr/share/grub/unicode.pf2"
+fi
+
+if loadfont $font ; then
+ set gfxmode=auto
+ load_video
+ insmod gfxterm
+ set locale_dir=$prefix/locale
+ set lang=en_US
+ insmod gettext
+fi
+terminal_output gfxterm
+if [ "${recordfail}" = 1 ]; then
+ set timeout=-1
+else
+ set timeout=10
+fi
+### END /etc/grub.d/00_header ###
+
+### BEGIN /etc/grub.d/05_debian_theme ###
+set menu_color_normal=white/black
+set menu_color_highlight=black/light-gray
+#set_background_image "images/tile.png";
+
+set menu_color_normal=white/black
+set menu_color_highlight=black/light-gray
+if background_color 0,0,0; then
+ clear
+fi
+### END /etc/grub.d/05_debian_theme ###
+
+### BEGIN /etc/grub.d/10_linux ###
+function gfxmode {
+ set gfxpayload="${1}"
+ if [ "${1}" = "keep" ]; then
+ set vt_handoff=vt.handoff=7
+ else
+ set vt_handoff=
+ fi
+}
+if [ "${recordfail}" != 1 ]; then
+ if [ -e ${prefix}/gfxblacklist.txt ]; then
+ if hwmatch ${prefix}/gfxblacklist.txt 3; then
+ if [ ${match} = 0 ]; then
+ set linux_gfx_mode=keep
+ else
+ set linux_gfx_mode=text
+ fi
+ else
+ set linux_gfx_mode=text
+ fi
+ else
+ set linux_gfx_mode=keep
+ fi
+else
+ set linux_gfx_mode=text
+fi
+export linux_gfx_mode
+menuentry 'Kubuntu GNU/Linux' --class kubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-29beca39-9181-4780-bbb2-ab5d4be59aaf' {
+recordfail
+ load_video
+ gfxmode $linux_gfx_mode
+ insmod gzio
+ insmod part_msdos
+ insmod ext2
+ set root='hd0,msdos1'
+ if [ x$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ else
+ search --no-floppy --fs-uuid --set=root 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ fi
+ linux /boot/vmlinuz-3.8.0-19-generic root=UUID=29beca39-9181-4780-bbb2-ab5d4be59aaf ro quiet splash $vt_handoff
+ initrd /boot/initrd.img-3.8.0-19-generic
+}
+submenu 'Advanced options for Kubuntu GNU/Linux' $menuentry_id_option 'gnulinux-advanced-29beca39-9181-4780-bbb2-ab5d4be59aaf' {
+ menuentry 'Kubuntu GNU/Linux, with Linux 3.8.0-19-generic' --class kubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-19-generic-advanced-29beca39-9181-4780-bbb2-ab5d4be59aaf' {
+ recordfail
+ load_video
+ gfxmode $linux_gfx_mode
+ insmod gzio
+ insmod part_msdos
+ insmod ext2
+ set root='hd0,msdos1'
+ if [ x$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ else
+ search --no-floppy --fs-uuid --set=root 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ fi
+ echo 'Loading Linux 3.8.0-19-generic ...'
+ linux /boot/vmlinuz-3.8.0-19-generic root=UUID=29beca39-9181-4780-bbb2-ab5d4be59aaf ro quiet splash $vt_handoff
+ echo 'Loading initial ramdisk ...'
+ initrd /boot/initrd.img-3.8.0-19-generic
+ }
+ menuentry 'Kubuntu GNU/Linux, with Linux 3.8.0-19-generic (recovery mode)' --class kubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-19-generic-recovery-29beca39-9181-4780-bbb2-ab5d4be59aaf' {
+ recordfail
+ load_video
+ insmod gzio
+ insmod part_msdos
+ insmod ext2
+ set root='hd0,msdos1'
+ if [ x$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ else
+ search --no-floppy --fs-uuid --set=root 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ fi
+ echo 'Loading Linux 3.8.0-19-generic ...'
+ linux /boot/vmlinuz-3.8.0-19-generic root=UUID=29beca39-9181-4780-bbb2-ab5d4be59aaf ro recovery nomodeset
+ echo 'Loading initial ramdisk ...'
+ initrd /boot/initrd.img-3.8.0-19-generic
+ }
+}
+
+### END /etc/grub.d/10_linux ###
+
+### BEGIN /etc/grub.d/20_linux_xen ###
+
+### END /etc/grub.d/20_linux_xen ###
+
+### BEGIN /etc/grub.d/20_memtest86+ ###
+menuentry "Memory test (memtest86+)" {
+ insmod part_msdos
+ insmod ext2
+ set root='hd0,msdos1'
+ if [ x$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ else
+ search --no-floppy --fs-uuid --set=root 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ fi
+ linux16 /boot/memtest86+.bin
+}
+menuentry "Memory test (memtest86+, serial console 115200)" {
+ insmod part_msdos
+ insmod ext2
+ set root='hd0,msdos1'
+ if [ x$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ else
+ search --no-floppy --fs-uuid --set=root 29beca39-9181-4780-bbb2-ab5d4be59aaf
+ fi
+ linux16 /boot/memtest86+.bin console=ttyS0,115200n8
+}
+### END /etc/grub.d/20_memtest86+ ###
+
+### BEGIN /etc/grub.d/30_os-prober ###
+if [ "x${timeout}" != "x-1" ]; then
+ if keystatus; then
+ if keystatus --shift; then
+ set timeout=-1
+ else
+ set timeout=0
+ fi
+ else
+ if sleep --interruptible 3 ; then
+ set timeout=0
+ fi
+ fi
+fi
+### END /etc/grub.d/30_os-prober ###
+
+### BEGIN /etc/grub.d/30_uefi-firmware ###
+### END /etc/grub.d/30_uefi-firmware ###
+
+### BEGIN /etc/grub.d/40_custom ###
+# This file provides an easy way to add custom menu entries. Simply type the
+# menu entries you want to add after this comment. Be careful not to change
+# the 'exec tail' line above.
+### END /etc/grub.d/40_custom ###
+
+### BEGIN /etc/grub.d/41_custom ###
+if [ -f ${config_directory}/custom.cfg ]; then
+ source ${config_directory}/custom.cfg
+elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
+ source $prefix/custom.cfg;
+fi
+### END /etc/grub.d/41_custom ###
diff --git a/test/parser/test-grub2-ubuntu-13_04-x86.c b/test/parser/test-grub2-ubuntu-13_04-x86.c
new file mode 100644
index 0000000..cc4d283
--- /dev/null
+++ b/test/parser/test-grub2-ubuntu-13_04-x86.c
@@ -0,0 +1,74 @@
+
+#include "parser-test.h"
+
+void run_test(struct parser_test *test)
+{
+ struct discover_boot_option *opt;
+ struct discover_context *ctx;
+ struct discover_device *dev;
+
+ test_read_conf_file(test, "grub2-ubuntu-13_04-x86.conf");
+ test_run_parser(test, "grub2");
+
+ ctx = test->ctx;
+
+ check_boot_option_count(ctx, 5);
+
+ opt = get_boot_option(ctx, 0);
+ check_unresolved_resource(opt->boot_image);
+ check_unresolved_resource(opt->initrd);
+ check_name(opt, "Kubuntu GNU/Linux");
+ check_args(opt, "root=UUID=29beca39-9181-4780-bbb2-ab5d4be59aaf ro quiet splash $vt_handoff");
+
+ opt = get_boot_option(ctx, 1);
+ check_unresolved_resource(opt->boot_image);
+ check_unresolved_resource(opt->initrd);
+ check_name(opt, "Kubuntu GNU/Linux, with Linux 3.8.0-19-generic");
+ check_args(opt, "root=UUID=29beca39-9181-4780-bbb2-ab5d4be59aaf ro quiet splash $vt_handoff");
+
+ opt = get_boot_option(ctx, 2);
+ check_name(opt, "Kubuntu GNU/Linux, with Linux 3.8.0-19-generic (recovery mode)");
+ check_args(opt, "root=UUID=29beca39-9181-4780-bbb2-ab5d4be59aaf ro recovery nomodeset");
+
+ opt = get_boot_option(ctx, 3);
+ check_unresolved_resource(opt->boot_image);
+ check_name(opt, "Memory test (memtest86+)");
+ check_args(opt, "");
+
+ opt = get_boot_option(ctx, 4);
+ check_unresolved_resource(opt->boot_image);
+ check_name(opt, "Memory test (memtest86+, serial console 115200)");
+ check_args(opt, "console=ttyS0,115200n8");
+
+ /* hotplug a device with a maching UUID, and check that our
+ * resources become resolved */
+ dev = test_create_device(ctx, "external");
+ dev->uuid = "29beca39-9181-4780-bbb2-ab5d4be59aaf";
+ test_hotplug_device(test, dev);
+
+ opt = get_boot_option(ctx, 0);
+ check_resolved_local_resource(opt->boot_image, dev,
+ "/boot/vmlinuz-3.8.0-19-generic");
+ check_resolved_local_resource(opt->initrd, dev,
+ "/boot/initrd.img-3.8.0-19-generic");
+
+ opt = get_boot_option(ctx, 1);
+ check_resolved_local_resource(opt->boot_image, dev,
+ "/boot/vmlinuz-3.8.0-19-generic");
+ check_resolved_local_resource(opt->initrd, dev,
+ "/boot/initrd.img-3.8.0-19-generic");
+
+ opt = get_boot_option(ctx, 2);
+ check_resolved_local_resource(opt->boot_image, dev,
+ "/boot/vmlinuz-3.8.0-19-generic");
+ check_resolved_local_resource(opt->initrd, dev,
+ "/boot/initrd.img-3.8.0-19-generic");
+
+ opt = get_boot_option(ctx, 3);
+ check_resolved_local_resource(opt->boot_image, dev,
+ "/boot/memtest86+.bin");
+
+ opt = get_boot_option(ctx, 4);
+ check_resolved_local_resource(opt->boot_image, dev,
+ "/boot/memtest86+.bin");
+}
OpenPOWER on IntegriCloud