computer-playbook/tests/integration/test_roles_naming.py

38 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import unittest
import re
from pathlib import Path
# Regex:
# - one or more lowercase letters, digits or hyphens
# - optionally exactly one '_' followed by one or more lowercase letters, digits or hyphens
ROLE_NAME_PATTERN = re.compile(r'^[a-z0-9-]+(?:_[a-z0-9-]+)?$')
class TestRoleNames(unittest.TestCase):
def test_role_names_follow_naming_convention(self):
# go up from tests/integration/test_roles_naming.py to project root, then into roles/
roles_dir = Path(__file__).resolve().parents[2] / "roles"
self.assertTrue(
roles_dir.is_dir(),
f"'roles/' directory not found at {roles_dir}"
)
invalid_names = []
for role_path in roles_dir.iterdir():
if not role_path.is_dir():
# skip non-directories
continue
name = role_path.name
if not ROLE_NAME_PATTERN.fullmatch(name):
invalid_names.append(name)
self.assertFalse(
invalid_names,
"The following role directory names violate the naming convention "
"(only az, 09, '-', max one '_', and '_' must be followed by at least one character):\n"
+ "\n".join(f"- {n}" for n in invalid_names)
)
if __name__ == "__main__":
unittest.main()