mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-07 15:09:30 +00:00
reviews-index: гейт свежести индекса — шаг Validate на push в dev, не юнит-тест (#635 r3, повтор)
Прогон 35870123732 на 49bae62e: тест «индекс свеж» покраснел на материале,
который конвейер сам же ребейзнул на dev (#614) — process.yml исполняется из
main и о `--commit-if-stale` ещё не знает; так красился бы любой раунд, пока
правка не отзеркалена, а на issue-ветках коммиты конвейера индекс ветки знать
не обязан. Свежесть судится там, где её держит конвейер: шаг preflight
`reviews-index --check` только на push в dev, в вердикте предполёта; skipped
не считается отказом. Юнит-тест байтовой свежести снят, вместо него — свидетель
на проводке. PROCESS.md §2.10: правка docs/reviews руками сопровождается
пересборкой в том же коммите. INDEX.md пересобран на текущем дереве.
Issue: #635
User-Visible: no
This commit is contained in:
@@ -91,13 +91,21 @@ test('#635 живой каталог docs/reviews: индекс свеж и по
|
||||
assert.ok(entries.length > 900);
|
||||
const recognised = entries.filter((e) => e.verdict !== '—').length;
|
||||
assert.ok(recognised / entries.length > 0.9, `вердикт распознан у ${recognised} из ${entries.length}`);
|
||||
// r2 #635 H1: закоммиченный INDEX.md обязан совпадать с пересборкой по
|
||||
// текущему каталогу — иначе документы, приехавшие ребейзом, невидимы через
|
||||
// индекс. Свежесть держит конвейер (`--commit-if-stale` после ребейзов);
|
||||
// этот тест — гейт, который ловит расхождение в Validate.
|
||||
const dir = fileURLToPath(new URL('../docs/reviews/', import.meta.url));
|
||||
assert.equal(readFileSync(join(dir, INDEX_FILE), 'utf8'), buildIndex(dir),
|
||||
'docs/reviews/INDEX.md устарел — node scripts/reviews-index.mjs');
|
||||
});
|
||||
|
||||
// r2 #635 H1: закоммиченный INDEX.md обязан совпадать с пересборкой — иначе
|
||||
// документы, приехавшие ребейзом, невидимы через индекс. Гейт — шаг Validate
|
||||
// `reviews-index --check` на push в dev (см. комментарий в validate.yml, почему
|
||||
// не на issue-ветках: их переписывает конвейер из ветки по умолчанию, и его
|
||||
// коммиты индекс ветки знать не обязан). Свежесть держит `--commit-if-stale`
|
||||
// после каждого ребейза конвейера; здесь — свидетель на проводке.
|
||||
test('#635 r3: свежесть индекса судится на dev, конвейер пересобирает индекс после своих ребейзов', () => {
|
||||
const validate = readFileSync(new URL('../.github/workflows/validate.yml', import.meta.url), 'utf8');
|
||||
const step = validate.slice(validate.indexOf('id: reviews_index'), validate.indexOf('id: workflow_sync'));
|
||||
assert.match(step, /if: github\.event_name == 'push' && github\.ref == 'refs\/heads\/dev'/);
|
||||
assert.match(step, /run: node scripts\/reviews-index\.mjs --dir=docs\/reviews --check/);
|
||||
assert.match(validate, /REVIEWS_INDEX: \$\{\{ steps\.reviews_index\.outcome \}\}/);
|
||||
assert.match(validate, /\[ "\$REVIEWS_INDEX" = "skipped" \] \|\| check "индекс ревью совпадает с каталогом" "\$REVIEWS_INDEX"/);
|
||||
});
|
||||
|
||||
test('#635 конвейер пересобирает индекс тем же коммитом, что и документ ревью', () => {
|
||||
|
||||
Reference in New Issue
Block a user