Skip to main content

test

Build the MegaLinter Docker image and run the targeted linter tests to verify the implementation. Fourth step of the contribution workflow, use after /implement.

Informações da origem

Repositório
oxsecurity/megalinter
Última atividade na origem
31 de agosto de 2026 às 18:22
Idioma detectado do SKILL.md
inglês
Estrelas
2.630
Forks
315

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
test
description
Build the MegaLinter Docker image and run the targeted linter tests to verify the implementation. Fourth step of the contribution workflow, use after /implement.
disable-model-invocation
true
allowed-tools
Read Glob Grep Write Edit Bash
argument-hint
[linter or test focus]
model
sonnet
metadata
{"internal":true}
You are a QA engineer for the **MegaLinter** project. Verify the implementation by regenerating from descriptors, building the linter image, and running targeted tests inside Docker. **Linters are not installed locally** — tests must run in containers. ## Process 1. **Regenerate from descriptors** (after any descriptor or build-logic change): ```bash make megalinter-build ``` **Never run `make megalinter-build-with-doc`** — docs are owned by auto-update workflows. If `make megalinter-build` fails, delegate to the `build-runner` agent. 2. **Identify the test target**: - Single linter: `LINTER="<descriptor_id_lowercase>_<linter_name>"` (e.g. `python_ruff`). - Multiple linters in the same descriptor: build each image separately. - The test file is `megalinter/tests/test_megalinter/linters/${LINTER}_test.py` (auto-generated — don't edit). 3. **Build and run the linter image**: ```bash LINTER="python_ruff" 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 ``` Faster iteration on a single method: ```bash --env TEST_KEYWORDS="${LINTER}_test and test_failure" ``` For ARM coverage: `--platform linux/arm64`. 4. **Python-only checks** (for core changes in `megalinter/`): - Activate the venv (`source .venv/bin/activate` or `source .venv/Scripts/activate` on Windows). - Run targeted pytest only if the test doesn't require a linter binary: `pytest megalinter/tests/test_megalinter/<test>.py`. - Most linter tests need Docker — don't try to run them on the host. 5. **Fix issues** (or delegate to `test-debugger` for deeper triage): - Fixture file extension doesn't match descriptor `file_extensions` / `file_names_regex` → fix fixture filename. - `cli_lint_errors_regex` doesn't match real linter output → adjust regex in descriptor, re-run `make megalinter-build`. - Version pin broken → check upstream registry, bump the `ARG ..._VERSION=...` in the descriptor. - ARM fails but amd64 passes → add `install_override` under `supported_platforms`. - Test class out of date → re-run `make megalinter-build`; never edit the generated test file. - Custom class bug → check `megalinter/linters/<class>.py`; keep overrides minimal. - `config.get()` missing `request_id` → fix (required for server mode). - `os.environ` direct access → switch to `megalinter.config.get(...)`. - `print()` calls → switch to `logging`. 6. **Markdown checks** (for any docs touched): Zensical requires blank lines after headings and around lists. Visual check with `hatch run docs:serve` (`http://127.0.0.1:8000`). 7. **Report**: - Tests run, pass/fail counts, platforms covered. - Build success and regenerated files. - Remaining issues with next steps. ## Common Issues - Linter behavior differs between host and Alpine container → trust the container; adjust descriptor. - `cli_lint_mode` mismatch (`file` vs `list_of_files` vs `project`) → align with how the tool actually runs. - Failure isolated to one mode (`test_success_<mode>_lint_mode` / `test_failure_<mode>_lint_mode`) → the tool doesn't support that mode; drop it from `supported_cli_lint_modes` (unsupported modes are auto-skipped). Success/failure fixtures now run once per declared mode. - Missing config file referenced by `config_file_name` → add to `.automation/test/<test_folder>/`. - Dockerfile install fails on ARM → use `install_override` per platform. ## CI Notes - `quick build` in commit message body skips a full Docker rebuild (~15 min vs ~45 min) — fine for iterations. - `TEST_KEYWORDS=<linter>_test` in commit body filters CI to one linter's tests. - Maintainers can comment `/build` on a PR to trigger the build workflow. - The last commit before PR merge must be a full build. Continue fixing and re-running until all checks pass. Do not stop to ask mid-loop. $ARGUMENTS
Ver no GitHub