2019-03-28 18:41:39 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -eux
|
|
|
|
|
|
|
|
export ANSIBLE_COLLECTIONS_PATHS=$PWD/collection_root_user:$PWD/collection_root_sys
|
|
|
|
export ANSIBLE_GATHERING=explicit
|
|
|
|
export ANSIBLE_GATHER_SUBSET=minimal
|
2019-04-11 07:59:53 +02:00
|
|
|
export ANSIBLE_HOST_PATTERN_MISMATCH=error
|
|
|
|
|
2019-08-29 01:31:40 +02:00
|
|
|
|
|
|
|
# FUTURE: just use INVENTORY_PATH as-is once ansible-test sets the right dir
|
2019-04-11 07:59:53 +02:00
|
|
|
ipath=../../$(basename "${INVENTORY_PATH}")
|
|
|
|
export INVENTORY_PATH="$ipath"
|
2019-03-28 18:41:39 +01:00
|
|
|
|
|
|
|
# test callback
|
|
|
|
ANSIBLE_CALLBACK_WHITELIST=testns.testcoll.usercallback ansible localhost -m ping | grep "usercallback says ok"
|
|
|
|
|
2019-05-03 03:15:58 +02:00
|
|
|
# test documentation
|
|
|
|
ansible-doc testns.testcoll.testmodule -vvv | grep -- "- normal_doc_frag"
|
|
|
|
|
2019-10-10 21:42:03 +02:00
|
|
|
# test adhoc default collection resolution (use unqualified collection module with playbook dir under its collection)
|
|
|
|
echo "testing adhoc default collection support with explicit playbook dir"
|
|
|
|
ANSIBLE_PLAYBOOK_DIR=./collection_root_user/ansible_collections/testns/testcoll ansible localhost -m testmodule
|
|
|
|
|
2019-08-21 11:45:04 +02:00
|
|
|
echo "testing bad doc_fragments (expected ERROR message follows)"
|
|
|
|
# test documentation failure
|
|
|
|
ansible-doc testns.testcoll.testmodule_bad_docfrags -vvv 2>&1 | grep -- "unknown doc_fragment"
|
|
|
|
|
2019-04-11 07:59:53 +02:00
|
|
|
# we need multiple plays, and conditional import_playbook is noisy and causes problems, so choose here which one to use...
|
|
|
|
if [[ ${INVENTORY_PATH} == *.winrm ]]; then
|
|
|
|
export TEST_PLAYBOOK=windows.yml
|
|
|
|
else
|
|
|
|
export TEST_PLAYBOOK=posix.yml
|
2019-08-29 01:31:40 +02:00
|
|
|
|
|
|
|
echo "testing default collection support"
|
|
|
|
ansible-playbook -i "${INVENTORY_PATH}" collection_root_user/ansible_collections/testns/testcoll/playbooks/default_collection_playbook.yml
|
2019-04-11 07:59:53 +02:00
|
|
|
fi
|
|
|
|
|
2020-03-25 16:57:53 +01:00
|
|
|
# run test playbooks
|
2019-08-28 01:02:27 +02:00
|
|
|
ansible-playbook -i "${INVENTORY_PATH}" -i ./a.statichost.yml -v "${TEST_PLAYBOOK}" "$@"
|
2019-05-22 17:06:54 +02:00
|
|
|
|
2020-03-25 16:57:53 +01:00
|
|
|
if [[ ${INVENTORY_PATH} != *.winrm ]]; then
|
|
|
|
ansible-playbook -i "${INVENTORY_PATH}" -i ./a.statichost.yml -v invocation_tests.yml "$@"
|
|
|
|
fi
|
|
|
|
|
2019-05-22 17:06:54 +02:00
|
|
|
# test adjacent with --playbook-dir
|
|
|
|
export ANSIBLE_COLLECTIONS_PATHS=''
|
|
|
|
ANSIBLE_INVENTORY_ANY_UNPARSED_IS_FAILED=1 ansible-inventory -i a.statichost.yml --list --export --playbook-dir=. -v "$@"
|
2019-11-04 17:41:14 +01:00
|
|
|
|
2020-03-26 17:05:46 +01:00
|
|
|
# use an inventory source with caching enabled
|
|
|
|
ansible-playbook -i a.statichost.yml -i ./cache.statichost.yml -v check_populated_inventory.yml
|
|
|
|
|
|
|
|
# Check that the inventory source with caching enabled was stored
|
|
|
|
if [[ "$(find ./inventory_cache -type f ! -path "./inventory_cache/.keep" | wc -l)" -ne "1" ]]; then
|
|
|
|
echo "Failed to find the expected single cache"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
CACHEFILE="$(find ./inventory_cache -type f ! -path './inventory_cache/.keep')"
|
|
|
|
|
|
|
|
# Check the cache for the expected hosts
|
|
|
|
|
|
|
|
if [[ "$(grep -wc "cache_host_a" "$CACHEFILE")" -ne "1" ]]; then
|
|
|
|
echo "Failed to cache host as expected"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ "$(grep -wc "dynamic_host_a" "$CACHEFILE")" -ne "0" ]]; then
|
|
|
|
echo "Cached an incorrect source"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2019-11-04 17:41:14 +01:00
|
|
|
./vars_plugin_tests.sh
|