From c71a2b33dd4f9897046232d876b5929955558f0a Mon Sep 17 00:00:00 2001
From: Rafael Guterres Jeffman <rjeffman@redhat.com>
Date: Fri, 29 Sep 2023 12:51:59 -0300
Subject: [PATCH] upstream CI: Fix test selection for CheckPR pipeline.

Due to an error on processing Ansible key 'import_tasks' the script that
creates a list of modules to test is broken making some modules to be
not tested.

By fixing the handling of 'import_tasks' and module import, the list is
correct again and the list of modules to be tested now include the ones
which depend on the modified module.
---
 utils/get_test_modules.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/utils/get_test_modules.py b/utils/get_test_modules.py
index 2f83176e..3e9306b0 100644
--- a/utils/get_test_modules.py
+++ b/utils/get_test_modules.py
@@ -23,8 +23,6 @@ def get_plugins_from_playbook(playbook):
         for tasks in task_block:
             for task in tasks:
                 original_task = task
-                if "." in task:
-                    task = task.split(".")[-1]
                 if task == "block":
                     _result.update(get_tasks(tasks["block"]))
                 elif task in ["include_tasks", "import_tasks"
@@ -127,8 +125,16 @@ def parse_playbooks(test_module):
                             "builtins.__import__", side_effect=import_mock
                         ):
                             # pylint: disable=no-value-for-parameter
-                            loader = SourceFileLoader(playbook, source)
-                            loader.exec_module(types.ModuleType(loader.name))
+                            try:
+                                loader = SourceFileLoader(playbook, source)
+                                loader.exec_module(
+                                    types.ModuleType(loader.name)
+                                )
+                            except Exception:  # pylint: disable=broad-except
+                                # If import fails, we'll assume there's no
+                                # plugin to be loaded. This is of little risk
+                                # it is rare that a plugin includes another.
+                                pass
                         # pylint: disable=no-member
                         candidates = [
                             f.split(".")[1:]
-- 
GitLab