From 630e5dda25e4c639814faf293897c32c6837261c Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Wed, 3 Jan 2024 16:07:24 -0800 Subject: [PATCH] Clean up shellcheck issues in tests --- test/integration/targets/ansible-doc/runme.sh | 30 +++++++++---------- .../ansible-vault/script/vault-secret.sh | 9 ++---- .../collections_runtime_pythonpath/runme.sh | 15 ++-------- test/integration/targets/config/runme.sh | 5 ++-- 4 files changed, 23 insertions(+), 36 deletions(-) diff --git a/test/integration/targets/ansible-doc/runme.sh b/test/integration/targets/ansible-doc/runme.sh index b525766cfa7..2588f4e0336 100755 --- a/test/integration/targets/ansible-doc/runme.sh +++ b/test/integration/targets/ansible-doc/runme.sh @@ -6,7 +6,7 @@ set -eu verbosity=0 # default to silent output for naked grep; -vvv+ will adjust this -export GREP_OPTS=-q +GREP_OPTS=(-q) # shell tracing output is very large from this script; only enable if >= -vvv was passed while getopts :v opt @@ -18,17 +18,17 @@ done if (( verbosity >= 3 )); then - set -x; - export GREP_OPTS= ; + set -x + GREP_OPTS=() fi echo "running playbook-backed docs tests" ansible-playbook test.yml -i inventory "$@" # test keyword docs -ansible-doc -t keyword -l | grep $GREP_OPTS 'vars_prompt: list of variables to prompt for.' -ansible-doc -t keyword vars_prompt | grep $GREP_OPTS 'description: list of variables to prompt for.' -ansible-doc -t keyword asldkfjaslidfhals 2>&1 | grep $GREP_OPTS 'Skipping Invalid keyword' +ansible-doc -t keyword -l | grep "${GREP_OPTS[@]}" 'vars_prompt: list of variables to prompt for.' +ansible-doc -t keyword vars_prompt | grep "${GREP_OPTS[@]}" 'description: list of variables to prompt for.' +ansible-doc -t keyword asldkfjaslidfhals 2>&1 | grep "${GREP_OPTS[@]}" 'Skipping Invalid keyword' # collections testing ( @@ -55,10 +55,10 @@ expected_out="$(sed '1 s/\(^> TESTNS\.TESTCOL\.YOLO\).*(.*)$/\1/' yolo-text.outp test "$current_out" == "$expected_out" echo "ensure we do work with valid collection name for list" -ansible-doc --list testns.testcol --playbook-dir ./ 2>&1 | grep $GREP_OPTS -v "Invalid collection name" +ansible-doc --list testns.testcol --playbook-dir ./ 2>&1 | grep "${GREP_OPTS[@]}" -v "Invalid collection name" echo "ensure we dont break on invalid collection name for list" -ansible-doc --list testns.testcol.fakemodule --playbook-dir ./ 2>&1 | grep $GREP_OPTS "Invalid collection name" +ansible-doc --list testns.testcol.fakemodule --playbook-dir ./ 2>&1 | grep "${GREP_OPTS[@]}" "Invalid collection name" echo "filter list with more than one collection (1/2)" output=$(ansible-doc --list testns.testcol3 testns.testcol4 --playbook-dir ./ 2>&1 | wc -l) @@ -96,12 +96,12 @@ do list_result=$(ansible-doc -l -t ${ptype} --playbook-dir ./ testns.testcol) metadata_result=$(ansible-doc --metadata-dump --no-fail-on-errors -t ${ptype} --playbook-dir ./ testns.testcol) for name in "${expected_names[@]}"; do - echo "${list_result}" | grep $GREP_OPTS "testns.testcol.${name}" - echo "${metadata_result}" | grep $GREP_OPTS "testns.testcol.${name}" + echo "${list_result}" | grep "${GREP_OPTS[@]}" "testns.testcol.${name}" + echo "${metadata_result}" | grep "${GREP_OPTS[@]}" "testns.testcol.${name}" done # ensure we get error if passing invalid collection, much less any plugins - ansible-doc -l -t ${ptype} bogus.boguscoll 2>&1 | grep $GREP_OPTS "unable to locate collection" + ansible-doc -l -t ${ptype} bogus.boguscoll 2>&1 | grep "${GREP_OPTS[@]}" "unable to locate collection" # TODO: do we want per namespace? # ensure we get 1 plugins when restricting namespace @@ -230,7 +230,7 @@ echo "testing sidecar docs for jinja plugins" [ "$(ansible-doc -t filter --playbook-dir ./ ansible.legacy.donothing| wc -l)" -gt "0" ] echo "testing no docs and no sidecar" -ansible-doc -t filter --playbook-dir ./ nodocs 2>&1| grep $GREP_OPTS -c 'missing documentation' || true +ansible-doc -t filter --playbook-dir ./ nodocs 2>&1| grep "${GREP_OPTS[@]}" -c 'missing documentation' || true echo "testing sidecar docs for module" [ "$(ansible-doc -M ./library test_win_module| wc -l)" -gt "0" ] @@ -249,7 +249,7 @@ echo "testing no duplicates for plugins that only exist in ansible.builtin when [ "$(ansible-doc -l -t filter --playbook-dir ./ |grep -c 'b64encode')" -eq "1" ] echo "testing with playbook dir, legacy should override" -ansible-doc -t filter split --playbook-dir ./ |grep $GREP_OPTS histerical +ansible-doc -t filter split --playbook-dir ./ |grep "${GREP_OPTS[@]}" histerical pyc_src="$(pwd)/filter_plugins/other.py" pyc_1="$(pwd)/filter_plugins/split.pyc" @@ -258,11 +258,11 @@ trap 'rm -rf "$pyc_1" "$pyc_2"' EXIT echo "testing pyc files are not used as adjacent documentation" python -c "import py_compile; py_compile.compile('$pyc_src', cfile='$pyc_1')" -ansible-doc -t filter split --playbook-dir ./ |grep $GREP_OPTS histerical +ansible-doc -t filter split --playbook-dir ./ |grep "${GREP_OPTS[@]}" histerical echo "testing pyc files are not listed as plugins" python -c "import py_compile; py_compile.compile('$pyc_src', cfile='$pyc_2')" test "$(ansible-doc -l -t module --playbook-dir ./ 2>&1 1>/dev/null |grep -c "notaplugin")" == 0 echo "testing without playbook dir, builtin should return" -ansible-doc -t filter split 2>&1 |grep $GREP_OPTS -v histerical +ansible-doc -t filter split 2>&1 |grep "${GREP_OPTS[@]}" -v histerical diff --git a/test/integration/targets/ansible-vault/script/vault-secret.sh b/test/integration/targets/ansible-vault/script/vault-secret.sh index 3aa1c2efc9a..7d299981978 100755 --- a/test/integration/targets/ansible-vault/script/vault-secret.sh +++ b/test/integration/targets/ansible-vault/script/vault-secret.sh @@ -2,17 +2,14 @@ set -eu -# shellcheck disable=SC2086 -basename="$(basename $0)" -# shellcheck disable=SC2046 -# shellcheck disable=SC2086 -dirname="$(basename $(dirname $0))" +basename="$(basename "$0")" +dirname="$(basename "$(dirname "$0")")" basename_prefix="get-password" default_password="foo-bar" case "${basename}" in "${basename_prefix}"-*) - password="${default_password}-${basename#${basename_prefix}-}" + password="${default_password}-${basename#"${basename_prefix}-"}" ;; *) password="${default_password}" diff --git a/test/integration/targets/collections_runtime_pythonpath/runme.sh b/test/integration/targets/collections_runtime_pythonpath/runme.sh index 38c6c64f241..2ec8e7d56c4 100755 --- a/test/integration/targets/collections_runtime_pythonpath/runme.sh +++ b/test/integration/targets/collections_runtime_pythonpath/runme.sh @@ -9,10 +9,7 @@ export PIP_DISABLE_PIP_VERSION_CHECK=1 source virtualenv.sh ->&2 echo \ - === Test that the module \ - gets picked up if discoverable \ - via PYTHONPATH env var === +>&2 echo '=== Test that the module gets picked up if discoverable via PYTHONPATH env var ===' PYTHONPATH="${PWD}/ansible-collection-python-dist-boo:$PYTHONPATH" \ ansible \ -m python.dist.boo \ @@ -21,10 +18,7 @@ ansible \ "$@" | grep -E '"greeting": "Hello, Bob!",' ->&2 echo \ - === Test that the module \ - gets picked up if installed \ - into site-packages === +>&2 echo '=== Test that the module gets picked up if installed into site-packages ===' python -m pip install pep517 ( # Build a binary Python dist (a wheel) using PEP517: cp -r ansible-collection-python-dist-boo "${OUTPUT_DIR}/" @@ -45,10 +39,7 @@ ansible \ "$@" | grep -E '"greeting": "Hello, Frodo!",' ->&2 echo \ - === Test that ansible_collections \ - root takes precedence over \ - PYTHONPATH/site-packages === +>&2 echo '=== Test that ansible_collections root takes precedence over PYTHONPATH/site-packages ===' # This is done by injecting a module with the same FQCN # into another collection root. ANSIBLE_COLLECTIONS_PATH="${PWD}/ansible-collection-python-dist-foo" \ diff --git a/test/integration/targets/config/runme.sh b/test/integration/targets/config/runme.sh index 122e15d76d4..3e67b5e0888 100755 --- a/test/integration/targets/config/runme.sh +++ b/test/integration/targets/config/runme.sh @@ -2,9 +2,8 @@ set -eux -# ignore empty env var and use default -# shellcheck disable=SC1007 -ANSIBLE_TIMEOUT= ansible -m ping testhost -i ../../inventory "$@" +# use default timeout +ANSIBLE_TIMEOUT='' ansible -m ping testhost -i ../../inventory "$@" # env var is wrong type, this should be a fatal error pointing at the setting ANSIBLE_TIMEOUT='lola' ansible -m ping testhost -i ../../inventory "$@" 2>&1|grep 'Invalid type for configuration option setting: DEFAULT_TIMEOUT (from env: ANSIBLE_TIMEOUT)'