merge with mainline
This commit is contained in:
commit
00a8a3eee3
77 changed files with 5019 additions and 1678 deletions
86
tests/grub_script_break.in
Normal file
86
tests/grub_script_break.in
Normal file
|
@ -0,0 +1,86 @@
|
|||
#! @builddir@/grub-shell-tester
|
||||
#
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
#
|
||||
# GRUB is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GRUB is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# break without any arguments
|
||||
for i in 1 2 3 4 5 6 7 8 9 10
|
||||
do
|
||||
echo $i
|
||||
if test "$i" = 5
|
||||
then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# break with one
|
||||
for i in 1 2 3 4 5 6 7 8 9 10
|
||||
do
|
||||
echo $i
|
||||
if test "$i" = 5
|
||||
then
|
||||
break 1
|
||||
fi
|
||||
done
|
||||
|
||||
# break with loop count
|
||||
for i in 1 2 3 4 5
|
||||
do
|
||||
for j in a b c d e f
|
||||
do
|
||||
echo "$i $j"
|
||||
if test "$i" = 3
|
||||
then
|
||||
if test "$j" = d
|
||||
then
|
||||
break 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
# break into middle loop
|
||||
for i in 1 2 3 4 5
|
||||
do
|
||||
for j in a b c d e f
|
||||
do
|
||||
echo "$i $j"
|
||||
if test "$i" = 3
|
||||
then
|
||||
if test "$j" = d
|
||||
then
|
||||
break 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
# while and until loops
|
||||
a=
|
||||
while test "$a" != "aaaaaaa"
|
||||
do
|
||||
a="a$a"
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
b=
|
||||
until test "$b" = "bbbbb"
|
||||
do
|
||||
b="b$b"
|
||||
echo "$a $i $b"
|
||||
if test "$i" = 3; then echo "break 2"; break 2; fi
|
||||
done
|
||||
done
|
||||
done
|
||||
|
86
tests/grub_script_continue.in
Normal file
86
tests/grub_script_continue.in
Normal file
|
@ -0,0 +1,86 @@
|
|||
#! @builddir@/grub-shell-tester
|
||||
#
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
#
|
||||
# GRUB is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GRUB is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# continue without any arguments
|
||||
for i in 1 2 3 4 5 6 7 8 9 10
|
||||
do
|
||||
if test "$i" = 5
|
||||
then
|
||||
continue
|
||||
fi
|
||||
echo $i
|
||||
done
|
||||
|
||||
# continue with one
|
||||
for i in 1 2 3 4 5 6 7 8 9 10
|
||||
do
|
||||
if test "$i" = 5
|
||||
then
|
||||
continue 1
|
||||
fi
|
||||
echo $i
|
||||
done
|
||||
|
||||
# continue with loop count
|
||||
for i in 1 2 3 4 5
|
||||
do
|
||||
for j in a b c d e f
|
||||
do
|
||||
if test "$i" = 3
|
||||
then
|
||||
if test "$j" = d
|
||||
then
|
||||
continue 2
|
||||
fi
|
||||
echo "$i $j"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
# continue into middle loop
|
||||
for i in 1 2 3 4 5
|
||||
do
|
||||
for j in a b c d e f
|
||||
do
|
||||
if test "$i" = 3
|
||||
then
|
||||
if test "$j" = d
|
||||
then
|
||||
continue 1
|
||||
fi
|
||||
echo "$i $j"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
# while and until loops
|
||||
a=
|
||||
while test "$a" != "aaaaaaa"
|
||||
do
|
||||
a="a$a"
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
b=
|
||||
until test "$b" = "bbbbb"
|
||||
do
|
||||
b="b$b"
|
||||
if test "$i" = 3; then echo "continue 2"; continue 2; fi
|
||||
echo "$a $i $b"
|
||||
done
|
||||
done
|
||||
done
|
||||
|
|
@ -16,6 +16,33 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# simple arguments
|
||||
echo one two three
|
||||
echo "one two three"
|
||||
echo 'one two three'
|
||||
|
||||
# empty arguments
|
||||
echo a "" b
|
||||
echo a '' b
|
||||
|
||||
echo a $foo b
|
||||
echo a ${foo} b
|
||||
|
||||
echo a "$foo" b
|
||||
echo a "${foo}" b
|
||||
|
||||
# multi-part arguments
|
||||
echo one"two"three
|
||||
echo one${two}three
|
||||
echo one"two"$three
|
||||
|
||||
echo one'two'three
|
||||
echo one${two}three
|
||||
echo one'two'$three
|
||||
|
||||
echo one'two'three"four"five${six}seven$eight
|
||||
|
||||
|
||||
foo=bar
|
||||
echo $foo ${foo}
|
||||
echo "$foo" "${foo}"
|
||||
|
|
147
tests/grub_script_functions.in
Normal file
147
tests/grub_script_functions.in
Normal file
|
@ -0,0 +1,147 @@
|
|||
#! @builddir@/grub-shell-tester
|
||||
|
||||
# Run GRUB script in a Qemu instance
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
#
|
||||
# GRUB is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GRUB is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
echo parameter count
|
||||
function fcount {
|
||||
echo fcount "$#"
|
||||
}
|
||||
|
||||
fcount
|
||||
fcount a
|
||||
fcount a b
|
||||
|
||||
echo parameter count, with nesting
|
||||
function ffcount {
|
||||
echo ffcount "$#"
|
||||
fcount
|
||||
fcount a
|
||||
fcount a b
|
||||
}
|
||||
|
||||
ffcount
|
||||
ffcount 1
|
||||
ffcount 1 2
|
||||
|
||||
echo parameters
|
||||
function fparam {
|
||||
echo fparam 1 $1
|
||||
echo fparam 2 $2
|
||||
echo fparam 3 $3
|
||||
}
|
||||
|
||||
fparam
|
||||
fparam a
|
||||
fparam a b
|
||||
|
||||
echo parameters, with nesting
|
||||
function ffparam {
|
||||
echo ffparam 1 $1
|
||||
echo ffparam 2 $2
|
||||
echo ffparam 3 $3
|
||||
fparam
|
||||
fparam a
|
||||
fparam a b
|
||||
}
|
||||
|
||||
ffparam
|
||||
ffparam 1
|
||||
ffparam 1 2
|
||||
|
||||
echo parameter expansion with specials
|
||||
function fstar {
|
||||
for f in $*
|
||||
do
|
||||
echo fstar $f
|
||||
done
|
||||
|
||||
for f in aaa$*bbb
|
||||
do
|
||||
echo fstar $f
|
||||
done
|
||||
}
|
||||
|
||||
fstar
|
||||
fstar a
|
||||
fstar a "1 2"
|
||||
fstar a "1 2" b
|
||||
|
||||
function fdqstar {
|
||||
for f in "$*"
|
||||
do
|
||||
echo fdqstar $f
|
||||
done
|
||||
|
||||
for f in aaa"$*"bbb
|
||||
do
|
||||
echo fdqstar $f
|
||||
done
|
||||
|
||||
for f in "aaa$*bbb"
|
||||
do
|
||||
echo fdqstar $f
|
||||
done
|
||||
}
|
||||
|
||||
fdqstar
|
||||
fdqstar a
|
||||
fdqstar a "1 2"
|
||||
fdqstar a "1 2" b
|
||||
|
||||
function fat {
|
||||
for f in $@
|
||||
do
|
||||
echo fat $f
|
||||
done
|
||||
|
||||
for f in aaa$@bbb
|
||||
do
|
||||
echo fat $f
|
||||
done
|
||||
}
|
||||
|
||||
fat
|
||||
fat a
|
||||
fat a "1 2"
|
||||
fat a "1 2" b
|
||||
fat a "1 2" b "c d"
|
||||
fat a "1 2" b "c d" e
|
||||
|
||||
function fdqat {
|
||||
for f in "$@"
|
||||
do
|
||||
echo fdqat $f
|
||||
done
|
||||
|
||||
for f in aaa"$@"bbb
|
||||
do
|
||||
echo fdqat $f
|
||||
done
|
||||
|
||||
for f in "aaa$@bbb"
|
||||
do
|
||||
echo fdqat $f
|
||||
done
|
||||
}
|
||||
|
||||
# fdqat # this case needs special handling, lets ignore till we really need it.
|
||||
fdqat a
|
||||
fdqat a "1 2"
|
||||
fdqat a "1 2" b
|
||||
fdqat a "1 2" b "c d"
|
||||
fdqat a "1 2" b "c d" e
|
||||
|
85
tests/grub_script_shift.in
Normal file
85
tests/grub_script_shift.in
Normal file
|
@ -0,0 +1,85 @@
|
|||
#! @builddir@/grub-shell-tester
|
||||
|
||||
# Run GRUB script in a Qemu instance
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
#
|
||||
# GRUB is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GRUB is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
function f1 {
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f1 $# $1 $2 $3
|
||||
shift
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f1 $# $1 $2 $3
|
||||
}
|
||||
|
||||
f1
|
||||
f1 a
|
||||
f1 a b
|
||||
f1 a b c
|
||||
f1 a b c d
|
||||
f1 a b c d e
|
||||
|
||||
function f2 {
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f2 $# $1 $2 $3
|
||||
shift 1
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f2 $# $1 $2 $3
|
||||
}
|
||||
|
||||
f2
|
||||
f2 a
|
||||
f2 a b
|
||||
f2 a b c
|
||||
f2 a b c d
|
||||
f2 a b c d e
|
||||
|
||||
function f3 {
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f3 $# $1 $2 $3
|
||||
shift 3
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f3 $# $1 $2 $3
|
||||
}
|
||||
|
||||
f3
|
||||
f3 a
|
||||
f3 a b
|
||||
f3 a b c
|
||||
f3 a b c d
|
||||
f3 a b c d e
|
||||
|
||||
function f4 {
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f4 $# $1 $2 $3
|
||||
shift 100
|
||||
echo f1 '$@' $@
|
||||
echo f1 '$*' $*
|
||||
echo f4 $# $1 $2 $3
|
||||
}
|
||||
|
||||
f4
|
||||
f4 a
|
||||
f4 a b
|
||||
f4 a b c
|
||||
f4 a b c d
|
||||
f4 a b c d e
|
|
@ -28,7 +28,7 @@ foo=foo
|
|||
echo "" $foo
|
||||
|
||||
echo $bar $foo
|
||||
|
||||
|
||||
bar=""
|
||||
echo $bar $foo
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#! /bin/bash -e
|
||||
#! /bin/sh -e
|
||||
|
||||
# Compares GRUB script output with BASH output.
|
||||
# Copyright (C) 2009,2010 Free Software Foundation, Inc.
|
||||
|
@ -84,7 +84,7 @@ done
|
|||
|
||||
if [ "x${source}" = x ] ; then
|
||||
tmpfile=`mktemp`
|
||||
while read; do
|
||||
while read REPLY; do
|
||||
echo $REPLY >> ${tmpfile}
|
||||
done
|
||||
source=${tmpfile}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue