fix(rc5): harden frontend runtime and diagnostics
This commit is contained in:
@@ -1345,14 +1345,20 @@ $piped_matcher"
|
||||
|| fail "acceptance: прогон тестов оркестратора не фиксируется результатом"
|
||||
grep -q 'ADMIN_TESTS_PASSED' tools/build/lib/package.sh \
|
||||
|| fail "acceptance: прогон тестов админки не фиксируется результатом"
|
||||
grep -q 'FRONTEND_CONTRACT_TESTS_PASSED' tools/build/lib/package.sh \
|
||||
|| fail "acceptance: ранние контракты панели не фиксируются результатом"
|
||||
grep -q 'FRONTEND_RUNTIME_TESTS_PASSED' tools/build/lib/package.sh \
|
||||
|| fail "acceptance: runtime-компиляция локализации не фиксируется результатом"
|
||||
grep -q 'FRONTEND_TESTS_PASSED' tools/build/lib/package.sh \
|
||||
|| fail "acceptance: прогон контрактных тестов панели не фиксируется результатом"
|
||||
|| fail "acceptance: общий результат тестов панели не фиксируется"
|
||||
"$BUN_BIN" -e '
|
||||
const source = require("node:fs").readFileSync("tools/build/lib/package.sh", "utf8");
|
||||
for (const [fn, flag] of [
|
||||
["run_orchestrator_tests()", "ORCHESTRATOR_TESTS_PASSED=\"true\""],
|
||||
["run_admin_tests()", "ADMIN_TESTS_PASSED=\"true\""],
|
||||
["run_frontend_tests()", "FRONTEND_TESTS_PASSED=\"true\""]
|
||||
["run_frontend_tests()", "FRONTEND_CONTRACT_TESTS_PASSED=\"true\""],
|
||||
["bundle_ui()", "FRONTEND_RUNTIME_TESTS_PASSED=\"true\""],
|
||||
["bundle_ui()", "FRONTEND_TESTS_PASSED=\"true\""]
|
||||
]) {
|
||||
const start = source.indexOf(fn);
|
||||
if (start < 0) throw new Error("не найдена функция " + fn);
|
||||
@@ -1366,6 +1372,19 @@ $piped_matcher"
|
||||
if (set < 0) throw new Error(fn + ": результат прогона не фиксируется");
|
||||
if (set < run) throw new Error(fn + ": результат объявляется раньше, чем получен");
|
||||
}
|
||||
|
||||
const bundleStart = source.indexOf("bundle_ui()");
|
||||
const bundleRest = source.slice(bundleStart);
|
||||
const bundleEnd = bundleRest.search(/\n\}[\r\n]/);
|
||||
const bundle = bundleEnd < 0 ? bundleRest : bundleRest.slice(0, bundleEnd);
|
||||
const install = bundle.indexOf("install --frozen-lockfile");
|
||||
const runtime = bundle.indexOf("test test/i18n-runtime.test.ts");
|
||||
const typecheck = bundle.indexOf("run typecheck");
|
||||
const build = bundle.indexOf("run build:prod");
|
||||
if (install < 0 || runtime < 0) throw new Error("runtime i18n gate не найден в bundle_ui");
|
||||
if (!(install < runtime && runtime < typecheck && typecheck < build)) {
|
||||
throw new Error("порядок frontend gate обязан быть install -> i18n runtime -> typecheck -> build");
|
||||
}
|
||||
' || fail "acceptance: утверждение о пройденных тестах обязано следовать за прогоном"
|
||||
|
||||
# Детектор гонок — часть прогона админки, а не пожелание.
|
||||
|
||||
Reference in New Issue
Block a user