mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-08-29 04:26:38 +00:00
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:
@@ -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>> = []
|
||||
|
||||
Reference in New Issue
Block a user