From 18f944e3c3b1b9c2fa0206282714e744157d00e0 Mon Sep 17 00:00:00 2001 From: grok Date: Sat, 26 Sep 2026 16:59:10 +0700 Subject: [PATCH] =?UTF-8?q?test(accept):=20=D0=BE=D0=B4=D0=BD=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=BE=D0=B2=D0=B0=D1=8F=20=D0=91=D0=94=20*=5Frehom?= =?UTF-8?q?e=5Ftest=20=D0=B4=D0=BB=D1=8F=20rehome-tenant.test.ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Почему: tests/integration/rehome-tenant.test.ts (codex/fix-tenant-rehome) выполняется только при DATABASE_REHOME_TEST_URL на пустую БД с именем *_rehome_test под суперпользователем и DATABASE_REHOME_TEST_CONFIRM (docs/TENANT-REHOME.md); без них файл пропускается целиком и приёмка ничего не проверяет. В admin-режиме accept-branch создаёт пустую krona_acc_rehome_test только для файлов, которые читают DATABASE_REHOME_TEST_URL. Проверено: accept-branch --skip-check --skip-e2e codex/fix-tenant-rehome → rehome-tenant.test.ts | OK | 1 passed (1) | 1 passed (1). --- scripts/test/accept-branch.mjs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/test/accept-branch.mjs b/scripts/test/accept-branch.mjs index 5a22339..d7c1f78 100644 --- a/scripts/test/accept-branch.mjs +++ b/scripts/test/accept-branch.mjs @@ -23,6 +23,8 @@ // Интеграционная БД в этом режиме заведомо изолирована, поэтому для тестов с «предохранителем» // (codex/fix-live-database: DATABASE_TEST_ISOLATED, DATABASE_TEST_GUARD_TOKEN, таблица // krona_staff_test_guard, имя БД krona_staff_audit_*) он выставляется со случайным маркером. +// Для tests/integration/rehome-tenant.test.ts (codex/fix-tenant-rehome) — отдельная пустая БД +// krona_acc_rehome_test под суперпользователем и DATABASE_REHOME_TEST_CONFIRM (docs/TENANT-REHOME.md). // Файл, где все тесты пропущены, — отдельный вердикт SKIP (ничего не проверил). // Если заданы E2E_MIGRATOR_URL и E2E_APP_URL — роли не создаются и пароли не меняются, // все прогоны идут последовательно в БД из этих URL со сбросом через откат всех миграций. @@ -318,6 +320,19 @@ async function createGuard(db) { return marker; } +/** + * Отдельная пустая одноразовая БД для tests/integration/rehome-tenant.test.ts (codex/fix-tenant-rehome, + * docs/TENANT-REHOME.md): имя на `_rehome_test`, суперпользователь, явное подтверждение. + */ +async function rehomeTestDatabase() { + const name = 'krona_acc_rehome_test'; + const db = await freshDatabase(name); + return { + DATABASE_REHOME_TEST_URL: db.admin, + DATABASE_REHOME_TEST_CONFIRM: 'I_ACKNOWLEDGE_DISPOSABLE_PG17_DATABASE', + }; +} + async function stepIntegration(target, wt) { const dir = path.join(wt.dir, 'tests/integration'); const files = existsSync(dir) @@ -332,6 +347,12 @@ async function stepIntegration(target, wt) { const db = await freshDatabase('krona_staff_audit_acc_it'); const m = await migrate(wt, db, path.join(logDir, `${slug}-migrate.txt`)); const guard = m.code === 0 && dbMode === 'admin' ? await createGuard(db) : null; + const rehomeEnv = + m.code === 0 && + dbMode === 'admin' && + readFileSync(path.join(dir, file), 'utf8').includes('DATABASE_REHOME_TEST_URL') + ? await rehomeTestDatabase() + : {}; if (m.code !== 0) { results.push({ file, @@ -352,6 +373,7 @@ async function stepIntegration(target, wt) { DATABASE_TEST_MIGRATION_URL: db.migrator, DATABASE_MIGRATION_URL: db.migrator, ...(guard ? { DATABASE_TEST_ISOLATED: 'true', DATABASE_TEST_GUARD_TOKEN: guard } : {}), + ...rehomeEnv, }), logFile: path.join(logDir, `${slug}.txt`), },