test(release): suíte verde no macOS sem esconder o CI — skipUnless(flock) + wc portável + guarda [INFRA-68242] #41
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/INFRA-68242-tests-release-macos-v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
O que muda
A suíte
tests/releasedá 35 falhas + 1 erro em 351 testes no macOS e passa inteira no Linux do CI. A causa é ambiente do teste, não código do gate. Este PR faz a suíte ficar verde onde o desenvolvedor roda sem esconder falha no CI. Só testes mudam: nenhum script, workflow ouDockerfile.Causa (verificada): 29 das 36 por
flockausente no macOS (é do util-linux; odeploy-remoto.sh:196sai comflock ausente neste hoste todo teste que roda o script falha cedo); 6 por consequência (o script saindo cedo, com asserções seguintes enganosas); 1 porwcdo BSD, que preenche com espaços (stdin_lido= 0).Correção
@unittest.skipUnless(shutil.which("flock"), ...)nas 6 classes que rodam odeploy-remoto.sh. É a convenção que o repo já usava emTestLockDoHost,TestModoRollback,TestLockComDonoeTestSinal; essas classes só não a seguiam.wcportável no script falso do gate de deploy (tr -d "[:space:]").tests/release/test_ambiente_ci.py(novo): no CI, a falta deflockFALHA em vez de pular. Sem isso o skip viraria um gate cego.Prova (vermelho → verde)
CI=truetmf-ci-python:3.12) comCI=trueA contagem de macOS foi refeita sobre a
mainde 04/10 (7553103) e deu 0 falhas.⚠️ Limites
flock), mas quem desenvolve no Mac não os executa; quem os executa de verdade é o CI Linux, e a guarda garante que o CI não os pule em silêncio.CIouGITHUB_ACTIONS(o Forgejo Actions seta). Se um dia não setar, ela deixa de proteger sem avisar.wcportável usava aspas simples dentro de um literal Python e quebrava o script falso, e opy_compilenão pega isso. Foi corrigido e está coberto pela suíte.README.mddo ci-shared tem o bloco "CI único" duplicado (~402 e ~658).Fluxo
Base
develop. A IA abre e mergeia só com aprovação humana no head. O mergedevelop→main(release) é só do operador, pela UI. Este é o primeiro PR que roda opr-checkscom basedevelop: o tempo do check (~2m30s para a suíte inteira) deve ser coerente com isso.Refs: INFRA-68242, INFRA-68363 (a
develope opr-checkspara ela).🤖 Generated with Claude Code
https://claude.ai/code/session_01UdMSC8CGmShbesE5rfVNfe
tests/release dava 35 falhas + 1 erro em 351 testes no macOS; no Linux do CI a mesma suite dava 351 OK. Causa: ambiente do teste, nao codigo do gate. - 29: flock nao existe no macOS (deploy-remoto.sh:196 sai com 'flock ausente'); - 6: o mesmo script saindo cedo, com asserts seguintes enganosos; - 1: wc do BSD preenche com espacos (stdin_lido= 0). Aplica a convencao que o repo ja usa (skipUnless(shutil.which('flock'))) nas 6 classes que rodam o deploy-remoto.sh (TestDeployRemoto, TestIdempotenciaEDisco, TestGarantias, TestNiceIonice, TestCoalescenciaQA, TestPrune), torna o wc do script falso portavel e acrescenta test_ambiente_ci.py: no CI (CI/GITHUB_ACTIONS) a ausencia de flock FALHA em vez de pular, para o skip nao virar gate cego. Prova: macOS 36 falhas -> 0 (353 testes, 67 skips com motivo); macOS com CI=true a guarda falha (controle); Linux com CI=true 353 OK, 1 skip. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UdMSC8CGmShbesE5rfVNfe