From a8ce23526164b6e97798880c18f5634687f71e88 Mon Sep 17 00:00:00 2001
From: Rafael Guterres Jeffman <rjeffman@redhat.com>
Date: Sun, 27 Oct 2024 20:23:50 -0300
Subject: [PATCH] utils/set_test_modules: Allow to ignore Git differences

To force setting the IPA_ENABLE_* variables to run all tests, source the
script using '-I' or set the environment variable SKIP_GIT_TESTS to
'True'.

This will allow the correct selection of Azure pipelines tests to be
based on a single environment variable, what will reduce the number of
test running templates to a singe file.
---
 utils/set_test_modules | 51 ++++++++++++++++++++++++++++--------------
 1 file changed, 34 insertions(+), 17 deletions(-)

diff --git a/utils/set_test_modules b/utils/set_test_modules
index daa47dc..f9f1d91 100644
--- a/utils/set_test_modules
+++ b/utils/set_test_modules
@@ -1,8 +1,7 @@
 #!/bin/bash -eu
 # This file shoud be source'd (. set_test_modules) rather than executed.
-
 #
-# Set "BASE_BRANCH" to a different branch to compare. 
+# Set SKIP_GIT_TEST="True" or use -a to prevent git modification comparison.
 #
 
 RED="\033[31;1m"
@@ -18,27 +17,45 @@ TOPDIR="$(dirname "${BASH_SOURCE[0]}")/.."
 
 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)
 
-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}
+enabled_modules="None"
+enabled_tests="None"
 
-# Get all modules that should have tests executed
-enabled_modules="$(${python} utils/get_test_modules.py $(cat "${files_list}"))"
-[ -z "${enabled_modules}" ] && enabled_modules="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}"
 
-# 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"
+    # shellcheck disable=SC2046
+    enabled_modules="$(${python} utils/get_test_modules.py $(cat "${files_list}"))"
+    [ -z "${enabled_modules}" ] && enabled_modules="None"
 
-[ -n "${enabled_tests}" ] && IPA_ENABLED_TESTS="${enabled_tests},${IPA_ENABLED_TESTS}"
-[ -n "${enabled_modules}" ] && IPA_ENABLED_MODULES="${enabled_modules},${IPA_ENABLED_MODULES}"
+    # 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"
 
-rm -f "${files_list}"
+    [ -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
-- 
GitLab