openhands
8218039c64
Gitea Actions Runner Test / test-job (push) Successful in 1s
CI / check (push) Successful in 31s
CI / tests-unit (push) Successful in 1m57s
CI / tests-integration (push) Successful in 2m1s
CI / tests-ui (push) Successful in 2m51s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 1m42s
test(live): stop the live suites inheriting the production database
...
Seven suites read .env with a bare `process.env[key] = value`, which
overwrites whatever the shell already set. That made the DATABASE_URL from
the production .env authoritative, so a single environment variable was
enough to aim them at the live hotel database:
RUN_CATALOG_AUDIT_LIVE=1 pnpm vitest run src/lib/services/catalog-audit-repair-live.test.ts
Three of those suites then repair the catalog in place: catalog-audit-repair-live
and catalog-repair-direct-live rewrite catalog_items and delete duplicate
classnames, and clone-bulk-import-live bulk-imports every cloneable item. None
of that is undoable, and nothing in their output said the target was
production rather than a sandbox.
Added src/test/live-env.ts with one shared loader, and pointed all seven suites
at it:
- Values already in the real environment win, so an explicit DATABASE_URL on
the command line is always respected.
- DATABASE_URL defaults to the sandbox on port 3307 rather than inheriting the
production one from .env.
- Anything that is not loopback is treated as production and redirected.
- Reaching production requires ALLOW_PRODUCTION_LIVE_DB=1 and logs a warning
saying the suite repairs the catalog.
Tests in src/test/live-env.test.ts run the loader against a temporary .env so
the real project file is never read, and cover the redirect, the shell
override, non-loopback detection, the opt-in and quote stripping. A second
block asserts each of the seven suites no longer contains an inline
`process.env[...] =` assignment. Verified four of them fail against the old
loader.
This does not enable the suites; they stay gated behind their RUN_* flags.
It only removes the possibility of them silently hitting production.
Unit suite: 3330 passed, 12 skipped. Typecheck and lint clean.
2026-10-03 19:03:28 +02:00
..
2026-09-17 21:02:57 +02:00
2026-09-25 18:26:45 +02:00
2026-07-13 21:57:41 +02:00
2026-09-13 19:24:43 +02:00
2026-09-30 15:15:34 +02:00
2026-09-13 19:24:43 +02:00
2026-10-03 19:03:28 +02:00
2026-08-25 22:26:05 +02:00
2026-09-11 00:36:55 +02:00
2026-09-13 19:24:43 +02:00
2026-09-21 18:37:39 +02:00
2026-07-26 20:28:11 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-08-02 11:46:43 +02:00
2026-07-26 20:28:11 +02:00
2026-08-30 21:31:34 +02:00
2026-09-21 18:37:39 +02:00
2026-09-05 20:08:19 +02:00
2026-09-21 18:37:39 +02:00
2026-09-20 12:29:01 +02:00
2026-09-21 18:37:39 +02:00
2026-09-06 17:25:04 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-09 21:14:10 +02:00
2026-09-21 18:37:39 +02:00
2026-09-06 17:17:30 +02:00
2026-09-22 22:22:51 +02:00
2026-10-02 17:16:03 +02:00
2026-09-21 18:37:39 +02:00
2026-09-13 19:24:43 +02:00
2026-09-25 19:47:10 +02:00
2026-09-25 19:47:10 +02:00
2026-09-25 18:42:23 +02:00
2026-09-30 15:15:34 +02:00
2026-09-21 18:37:39 +02:00
2026-09-09 19:36:15 +02:00
2026-09-09 19:36:15 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 00:36:55 +02:00
2026-09-21 18:37:39 +02:00
2026-09-13 18:33:45 +02:00
2026-07-18 20:31:18 +02:00
2026-09-17 15:26:25 +02:00
2026-09-21 18:37:39 +02:00
2026-08-01 15:07:54 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-05 19:53:09 +02:00
2026-09-25 18:26:45 +02:00
2026-09-25 18:26:45 +02:00
2026-09-25 18:26:45 +02:00
2026-10-02 17:16:03 +02:00
2026-10-02 17:16:03 +02:00
2026-10-02 17:16:03 +02:00
2026-09-25 18:26:45 +02:00
2026-09-25 18:26:45 +02:00
2026-09-21 18:37:39 +02:00
2026-08-02 14:22:05 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 23:28:22 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-10-03 18:30:00 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-22 22:22:51 +02:00
2026-09-22 22:22:51 +02:00
2026-09-22 22:22:51 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-08-29 20:54:06 +02:00
2026-09-22 23:31:41 +02:00
2026-09-28 21:55:18 +02:00
2026-09-22 22:22:51 +02:00
2026-09-22 22:22:51 +02:00
2026-09-06 17:55:11 +02:00
2026-09-21 18:37:39 +02:00
2026-09-06 17:55:11 +02:00
2026-09-21 18:37:39 +02:00
2026-09-13 19:24:43 +02:00
2026-09-21 18:37:39 +02:00
2026-07-31 14:11:03 +02:00
2026-09-17 21:02:57 +02:00
2026-09-22 23:27:15 +02:00
2026-10-02 17:16:03 +02:00
2026-09-22 21:57:09 +02:00
2026-09-22 21:57:09 +02:00
2026-09-12 17:28:01 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-10-02 21:59:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-28 21:55:18 +02:00
2026-09-28 21:55:18 +02:00
2026-09-21 18:37:39 +02:00
2026-09-09 21:57:56 +02:00
2026-09-21 18:37:39 +02:00
2026-09-13 20:25:03 +02:00
2026-09-21 18:37:39 +02:00
2026-09-09 19:36:15 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 08:58:10 +02:00
2026-09-21 18:37:39 +02:00
2026-09-05 23:27:02 +02:00
2026-09-21 18:37:39 +02:00
2026-09-20 12:58:55 +02:00
2026-09-21 18:37:39 +02:00
2026-08-02 14:22:05 +02:00
2026-08-27 16:42:12 +02:00
2026-09-25 18:26:45 +02:00
2026-09-25 18:26:45 +02:00
2026-09-21 18:37:39 +02:00
2026-09-25 18:55:33 +02:00
2026-09-25 18:55:33 +02:00
2026-09-24 23:34:54 +02:00
2026-09-14 17:35:36 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 00:34:49 +02:00
2026-09-05 20:58:42 +02:00
2026-08-25 22:19:59 +02:00
2026-07-28 18:49:25 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-18 12:57:52 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 10:49:08 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 10:49:08 +02:00
2026-09-20 12:29:01 +02:00
2026-09-17 21:02:57 +02:00
2026-09-24 23:22:28 +02:00
2026-09-24 23:22:28 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 10:49:08 +02:00
2026-09-11 00:39:53 +02:00
2026-09-21 18:37:39 +02:00
2026-09-11 00:36:55 +02:00
2026-09-21 18:37:39 +02:00
2026-09-13 19:24:43 +02:00
2026-09-25 18:26:45 +02:00
2026-08-12 14:34:29 +02:00
2026-09-05 19:53:09 +02:00
2026-09-21 18:37:39 +02:00
2026-09-07 22:37:53 +02:00
2026-09-25 18:26:45 +02:00
2026-09-21 18:37:39 +02:00
2026-07-26 20:28:11 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-09-04 13:04:08 +02:00
2026-09-21 18:37:39 +02:00
2026-09-05 19:53:09 +02:00
2026-09-12 17:28:01 +02:00
2026-08-31 18:11:54 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00
2026-09-18 12:44:39 +02:00
2026-08-31 17:44:29 +02:00
2026-09-21 18:37:39 +02:00
2026-08-08 21:46:40 +02:00
2026-07-16 15:53:53 +02:00
2026-09-16 19:45:57 +02:00
2026-09-21 18:37:39 +02:00
2026-09-16 19:45:57 +02:00
2026-08-31 17:15:42 +02:00
2026-07-26 20:28:11 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:11:15 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-07-13 21:57:41 +02:00
2026-07-21 21:08:33 +02:00
2026-07-13 21:57:41 +02:00
2026-09-21 18:37:39 +02:00
2026-09-21 18:37:39 +02:00