fix: make SQLite migrations and e2e reproducible
This commit is contained in:
@@ -12,6 +12,7 @@ NestJS API WealthLedger. Backend владеет auth, SQLite-данными и s
|
||||
cp .env.example .env
|
||||
nvm use --silent
|
||||
npm ci
|
||||
npx prisma migrate deploy
|
||||
npm run start:dev
|
||||
```
|
||||
|
||||
@@ -31,9 +32,10 @@ npm run verify
|
||||
Он запускает zero-warning lint,
|
||||
application/test typechecks, Jest и build. `npm run lint:fix` — отдельная
|
||||
записывающая команда, `npm run test:cov` — диагностика без общего числового
|
||||
threshold. `npm run test:e2e` пока не является passing gate: Prisma schema
|
||||
engine останавливает migration до запуска Jest. Точный статус и trigger
|
||||
пересмотра находятся в [remediation registry](../docs/development/audit-remediation.md).
|
||||
threshold. `npm run test:e2e` отдельно проверяет все HTTP suites на новых базах
|
||||
и runtime OpenAPI с соседним frontend checkout. Для полной backend-проверки
|
||||
выполните обе команды. Результаты — в
|
||||
[remediation registry](../docs/development/audit-remediation.md).
|
||||
|
||||
Общий `tsconfig.json` включает `strict: true` и `noFallthroughCasesInSwitch`
|
||||
для приложения, тестов и сборок. ESLint запрещает non-null assertions
|
||||
@@ -72,12 +74,26 @@ npm run test:openapi-contract
|
||||
## Реальная SQLite и сохранность данных
|
||||
|
||||
После `nvm use --silent` запускайте `npm run test:sqlite` при изменении auth,
|
||||
карточных операций или DB boundary. Runner запускает существующие HTTP suites
|
||||
последовательно, каждую на новой `/tmp/bank-cards-*/test.db`, применяет migrations
|
||||
с `RUST_LOG=info` и удаляет только созданную им директорию. Внешний `DATABASE_URL`
|
||||
заменяется временным; `.env` и пользовательские данные не изменяются. Ошибка
|
||||
migration или Jest возвращает ненулевой exit code. Нужен доступ к loopback-порту.
|
||||
Это отдельный scope, а не подтверждение всего `test:e2e` (задача 03).
|
||||
карточных операций или DB boundary, `npm run test:e2e` — для всех HTTP suites.
|
||||
Обе команды используют один runner: отдельный каталог `wealthledger-e2e-*`
|
||||
в системном temp на каждую suite, один `DATABASE_URL` для migrations и Jest.
|
||||
Внешний `DATABASE_URL` заменяется временным; `.env` и пользовательские данные
|
||||
не изменяются. Прямой Jest без runner отклоняется до обращения к базе.
|
||||
При ошибке migration/Jest или SIGINT/SIGTERM runner останавливает дочерние
|
||||
процессы, удаляет свой каталог и возвращает ненулевой exit code.
|
||||
Нужен доступ к локальным HTTP-портам; sandbox может его запрещать.
|
||||
|
||||
`prisma.config.ts` удаляет унаследованный `RUST_LOG` только в процессе Prisma CLI:
|
||||
на Prisma 7.9.1 уровни `warn`/`error` вызывают пустой `Schema engine error`
|
||||
при fresh migration, без переменной миграция проходит. Постоянный
|
||||
`RUST_LOG=info` и обновление зависимостей не нужны. Logging приложения
|
||||
настраивается отдельно. История migrations применяется штатным `migrate deploy`.
|
||||
|
||||
Регрессия самого запуска: `node test/sqlite-regression.cjs`. Она выполняет
|
||||
три последовательных и два параллельных полных e2e, проверяет уникальность DB,
|
||||
сохранность вымышленного внешнего файла, отказ migration и SIGINT/SIGTERM cleanup.
|
||||
Логи остаются в каталоге из вывода. Для одной suite:
|
||||
`node test/sqlite.cjs app.e2e-spec.ts`.
|
||||
|
||||
| Риск | Проверка реальной DB |
|
||||
| --- | --- |
|
||||
|
||||
Reference in New Issue
Block a user