#!/bin/bash -eu # This file shoud be source'd (. set_test_modules) rather than executed. # # Set SKIP_GIT_TEST="True" or use -a to prevent git modification comparison. # RED="\033[31;1m" RST="\033[0m" die() { echo -e "${RED}${*}${RST}" >&2 } TOPDIR="$(dirname "${BASH_SOURCE[0]}")/.." [ -n "$(command -v python3)" ] && python="$(command -v python3)" || python="$(command -v python2)" pushd "${TOPDIR}" >/dev/null 2>&1 || die "Failed to change directory." SKIP_GIT_TEST=${SKIP_GIT_TEST:-"False"} while getopts ":a" opt do case "${opt}" in a) SKIP_GIT_TEST="True" ;; *) ;; # ignore other options esac done files_list=$(mktemp) enabled_modules="None" enabled_tests="None" if [ "${SKIP_GIT_TEST}" != "True" ] then remote="$(basename "$(mktemp -u remote_XXXXXX)")" git remote add "${remote}" https://github.com/freeipa/ansible-freeipa git fetch --prune --no-tags --quiet "${remote}" git diff "${remote}/master" --name-only > "${files_list}" git remote remove "${remote}" # shellcheck disable=SC2046 enabled_modules="$(${python} utils/get_test_modules.py $(cat "${files_list}"))" [ -z "${enabled_modules}" ] && enabled_modules="None" # Get individual tests that should be executed mapfile -t tests < <(sed -n 's#.*/\(test_[^/]*\).yml#\1#p' "${files_list}" | tr -d " ") [ ${#tests[@]} -gt 0 ] && enabled_tests=$(IFS=, ; echo "${tests[*]}") [ -z "${enabled_tests}" ] && enabled_tests="None" [ -n "${enabled_tests}" ] && IPA_ENABLED_TESTS="${enabled_tests},${IPA_ENABLED_TESTS}" [ -n "${enabled_modules}" ] && IPA_ENABLED_MODULES="${enabled_modules},${IPA_ENABLED_MODULES}" rm -f "${files_list}" fi # Get all modules that should have tests executed export IPA_ENABLED_MODULES export IPA_ENABLED_TESTS echo "IPA_ENABLED_MODULES = [${IPA_ENABLED_MODULES}]" echo "IPA_ENABLED_TESTS = [${IPA_ENABLED_TESTS}]" popd >/dev/null 2>&1 || die "Failed to change back to original directory."