tests: add test command file tests

This requires access to files in both host and grub image, so
implementing as separate test unit instead of script test was
more easy.
This commit is contained in:
Andrei Borzenkov 2015-01-30 21:42:46 +03:00
parent f153fcb5a5
commit 1e047e53ae
2 changed files with 73 additions and 0 deletions

View file

@ -1156,6 +1156,12 @@ script = {
common = tests/file_filter_test.in;
};
script = {
testcase;
name = grub_cmd_test;
common = tests/grub_cmd_test.in;
};
program = {
testcase;
name = example_unit_test;

67
tests/grub_cmd_test.in Normal file
View file

@ -0,0 +1,67 @@
#! /bin/bash
# create a randome file
empty="`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1
non_empty="`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1
cat >$non_empty <<EOF
hello world!
EOF
. "@builddir@/grub-core/modinfo.sh"
if [ x"${grub_modinfo_platform}" = xemu ]; then
grub_empty="(host)$empty"
grub_non_empty="(host)$non_empty"
grub_dir="(host)${TMPDIR:-/tmp}"
else
grub_empty="/boot/empty"
grub_non_empty="/boot/non_empty"
grub_dir="/boot/grub"
fi
outfile="`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 1
@builddir@/grub-shell --files=$grub_empty=$empty --files=$grub_non_empty=$non_empty>$outfile <<EOF
if ! test -f $grub_empty; then
echo FAIL1
fi
if ! test -e $grub_empty; then
echo FAIL2
fi
if test -d $grub_empty; then
echo FAIL3
fi
if ! test -d $grub_dir; then
echo FAIL4
fi
if test -s $grub_empty; then
echo FAIL5
fi
if ! test -s $grub_non_empty; then
echo FAIL6
fi
if test -f $grub_empty -a foo = bar; then
echo FAIL7
fi
if test -e $grub_empty -a foo = bar; then
echo FAIL8
fi
if test -s $grub_non_empty -a foo = bar; then
echo FAIL9
fi
if test -d $grub_dir -a foo = bar; then
echo FAIL10
fi
EOF
rm -f "$empty" "$non_empty"
if grep FAIL "$outfile" > /dev/null 2>&1; then
echo "GRUB test command file tests failed."
cat "$outfile"
exit 1
else
rm -f "${outfile}"
exit 0
fi