Squashed 'vendor/git.knownelement.com/ExternalVendorCode/mo/' content from commit 7e86c1a
git-subtree-dir: vendor/git.knownelement.com/ExternalVendorCode/mo git-subtree-split: 7e86c1a5f525f352983077d743c2ce2f5d75f4fa
This commit is contained in:
42
tests/function-args-read
Executable file
42
tests/function-args-read
Executable file
@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
cd "${0%/*}" || exit 1
|
||||
. ../run-tests
|
||||
|
||||
testArgs() {
|
||||
local args
|
||||
# shellcheck disable=SC2031
|
||||
args=$(declare -p MO_FUNCTION_ARGS)
|
||||
|
||||
# The output from declare -p could look like these
|
||||
# declare -a MO_FUNCTION_ARGS=([0]="one")
|
||||
# declare -ax MO_FUNCTION_ARGS='([0]="one")'
|
||||
# Trim leading declare statement and variable name
|
||||
args="${args#*=}"
|
||||
|
||||
# If there are any quotes, remove them. The function arguments will always
|
||||
# be an array.
|
||||
if [[ "${args:0:1}" == "'" ]]; then
|
||||
args=${args#\'}
|
||||
args=${args%\'}
|
||||
fi
|
||||
|
||||
echo -n "$args"
|
||||
}
|
||||
template() {
|
||||
cat <<EOF
|
||||
No args: {{testArgs}} - done
|
||||
One arg: {{testArgs 'one'}} - done
|
||||
Multiple arguments: {{testArgs 'aa' 'bb' 'cc' 'x' "" '!' '{[_.|' }} - done
|
||||
Evil: {{testArgs bla; cat /etc/issue}} - done
|
||||
EOF
|
||||
}
|
||||
expected() {
|
||||
cat <<EOF
|
||||
No args: () - done
|
||||
One arg: ([0]="one") - done
|
||||
Multiple arguments: ([0]="aa" [1]="bb" [2]="cc" [3]="x" [4]="" [5]="!" [6]="{[_.|") - done
|
||||
Evil: ([0]="" [1]="" [2]="") - done
|
||||
EOF
|
||||
}
|
||||
|
||||
runTest
|
Reference in New Issue
Block a user