test(credentials-local): seed fixtures atomically to close a boot-read race

The concurrent-migrator test wrote the winner document with a plain
writeFile, whose truncate-then-write window lets the boot's unlocked
initial read observe an empty file and boot an empty store under load.
Seed fixtures through writeFileAtomic instead, matching how the provider
itself persists, so a reader sees either the old or the new complete
document.
This commit is contained in:
_Kerman
2026-08-25 14:13:06 +08:00
parent e5a41d164b
commit ee2ee398ce
@@ -4,16 +4,16 @@
// keeps the loud rejection local.spec exercises.
import { afterEach, describe, expect, it } from 'vitest'
import { Context } from '@deepseek-ai/cordis'
import { mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises'
import { mkdtemp, readFile, rm, stat } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { credentialRef } from '@deepseek-ai/dsh-credentials'
import { withFileLock } from '@deepseek-ai/dsh-atomic-write'
import { withFileLock, writeFileAtomic } from '@deepseek-ai/dsh-atomic-write'
import { LocalCredentialProvider, renderFlatLayoutMigration } from '../src/index.ts'
/** Credential documents are seeded owner-only, exactly as the provider creates them. */
function writeCredentials(file: string, text: string): Promise<void> {
return writeFile(file, text, { mode: 0o600 })
return writeFileAtomic(file, text, { mode: 0o600, dirMode: 0o700 })
}
const cleanups: Array<() => Promise<void>> = []