mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-07-18 06:24:25 +02:00
Added warnings concerning application_id
This commit is contained in:
parent
34d5c415bb
commit
6db7144b08
51
tests/integration/test_application_id_matches_role_name.py
Normal file
51
tests/integration/test_application_id_matches_role_name.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
import yaml
|
||||||
|
import glob
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
class TestApplicationIdMatchesRoleName(unittest.TestCase):
|
||||||
|
def test_application_id_matches_role_directory(self):
|
||||||
|
"""
|
||||||
|
Warn if application_id in vars/main.yml does not match
|
||||||
|
the role directory basename, to avoid confusion.
|
||||||
|
If vars/main.yml is missing, do nothing.
|
||||||
|
"""
|
||||||
|
# locate the 'roles' directory (two levels up)
|
||||||
|
base_dir = os.path.dirname(__file__)
|
||||||
|
roles_dir = os.path.abspath(os.path.join(base_dir, '..', '..', 'roles'))
|
||||||
|
|
||||||
|
# iterate over each role folder
|
||||||
|
for role_path in glob.glob(os.path.join(roles_dir, '*')):
|
||||||
|
if not os.path.isdir(role_path):
|
||||||
|
continue
|
||||||
|
|
||||||
|
role_name = os.path.basename(role_path)
|
||||||
|
vars_main = os.path.join(role_path, 'vars', 'main.yml')
|
||||||
|
|
||||||
|
# skip roles without vars/main.yml
|
||||||
|
if not os.path.exists(vars_main):
|
||||||
|
continue
|
||||||
|
|
||||||
|
with open(vars_main, 'r', encoding='utf-8') as f:
|
||||||
|
data = yaml.safe_load(f) or {}
|
||||||
|
|
||||||
|
app_id = data.get('application_id')
|
||||||
|
if app_id is None:
|
||||||
|
warnings.warn(
|
||||||
|
f"{role_name}: 'application_id' is missing in vars/main.yml. "
|
||||||
|
f"Consider setting it to '{role_name}' to avoid confusion."
|
||||||
|
)
|
||||||
|
elif app_id != role_name:
|
||||||
|
warnings.warn(
|
||||||
|
f"{role_name}: 'application_id' is '{app_id}', "
|
||||||
|
f"but the folder name is '{role_name}'. "
|
||||||
|
"This can lead to confusion—using the directory name "
|
||||||
|
"as the application_id is recommended."
|
||||||
|
)
|
||||||
|
|
||||||
|
# always pass
|
||||||
|
self.assertTrue(True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
Loading…
x
Reference in New Issue
Block a user