The ISO filesystem image iso9660_early_ce.iso exposes the unusual situation that the Rock Ridge name entry of its only file is located after a CE entry which points to the next continuation area. The correct behavior is to read the Rock Ridge name and to only then load the next continuation area. If GRUB performs this correctly, then the name "RockRidgeName:x" will be read and reported by grub-fstest. If GRUB wrongly performs the CE hop immediately when encountering the CE entry, then the dull ISO 9660 name "rockridg" will not be overridden and be put out by grub-fstest. Signed-off-by: Thomas Schmitt <scdbackup@gmx.net> Tested-by: Lidong Chen <lidong.chen@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
54 lines
1.7 KiB
Plaintext
54 lines
1.7 KiB
Plaintext
#!@BUILD_SHEBANG@
|
|
|
|
set -e
|
|
|
|
if ! which xorriso >/dev/null 2>&1; then
|
|
echo "xorriso not installed; cannot test iso9660."
|
|
exit 99
|
|
fi
|
|
|
|
"@builddir@/grub-fs-tester" joliet
|
|
"@builddir@/grub-fs-tester" rockridge
|
|
"@builddir@/grub-fs-tester" rockridge_joliet
|
|
"@builddir@/grub-fs-tester" joliet_1999
|
|
"@builddir@/grub-fs-tester" rockridge_1999
|
|
"@builddir@/grub-fs-tester" rockridge_joliet_1999
|
|
|
|
echo "Testing for proper recognition of CE loops ... "
|
|
for fs in iso9660_ce_loop iso9660_ce_loop2; do
|
|
tempdir=`mktemp -d "${TMPDIR:-/tmp}/${0##*/}.$(date '+%Y%m%d%H%M%S%N').${fs}.XXX"` ||
|
|
{ echo "Failed to make temporary directory"; exit 99; }
|
|
gunzip <"$srcdir"/tests/${fs}.iso.gz >"${tempdir}/${fs}.iso" || exit 99
|
|
output=$(LC_ALL=C timeout -s KILL "60" \
|
|
"@builddir@/grub-fstest" "${tempdir}/${fs}.iso" ls / ) || ret=$?
|
|
rm -rf "$tempdir"
|
|
if [ "${ret:-0}" -ne 0 -o -n "$output" ]; then
|
|
echo "FAIL ($fs)"
|
|
exit 1
|
|
fi
|
|
done
|
|
echo "PASS"
|
|
|
|
echo "Testing for proper handling of early CE ... "
|
|
fs=iso9660_early_ce
|
|
tempdir=`mktemp -d "${TMPDIR:-/tmp}/${0##*/}.$(date '+%Y%m%d%H%M%S%N').${fs}.XXX"` ||
|
|
{ echo "Failed to make temporary directory"; exit 99; }
|
|
gunzip <"$srcdir"/tests/${fs}.iso.gz >"${tempdir}/${fs}.iso" || exit 99
|
|
ret=0
|
|
output=$(LC_ALL=C timeout -s KILL "60" \
|
|
"@builddir@/grub-fstest" "${tempdir}/${fs}.iso" ls / ) || ret=$?
|
|
rm -rf "$tempdir"
|
|
if [ "${ret:-0}" -ne 0 ]; then
|
|
echo "... grub-fstest returns $ret"
|
|
echo "FAIL ($fs)"
|
|
exit 1
|
|
fi
|
|
# Before comparing: remove trailing blank added by grub-fstest
|
|
output=$(echo -n $output)
|
|
if [ x"$output" != x"RockRidgeName:x" ]; then
|
|
echo "... found: '$output' , expected: 'RockRidgeName:x'"
|
|
echo "FAIL ($fs)"
|
|
exit 1
|
|
fi
|
|
echo "PASS"
|