mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
Restructures tests/lint/ansible/ into five concern-keyed subdirectories (jinja/, modules/, services/, shell/, sql/) plus the pre-existing roles/ and variables/. Each new subdir ships its own __init__.py exporting PROJECT_ROOT and a scope-focused README.md following the project's documentation conventions (RFC 2119 keywords, emoji-after-headline, one-sentence-per-line, no historical context). 12 existing tests move into their concern bucket via git mv so history follows the file. Adds tests/lint/ansible/variables/test_dotted_path_keys_exist.py which catches the bug class where a Jinja dotted path's head resolves via group_vars/all/ or the consuming role's own vars/defaults but a deeper segment does not exist as a key in the dict tree (e.g. the previous `LDAP.SERVER.REACH_DOMAIN` typo in web-app-odoo). Touches three external references so cross-links keep resolving: - docs/contributing/actions/testing/suppression.md (run-once, shared) - roles/sys-svc-compose/tasks/utils/network/README.md (network-via-util) - tests/lint/ansible/sql/test_no_inline_multiline_sql.py (self-path exclude)
1.5 KiB
1.5 KiB
Ansible Module Lints 🔧
Lint tests that enforce correct Ansible module usage and task-level invariants. Each test catches a class of silent or confusing failure that the runtime would otherwise tolerate or surface far from its cause.
Tests in this directory MUST only cover Ansible module / task usage rules.
test_network_create_via_util.pyrequires that role tasks creating Docker networks route through the shared utility, never inlinecommunity.docker.docker_networkcalls.test_no_legacy_get_url_module_usage.pyforbids the unqualifiedget_url:module name; tasks MUST useansible.builtin.get_url.test_no_legacy_uri_module_usage.pyforbids the unqualifieduri:module name; tasks MUST useansible.builtin.uri.test_no_literal_no_log.pyforbids literalno_log: true/no_log: false; every gate MUST flow through theMASK_CREDENTIALS_IN_LOGSvariable.test_no_redundant_default_on_module_io.pyforbids| default(...)on a task's ownregister:output or input arguments inside its own conditionals, where the value is provably set.test_run_once_tags.pyrequires that everyset_factmarkedrun_once: truecarries the canonical run-once tags so re-runs and--tagsfilters keep the fact populated.
Shell-pipeline rules and SQL formatting rules live in sibling directories; see ../shell/ and ../sql/.
For framework, directory layout, and make test-lint usage see lint.md.