Revive collection unit tests

Seemingly, ansible-test unit tests were not run in CI for a while and
are broken in multiple places.

This patch aims to re-incarnate unit testing of modules
and execute them as part of the sanity tests.
We use sanity right now, as they perform testing against different
ansible versions and unit tests take multiple seconds to complete.
So spawning a separate nodes would be an overkill.

Unit tests have also detected a regression in server module, as existing
nets generation can create a generator, where `isinstance(net, dict)`
will return negative result, as it is gonna
be a generator, not a dict.
So this part has been refactored to avoid poitential regressions.

Change-Id: Ibefc087239b5c8d5e843c977c2c5a2250ae0bfbd
Signed-off-by: Dmitriy Rabotyagov <dmitriy.rabotyagov@cleura.com>
This commit is contained in:
Dmitriy Rabotyagov
2026-06-10 13:39:29 +02:00
parent 0ada05ec10
commit dc2bb8232e
4 changed files with 152 additions and 25 deletions

View File

@@ -53,16 +53,59 @@ hostvars = {
}
try:
from ansible._internal._templating._engine import TrustedAsTemplate
has_trusted = True
except ImportError:
has_trusted = False
def tag_trusted(val):
if not has_trusted:
return val
if isinstance(val, dict):
return {k: tag_trusted(v) for k, v in val.items()}
elif isinstance(val, list):
return [tag_trusted(v) for v in val]
elif isinstance(val, str):
return TrustedAsTemplate().tag(val)
return val
@pytest.fixture(scope="module")
def inventory():
inventory = InventoryModule()
inventory._config_data = config_data
inventory._config_data = tag_trusted(config_data)
inventory.inventory = InventoryData()
inventory.templar = Templar(loader=None)
for host in hostvars:
inventory.inventory.add_host(host)
def _set_variables(hostvars, groups):
for host in hostvars:
try:
inventory._set_composite_vars(
inventory._config_data.get('compose'), hostvars[host], host, strict=True)
except Exception as e:
print("set_composite_vars error: %s" % e)
raise
for key in hostvars[host]:
inventory.inventory.set_variable(host, key, hostvars[host][key])
try:
inventory._add_host_to_composed_groups(
inventory._config_data.get('groups'), hostvars[host], host, strict=True)
except Exception as e:
print("add_host_to_composed_groups error: %s" % e)
raise
try:
inventory._add_host_to_keyed_groups(
inventory._config_data.get('keyed_groups'), hostvars[host], host, strict=True)
except Exception as e:
print("add_host_to_keyed_groups error: %s" % e)
raise
inventory._set_variables = _set_variables
return inventory