Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions tools/eval/docs-autoria-check.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,18 @@ if (sujo) {
process.exit(1);
}

// Linha de base: medir mutação sobre árvore já desatualizada dá veredito sem valor.
if (spawnSync('node', [GERADOR, '--check', '--autoria'], { encoding: 'utf8' }).status !== 0) {
/* Linha de base SEM `--autoria`: com ele, qualquer branch de PR que traga autor novo no
histórico reprovava aqui — o contrato do #398 é que autoria só é derivável na main, e a régua
estava cobrando o contrário do que guarda (bateu em #375, #372, #399). */
if (spawnSync('node', [GERADOR, '--check'], { encoding: 'utf8' }).status !== 0) {
console.log(' \x1b[31m✗\x1b[0m DOCSAUT não dá para medir: os blocos gerados já estão desatualizados (rode: npm run docs)');
process.exit(1);
}

/* A DOCSAUT2 pergunta se `--autoria` MORDE a autoria torta. Numa branch onde ela já está torta
por si, a pergunta não tem resposta: pular dizendo isso é honesto, cobrar não. */
const autoriaMedivel = spawnSync('node', [GERADOR, '--check', '--autoria'], { encoding: 'utf8' }).status === 0;

const original = readFileSync(ALVO, 'utf8');
const geradorOriginal = readFileSync(GERADOR, 'utf8');
const rodar = (args) => spawnSync('node', [GERADOR, '--check', ...args], { encoding: 'utf8' }).status === 0;
Expand All @@ -75,7 +81,8 @@ try {
if (comAutoriaTorta === original) throw new Error('não achei a frase de autoria para mutar');
writeFileSync(ALVO, comAutoriaTorta);
if (!rodar([])) falhas.push('DOCSAUT1 autoria torta REPROVOU o PR — cobra de quem não pode consertar (só é derivável após o squash)');
if (rodar(['--autoria'])) falhas.push('DOCSAUT2 autoria torta PASSOU com --autoria — o portão da main está cego para o único lugar onde o número é derivável');
if (!autoriaMedivel) console.log(' \x1b[33m⚠\x1b[0m DOCSAUT2 pulada: a autoria já está torta nesta branch (autor novo no histórico), então a mutação não é medível aqui');
if (autoriaMedivel && rodar(['--autoria'])) falhas.push('DOCSAUT2 autoria torta PASSOU com --autoria — o portão da main está cego para o único lugar onde o número é derivável');
writeFileSync(ALVO, original);

// ---- mutação de OUTRO bloco: a tolerância não pode ter vazado para o resto
Expand Down
Loading