tests/util/grub-shell: Set exit status to QEMU exit status
This allows us to test if unexpected output in test scripts is because of a bug in GRUB, because there was an error in QEMU, or QEMU was killed due to a timeout. Signed-off-by: Glenn Washburn <development@efficientek.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
c630e62d1e
commit
d247823ecb
@ -499,6 +499,12 @@ copy_extra_files() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setup_qemu_logger() {
|
||||||
|
cat < "$work_directory/qemu-pipe" | tr -d "\r" | tee "${goutfile}" | do_trim &
|
||||||
|
}
|
||||||
|
|
||||||
|
ret=0
|
||||||
|
mkfifo "$work_directory/qemu-pipe"
|
||||||
if [ x$boot = xnet ]; then
|
if [ x$boot = xnet ]; then
|
||||||
netdir="$work_directory/netdir"
|
netdir="$work_directory/netdir"
|
||||||
mkdir -p "$netdir"
|
mkdir -p "$netdir"
|
||||||
@ -506,7 +512,8 @@ if [ x$boot = xnet ]; then
|
|||||||
cp "${cfgfile}" "$netdir/boot/grub/grub.cfg"
|
cp "${cfgfile}" "$netdir/boot/grub/grub.cfg"
|
||||||
cp "${source}" "$netdir/boot/grub/testcase.cfg"
|
cp "${source}" "$netdir/boot/grub/testcase.cfg"
|
||||||
[ -z "$files" ] || copy_extra_files "$netdir" $files
|
[ -z "$files" ] || copy_extra_files "$netdir" $files
|
||||||
timeout -s KILL $timeout "${qemu}" ${qemuopts} ${serial_null} -serial file:/dev/stdout -boot n -net "user,tftp=$netdir,bootfile=/boot/grub/${grub_modinfo_target_cpu}-${grub_modinfo_platform}/core.$netbootext" -net nic | cat | tr -d "\r" | tee "${goutfile}" | do_trim
|
setup_qemu_logger
|
||||||
|
timeout -s KILL $timeout "${qemu}" ${qemuopts} ${serial_null} -serial file:/dev/stdout -boot n -net "user,tftp=$netdir,bootfile=/boot/grub/${grub_modinfo_target_cpu}-${grub_modinfo_platform}/core.$netbootext" -net nic > "$work_directory/qemu-pipe" || ret=$?
|
||||||
elif [ x$boot = xemu ]; then
|
elif [ x$boot = xemu ]; then
|
||||||
rootdir="$work_directory/rootdir"
|
rootdir="$work_directory/rootdir"
|
||||||
grubdir="$rootdir/boot/grub"
|
grubdir="$rootdir/boot/grub"
|
||||||
@ -525,12 +532,18 @@ elif [ x$boot = xemu ]; then
|
|||||||
[ -z "$files" ] || copy_extra_files "$rootdir" $files
|
[ -z "$files" ] || copy_extra_files "$rootdir" $files
|
||||||
roottar="$work_directory/root.tar"
|
roottar="$work_directory/root.tar"
|
||||||
(cd "$rootdir"; tar cf "$roottar" .)
|
(cd "$rootdir"; tar cf "$roottar" .)
|
||||||
"${builddir}/grub-core/grub-emu" -m "$device_map" --memdisk "$roottar" -r memdisk -d "/boot/grub" | tr -d "\r" | tee "${goutfile}" | do_trim
|
setup_qemu_logger
|
||||||
|
"${builddir}/grub-core/grub-emu" -m "$device_map" --memdisk "$roottar" -r memdisk -d "/boot/grub" > "$work_directory/qemu-pipe" || ret=$?
|
||||||
test -n "$debug" || rm -rf "$rootdir"
|
test -n "$debug" || rm -rf "$rootdir"
|
||||||
test -n "$debug" || rm -f "$roottar"
|
test -n "$debug" || rm -f "$roottar"
|
||||||
else
|
else
|
||||||
timeout -s KILL $timeout "${qemu}" ${qemuopts} ${serial_null} -serial file:/dev/stdout -${device}"${isofile}" ${bootdev} | cat | tr -d "\r" | tee "${goutfile}" | do_trim
|
setup_qemu_logger
|
||||||
|
timeout -s KILL $timeout "${qemu}" ${qemuopts} ${serial_null} -serial file:/dev/stdout -${device}"${isofile}" ${bootdev} > "$work_directory/qemu-pipe" || ret=$?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
wait
|
||||||
|
rm -f "$work_directory/qemu-pipe"
|
||||||
|
|
||||||
if [ x$boot = xcoreboot ]; then
|
if [ x$boot = xcoreboot ]; then
|
||||||
test -n "$debug" || rm -f "${imgfile}"
|
test -n "$debug" || rm -f "${imgfile}"
|
||||||
fi
|
fi
|
||||||
@ -538,6 +551,6 @@ test -n "$debug" || rm -f "${isofile}"
|
|||||||
test -n "$debug" || rm -rf "${rom_directory}"
|
test -n "$debug" || rm -rf "${rom_directory}"
|
||||||
test -n "$debug" || rm -f "${tmpfile}" "${cfgfile}" "${goutfile}"
|
test -n "$debug" || rm -f "${tmpfile}" "${cfgfile}" "${goutfile}"
|
||||||
|
|
||||||
exit 0
|
exit $ret
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user