Garry Tan
8aeac5325e
test: 10 new cases close coverage gaps (helper defensive paths + migration)
/ship Step 7 coverage audit reported 48% (22/46 branches). Added 10 cases
covering the highest-impact gaps:
Helper (test/gstack-gbrain-source-wireup.test.ts, +3 cases → 19 total):
- --uninstall when gbrain is missing: best-effort exit 0, worktree still cleaned
- --no-pull skips HEAD advance on existing worktree (was untested)
- Stray non-git directory at worktree path is cleaned up + worktree created
Migration (test/gstack-upgrade-migration-v1_15_1_0.test.ts, NEW, 7 cases):
- HOME unset → defensive exit 0
- gbrain_sync_mode=off → exit 0 silently
- gbrain_sync_mode unset → exit 0 silently
- no ~/.gstack/.git → exit 0 silently
- helper missing on PATH → warning + exit 0
- happy path → invokes helper without --strict
- helper exits non-zero → migration prints retry hint, still exits 0 (non-blocking)
Also syncs package.json version from 1.15.0.0 → 1.15.1.0 to match VERSION
file (DRIFT_STALE_PKG repair from /ship Step 12 idempotency check; was a
manual-edit-bypass artifact from the merge step).
Coverage estimate: 48% → ~75%. Mainline + migration script + key defensive
paths all exercised. 26 tests total covering the new code surface.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:32:58 -07:00
..
2026-04-26 13:55:13 -07:00
2026-04-26 13:55:13 -07:00
2026-04-24 00:04:53 -07:00
2026-03-18 23:57:59 -05:00
2026-04-19 17:50:31 +08:00
2026-04-19 17:50:31 +08:00
2026-04-19 17:50:31 +08:00
2026-04-26 13:55:13 -07:00
2026-04-08 22:21:28 -10:00
2026-04-23 07:25:20 -07:00
2026-03-23 23:05:22 -07:00
2026-04-18 12:30:54 +08:00
2026-04-19 08:38:19 +08:00
2026-03-30 22:07:50 -06:00
2026-04-26 13:55:13 -07:00
2026-04-18 15:05:42 +08:00
2026-04-24 01:38:21 -07:00
2026-04-24 01:38:21 -07:00
2026-04-24 01:38:21 -07:00
2026-04-24 01:38:21 -07:00
2026-04-16 10:41:38 -07:00
2026-04-26 13:55:13 -07:00
2026-04-05 02:02:06 -07:00
2026-04-24 07:51:46 -07:00
2026-04-18 15:05:42 +08:00
2026-04-26 14:32:58 -07:00
2026-04-23 23:03:27 -07:00
2026-04-18 15:05:42 +08:00
2026-04-18 15:05:42 +08:00
2026-04-26 14:32:58 -07:00
2026-04-26 13:55:13 -07:00
2026-03-18 23:57:59 -05:00
2026-04-17 00:45:13 -07:00
2026-04-18 15:05:42 +08:00
2026-04-06 00:47:04 -07:00
2026-03-29 17:02:01 -06:00
2026-04-19 08:38:19 +08:00
2026-04-25 11:52:48 -07:00
2026-04-17 00:45:13 -07:00
2026-04-18 15:05:42 +08:00
2026-04-23 18:25:34 -07:00
2026-04-18 15:05:42 +08:00
2026-04-16 15:39:44 -07:00
2026-04-23 18:25:34 -07:00
2026-03-26 23:21:27 -06:00
2026-04-24 01:38:21 -07:00
2026-04-18 12:30:54 +08:00
2026-04-18 23:58:59 +08:00
2026-04-26 13:55:13 -07:00
2026-04-19 08:38:19 +08:00
2026-04-26 13:55:13 -07:00
2026-04-26 13:55:13 -07:00
2026-04-19 08:38:19 +08:00
2026-04-19 17:50:31 +08:00
2026-04-24 01:38:21 -07:00
2026-04-23 17:54:54 -07:00
2026-04-19 08:38:19 +08:00
2026-03-23 06:57:22 -07:00
2026-03-26 11:08:31 -07:00
2026-03-23 10:17:33 -07:00
2026-03-31 23:08:22 -06:00
2026-04-19 05:44:39 +08:00
2026-04-22 01:06:22 -07:00
2026-04-23 18:42:58 -07:00
2026-04-26 13:55:13 -07:00
2026-04-26 13:55:13 -07:00
2026-04-26 13:55:13 -07:00
2026-04-26 13:55:13 -07:00
2026-04-26 13:55:13 -07:00
2026-04-26 13:55:13 -07:00
2026-04-23 18:25:34 -07:00
2026-04-26 13:55:13 -07:00
2026-04-23 18:25:34 -07:00
2026-04-18 15:05:42 +08:00
2026-04-19 05:44:39 +08:00
2026-03-23 10:17:33 -07:00
2026-03-23 10:17:33 -07:00
2026-03-30 22:07:50 -06:00
2026-04-16 10:41:38 -07:00
2026-04-19 08:38:19 +08:00
2026-04-26 13:55:13 -07:00
2026-04-04 15:32:20 -07:00
2026-04-07 00:23:36 -07:00
2026-03-31 23:08:22 -06:00
2026-03-26 17:31:53 -06:00
2026-03-13 21:08:12 -07:00
2026-04-16 10:41:38 -07:00
2026-04-26 13:55:13 -07:00
2026-04-19 17:50:31 +08:00
2026-04-22 01:06:22 -07:00
2026-03-29 21:43:36 -06:00
2026-04-01 00:50:42 -06:00
2026-04-26 13:55:13 -07:00
2026-03-27 00:44:37 -06:00
2026-04-18 15:05:42 +08:00
2026-04-18 15:05:42 +08:00
2026-04-06 14:41:06 -07:00
2026-04-26 13:55:13 -07:00