test(hygiene): close every brain the remaining suites create
Some checks are pending
CI / Node 22 (push) Waiting to run
CI / Node 24 (push) Waiting to run
CI / Integration + conformance (Node 22) (push) Waiting to run
CI / Bun (latest) (push) Waiting to run
Some checks are pending
CI / Node 22 (push) Waiting to run
CI / Node 24 (push) Waiting to run
CI / Integration + conformance (Node 22) (push) Waiting to run
CI / Bun (latest) (push) Waiting to run
id-normalization.test.ts's makeBrain() and degraded-reads-surfaced.test.ts's per-test brains had nothing tracking them — both now use a describe-scoped opened[] array drained by afterEach. find-hybrid-filter-before-hydrate.test.ts had two beforeAll-built brains (one per describe block) with no matching afterAll. multi-process-safety.test.ts and plugin-autodetect.test.ts/plugin.test.ts left a brain whose init() was expected to reject (a rejected init() still registers the instance in Brainy's global instance registry — the constructor does that unconditionally — so it still needs close() to deregister, or the process-level shutdown hooks never see the registry go idle for the rest of the run).
This commit is contained in:
parent
be307a1579
commit
656d9f6f92
6 changed files with 50 additions and 5 deletions
|
|
@ -107,7 +107,11 @@ describe('Multi-process safety + read-only mode', () => {
|
|||
|
||||
const blocked = new Brainy({ requireSubtype: false, storage: { type: 'filesystem', path: dir } })
|
||||
await expect(blocked.init()).rejects.toThrow(/another writer holds/i)
|
||||
// Don't track `blocked` for afterEach cleanup since init failed.
|
||||
// A rejected init() still registered `blocked` in Brainy's global
|
||||
// instance registry (the constructor does that unconditionally) — close()
|
||||
// is safe to call even though init() never completed, and is what
|
||||
// deregisters it (and, once idle, the process-level shutdown hooks).
|
||||
await blocked.close().catch(() => {})
|
||||
})
|
||||
|
||||
it('takes over a STALE foreign lock (dead PID + old heartbeat) and claims atomically', async () => {
|
||||
|
|
@ -151,6 +155,7 @@ describe('Multi-process safety + read-only mode', () => {
|
|||
const err: any = await blocked.init().catch((e) => e)
|
||||
expect(err.code).toBe('BRAINY_WRITER_LOCKED')
|
||||
expect(err.lockInfo?.pid).toBe(otherPid)
|
||||
await blocked.close().catch(() => {})
|
||||
})
|
||||
|
||||
it('release drains an in-flight heartbeat — no phantom lock re-created after unlink', async () => {
|
||||
|
|
|
|||
Reference in a new issue