You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.8 KiB
157 lines
4.8 KiB
#!/bin/bash |
|
|
|
# This file is part of dracut. |
|
# SPDX-License-Identifier: GPL-2.0-or-later |
|
|
|
# shellcheck disable=SC2034 |
|
TEST_DESCRIPTION="dracut getarg command" |
|
|
|
test_check() { |
|
return 0 |
|
} |
|
|
|
test_setup() { |
|
make -C "$basedir" dracut-util |
|
ln -sfnr "$basedir"/dracut-util "$TESTDIR"/dracut-getarg |
|
ln -sfnr "$basedir"/dracut-util "$TESTDIR"/dracut-getargs |
|
ln -sfnr "$basedir"/modules.d/99base/dracut-lib.sh "$TESTDIR"/dracut-lib.sh |
|
ln -sfnr "$basedir"/modules.d/99base/dracut-dev-lib.sh "$TESTDIR"/dracut-dev-lib.sh |
|
return 0 |
|
} |
|
|
|
test_run() { |
|
set -x |
|
( |
|
cd "$TESTDIR" || exit 1 |
|
export CMDLINE='key1=0 key2=val key2=val2 key3=" val 3 " " key 4 ="val4 "key 5=val 5" "key 6=""val 6" key7="foo"bar" baz="end " key8 = val 8 " |
|
"key 9"="val 9"' |
|
|
|
ret=0 |
|
|
|
unset TEST |
|
declare -A TEST |
|
TEST=( |
|
["key1"]="0" |
|
["key2"]="val2" |
|
["key3"]=" val 3 " |
|
[" key 4 "]="val4" |
|
["key 5"]="val 5" |
|
["key 6"]='"val 6' |
|
["key7"]='foo"bar" baz="end' |
|
[" key8 "]=" val 8 " |
|
['key 9"']="val 9" |
|
) |
|
for key in "${!TEST[@]}"; do |
|
if ! val=$(./dracut-getarg "${key}="); then |
|
echo "'$key' == '${TEST[$key]}', but not found" >&2 |
|
ret=$((ret + 1)) |
|
else |
|
if [[ $val != "${TEST[$key]}" ]]; then |
|
echo "'$key' != '${TEST[$key]}' but '$val'" >&2 |
|
ret=$((ret + 1)) |
|
fi |
|
fi |
|
done |
|
|
|
declare -a INVALIDKEYS |
|
|
|
INVALIDKEYS=("key" "4" "5" "6" "key8" "9" '"' "baz") |
|
for key in "${INVALIDKEYS[@]}"; do |
|
val=$(./dracut-getarg "$key") |
|
# shellcheck disable=SC2181 |
|
if (($? == 0)); then |
|
echo "key '$key' should not be found" |
|
ret=$((ret + 1)) |
|
fi |
|
# must have no output |
|
[[ $val ]] && ret=$((ret + 1)) |
|
done |
|
|
|
RESULT=("val" "val2") |
|
readarray -t args < <(./dracut-getargs "key2=") |
|
((${#RESULT[@]} == ${#args[@]})) || ret=$((ret + 1)) |
|
for ((i = 0; i < ${#RESULT[@]}; i++)); do |
|
[[ ${args[$i]} == "${RESULT[$i]}" ]] || ret=$((ret + 1)) |
|
done |
|
|
|
val=$(./dracut-getarg "key1") || ret=$((ret + 1)) |
|
[[ $val == "0" ]] || ret=$((ret + 1)) |
|
|
|
val=$(./dracut-getarg "key2=val") && ret=$((ret + 1)) |
|
# must have no output |
|
[[ $val ]] && ret=$((ret + 1)) |
|
val=$(./dracut-getarg "key2=val2") || ret=$((ret + 1)) |
|
# must have no output |
|
[[ $val ]] && ret=$((ret + 1)) |
|
|
|
export PATH=".:$PATH" |
|
|
|
. dracut-dev-lib.sh |
|
. dracut-lib.sh |
|
|
|
debug_off() { |
|
: |
|
} |
|
|
|
debug_on() { |
|
: |
|
} |
|
|
|
getcmdline() { |
|
echo "rdbreak=cmdline rd.lvm rd.auto=0 rd.auto rd.retry=10" |
|
} |
|
RDRETRY=$(getarg rd.retry -d 'rd_retry=') |
|
[[ $RDRETRY == "10" ]] || ret=$((ret + 1)) |
|
getarg rd.break=cmdline -d rdbreak=cmdline || ret=$((ret + 1)) |
|
getargbool 1 rd.lvm -d -n rd_NO_LVM || ret=$((ret + 1)) |
|
getargbool 0 rd.auto || ret=$((ret + 1)) |
|
|
|
getcmdline() { |
|
echo "rd.break=cmdlined rd.lvm=0 rd.auto rd.auto=1 rd.auto=0" |
|
} |
|
getarg rd.break=cmdline -d rdbreak=cmdline && ret=$((ret + 1)) |
|
getargbool 1 rd.lvm -d -n rd_NO_LVM && ret=$((ret + 1)) |
|
getargbool 0 rd.auto && ret=$((ret + 1)) |
|
|
|
getcmdline() { |
|
echo "ip=a ip=b ip=dhcp6" |
|
} |
|
getargs "ip=dhcp6" &> /dev/null || ret=$((ret + 1)) |
|
readarray -t args < <(getargs "ip=") |
|
RESULT=("a" "b" "dhcp6") |
|
((${#RESULT[@]} || ${#args[@]})) || ret=$((ret + 1)) |
|
for ((i = 0; i < ${#RESULT[@]}; i++)); do |
|
[[ ${args[$i]} == "${RESULT[$i]}" ]] || ret=$((ret + 1)) |
|
done |
|
|
|
getcmdline() { |
|
echo "bridge bridge=val" |
|
} |
|
readarray -t args < <(getargs bridge=) |
|
RESULT=("bridge" "val") |
|
((${#RESULT[@]} == ${#args[@]})) || ret=$((ret + 1)) |
|
for ((i = 0; i < ${#RESULT[@]}; i++)); do |
|
[[ ${args[$i]} == "${RESULT[$i]}" ]] || ret=$((ret + 1)) |
|
done |
|
|
|
getcmdline() { |
|
echo "rd.break rd.md.uuid=bf96e457:230c9ad4:1f3e59d6:745cf942 rd.md.uuid=bf96e457:230c9ad4:1f3e59d6:745cf943 rd.shell" |
|
} |
|
readarray -t args < <(getargs rd.md.uuid -d rd_MD_UUID=) |
|
RESULT=("bf96e457:230c9ad4:1f3e59d6:745cf942" "bf96e457:230c9ad4:1f3e59d6:745cf943") |
|
((${#RESULT[@]} == ${#args[@]})) || ret=$((ret + 1)) |
|
for ((i = 0; i < ${#RESULT[@]}; i++)); do |
|
[[ ${args[$i]} == "${RESULT[$i]}" ]] || ret=$((ret + 1)) |
|
done |
|
|
|
return $ret |
|
) |
|
} |
|
|
|
test_cleanup() { |
|
rm -fr -- "$TESTDIR"/*.rpm |
|
return 0 |
|
} |
|
|
|
# shellcheck disable=SC1090 |
|
. "$testdir"/test-functions
|
|
|