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)
1018 B
1018 B
Shell Pipeline Lints 🐚
Lint tests that enforce safe shell-pipeline patterns inside Ansible command: and shell: tasks.
Each test catches a Bash default that hides upstream failures, especially when the failure surfaces only on the second or third command of a pipeline.
Tests in this directory MUST only cover shell-invocation correctness inside Ansible tasks.
test_no_sh_lc_pipefail.pyrequires that everysh -lc '...'invocation containing a|pipeline starts withset -o pipefail, so failures mid-pipeline propagate.test_no_sh_pipefail_in_ansible_tasks.pyrequires that Ansibleshell:tasks stay on Bash and use Bash'sset -o pipefailform, not the POSIX-shworkaround.test_sed_escape.pyrequires that any Jinja-templated replacement passed tosedflows through thesed_escapefilter so substitutions with regex metacharacters land literally.
For framework, directory layout, and make test-lint usage see lint.md.