Finished backup update

This commit is contained in:
2025-07-17 00:34:54 +02:00
parent 807fab42c3
commit 1bdfb71f2f
10 changed files with 56 additions and 13 deletions

View File

@@ -0,0 +1,37 @@
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()