| name | fix-linter-test |
| description | Debug and fix a failing MegaLinter linter test. Use when a linter test fails in CI or locally. |
| allowed-tools | Read Grep Glob Bash Edit |
| argument-hint | ["linter-name-or-test-output"] |
| model | sonnet |
Debug the failing test for $ARGUMENTS.
Steps:
- Find the test file in
megalinter/tests/test_megalinter/linters/
- Check if it's auto-generated (has
@generated by .automation/build.py header) — if so, fix the descriptor YAML or fixtures, NOT the test file itself
- Read the descriptor YAML in
megalinter/descriptors/ to understand expected behavior (cli_lint_mode, config_file_name, cli_lint_errors_regex, file_extensions)
- Check test fixtures in
.automation/test/<test_folder>/:
- Good files must pass the linter cleanly
- Bad files must trigger errors matching
cli_lint_errors_regex
- File extensions must match
file_extensions or file_names_regex in the descriptor
- If a custom linter class exists in
megalinter/linters/, review it for issues
- Common failure causes:
- Fixture file extensions don't match descriptor's
file_extensions
cli_lint_errors_regex doesn't match actual linter output format
- Missing config file referenced in
config_file_name
cli_lint_mode mismatch (file vs list_of_files vs project)
- Version pin broken or tool not installable in Dockerfile
- Linter behavior differs between host OS and Docker container (Linux)
- Reproduce in Docker (required — linters are not installed locally):
LINTER="<descriptor_id_lowercase>_<linter_name>"
docker buildx build --platform linux/amd64 --file linters/$LINTER/Dockerfile --tag $LINTER .
docker run --rm --env TEST_CASE_RUN=true --env OUTPUT_DETAIL=detailed \
--env TEST_KEYWORDS="${LINTER}_test" --env MEGALINTER_VOLUME_ROOT="." \
--volume "$(pwd):/tmp/lint" $LINTER
To run only a specific test method (e.g., test_failure):
--env TEST_KEYWORDS="${LINTER}_test and test_failure"
- In CI, filter tests via commit message body:
TEST_KEYWORDS=<linter>_test
- Update
CHANGELOG.md only if the fix changes user-visible linter behavior (wrong error count, missed files, broken output). Add one line under Fixes in the beta section:
- Fix <linter-name>: <what was wrong and what users now get>
Do NOT add an entry for test-infrastructure-only fixes (fixture paths, test class regeneration, etc.).