summaryrefslogtreecommitdiffstats
path: root/test/TEST-98-GETARG
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/TEST-98-GETARG/Makefile1
-rwxr-xr-xtest/TEST-98-GETARG/test.sh159
2 files changed, 160 insertions, 0 deletions
diff --git a/test/TEST-98-GETARG/Makefile b/test/TEST-98-GETARG/Makefile
new file mode 100644
index 0000000..2dcab81
--- /dev/null
+++ b/test/TEST-98-GETARG/Makefile
@@ -0,0 +1 @@
+-include ../Makefile.testdir
diff --git a/test/TEST-98-GETARG/test.sh b/test/TEST-98-GETARG/test.sh
new file mode 100755
index 0000000..8f628a2
--- /dev/null
+++ b/test/TEST-98-GETARG/test.sh
@@ -0,0 +1,159 @@
+#!/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() {
+ if ! [[ -x "$PKGLIBDIR/dracut-util" ]]; then
+ echo "Test needs dracut-util... Skipping"
+ return 1
+ fi
+}
+
+test_setup() {
+ ln -sfnr "$PKGLIBDIR"/dracut-util "$TESTDIR"/dracut-getarg
+ ln -sfnr "$PKGLIBDIR"/dracut-util "$TESTDIR"/dracut-getargs
+ ln -sfnr "$PKGLIBDIR"/modules.d/99base/dracut-lib.sh "$TESTDIR"/dracut-lib.sh
+ ln -sfnr "$PKGLIBDIR"/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