diff --git a/cli/meta/applications/__init__.py b/cli/meta/applications/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cli/meta/applications.py b/cli/meta/applications/all.py similarity index 100% rename from cli/meta/applications.py rename to cli/meta/applications/all.py diff --git a/cli/meta/in_group_deps.py b/cli/meta/applications/in_group_deps.py similarity index 100% rename from cli/meta/in_group_deps.py rename to cli/meta/applications/in_group_deps.py diff --git a/cli/meta/role_folder.py b/cli/meta/applications/role_name.py similarity index 96% rename from cli/meta/role_folder.py rename to cli/meta/applications/role_name.py index 455af6e3..fcdc7e67 100644 --- a/cli/meta/role_folder.py +++ b/cli/meta/applications/role_name.py @@ -6,8 +6,6 @@ This script determines the appropriate Ansible role folder based on the provided by inspecting each role's vars/main.yml within the roles directory. By default, it assumes the roles directory is located at the project root, relative to this script's location. -Example: - ./get_role_folder_cli.py --application-id my-app-id """ import os import sys @@ -55,7 +53,7 @@ def main(): '-r', '--roles-path', default=os.path.join( os.path.dirname(os.path.realpath(__file__)), - os.pardir, os.pardir, + os.pardir, os.pardir, os.pardir, 'roles' ), help='Path to the roles directory (default: roles/ at project root)' diff --git a/cli/meta/invokable_paths.py b/cli/meta/categories/invokable.py similarity index 100% rename from cli/meta/invokable_paths.py rename to cli/meta/categories/invokable.py diff --git a/cli/validate/inventory.py b/cli/validate/inventory.py index e9a68e61..bd67add0 100644 --- a/cli/validate/inventory.py +++ b/cli/validate/inventory.py @@ -10,7 +10,7 @@ script_dir = Path(__file__).resolve().parent repo_root = script_dir.parent.parent sys.path.insert(0, str(repo_root)) -from cli.meta.applications import find_application_ids +from cli.meta.applications.all import find_application_ids def load_yaml_file(path): try: diff --git a/tests/integration/test_group_applications.py b/tests/integration/test_group_applications.py index 6620b72f..3235dbb3 100644 --- a/tests/integration/test_group_applications.py +++ b/tests/integration/test_group_applications.py @@ -2,7 +2,7 @@ import os import sys import re import unittest -from cli.meta.applications import find_application_ids +from cli.meta.applications.all import find_application_ids # ensure project root is on PYTHONPATH so we can import your CLI code ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) diff --git a/tests/integration/test_valid_applications.py b/tests/integration/test_valid_applications.py index f1f9d8c1..4d150f0a 100644 --- a/tests/integration/test_valid_applications.py +++ b/tests/integration/test_valid_applications.py @@ -2,7 +2,7 @@ import os import sys import re import unittest -from cli.meta.applications import find_application_ids +from cli.meta.applications.all import find_application_ids # ensure project root is on PYTHONPATH so we can import the CLI code # project root is two levels up from this file (tests/integration -> project root) @@ -53,6 +53,18 @@ class TestValidApplicationUsage(unittest.TestCase): ): for match in pattern.finditer(content): name = match.group('name') + for match in pattern.finditer(content): + # Determine the full line containing this match + start = match.start() + line_start = content.rfind('\n', 0, start) + 1 + line_end = content.find('\n', start) + line = content[line_start:line_end if line_end != -1 else None] + + # Skip any import or from-import lines + if line.strip().startswith(('import ', 'from ')): + continue + + name = match.group('name') # skip whitelisted methods/exceptions if name in self.WHITELIST: continue