Skip to content

Teste confere as permissões do docs.yml - #307

Merged
bdcdo merged 2 commits into
mainfrom
test/permissoes-do-docs-yml
Oct 29, 2026
Merged

bdcdo merged 2 commits into
mainfrom
test/permissoes-do-docs-yml

Conversation

@bdcdo

@bdcdo bdcdo commented Oct 29, 2026

Copy link
Copy Markdown
Owner

O docs.yml só roda em push na main, filtrado por paths, e em workflow_dispatch, e nenhum job do tests.yml lia as permissões dele. Um PR que tirasse pages: write ou id-token: write do job deploy passava em todos os checks, inclusive no zizmor, e o deploy só falhava depois do merge.

O que muda: tests/test_permissoes_do_docs_yml.py lê o docs.yml com yaml.safe_load, pelo caminho relativo à raiz do repositório (Path(__file__)), e afirma:

  • o nível do workflow só concede contents: read;
  • o job deploy tem exatamente pages: write e id-token: write;
  • nenhum job além do deploy tem escopo de escrita, contando o atalho write-all; o build entra nessa conferência, e o teste exige que ele exista para não passar vazio.

O teste roda no job unit e nos demais que rodam a suíte. O PyYAML chega ao extra dev pelo pre-commit (6.0.3 no ambiente local, também com --resolution lowest-direct, porque o pre-commit sempre o exige), e o deptry só examina src/, então nenhuma dependência nova foi declarada.

Entrada em Adicionado no CHANGELOG, porque muda o que reprova um PR de quem contribui.

Closes #268

O docs.yml só roda em push na main e em workflow_dispatch, então nenhum
check de PR lia as permissões dele. O teste afirma que o workflow só
concede contents: read, que o job deploy tem exatamente pages: write e
id-token: write, e que nenhum outro job escreve (#268).
@bdcdo

bdcdo commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Bloco de evidência

Caso concreto na base (origin/main, ec332656)

Mutação: tirar o bloco permissions do job deploy do docs.yml (3 linhas). Os checks que existem hoje não a veem:

$ uvx zizmor@1.30.1 --offline .github/workflows
No findings to report. Good job! (15 suppressed)
$ grep -rl docs.yml tests/
(nenhum arquivo)

O mesmo caso no ramo (42cc28ac)

$ uv run --extra dev pytest -q tests/test_permissoes_do_docs_yml.py
E       AssertionError: assert None == {'pages': 'write', 'id-token': 'write'}
FAILED tests/test_permissoes_do_docs_yml.py::test_job_deploy_tem_exatamente_escrita_no_pages_e_token_oidc
1 failed, 2 passed

Sem mutação, no ramo: 3 passed. Cada mutação foi feita no docs.yml da worktree e desfeita com git checkout antes da seguinte.

Casos cobertos (mutações do docs.yml)

Mutação Esperado Obtido
sem o bloco permissions do deploy reprova o teste do deploy reprova
deploy sem id-token: write reprova o teste do deploy reprova
deploy com contents: write a mais reprova o teste do deploy reprova
build com permissions: {contents: write} reprova o teste dos outros jobs ({'build': ['contents']}) reprova
build com permissions: write-all reprova o teste dos outros jobs ({'build': ['write-all']}) reprova
workflow com contents: write reprova o teste do nível do workflow reprova
workflow com pages: write a mais reprova o teste do nível do workflow reprova
docs.yml atual passa 3 passed

Suíte

Comando: uv run --extra dev --extra all --extra search-all --extra polars --extra excel --extra codex pytest -q -p no:cacheprovider --cov=dataframeit --cov-branch --cov-report=term-missing

passados pulados falhas cobertura
base ec332656 2192 0 0 99,96% (codex.py 723-724)
ramo 42cc28ac 2195 0 0 99,96% (codex.py 723-724)

As duas linhas descobertas são o except ImportError do import opcional do openai_codex, que não roda com o extra codex instalado, e aparecem igual na base; o PR não toca src/. ruff format --check, ruff check, ty check, vulture e deptry src saem com 0 no ramo. import yaml sob uv run --extra dev dá PyYAML 6.0.3, que vem pelo pre-commit; o deptry do CI examina só src/ e não acusa o import do teste.

O simplificador de diff passou sobre o ramo antes do commit e não fez corte.

Risco: baixo, só um teste novo e uma linha de CHANGELOG; desfazer com o revert do squash.

SHA revisado: 42cc28a

@bdcdo
bdcdo merged commit ce4c83e into main Oct 29, 2026
13 checks passed
@bdcdo
bdcdo deleted the test/permissoes-do-docs-yml branch October 29, 2026 21:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nenhum check de PR confere as permissões do job que publica a documentação

1 participant