From 5ba7455091ba046c9b89cf550e0ea4fb63e4e227 Mon Sep 17 00:00:00 2001 From: Tianyi Cui <53024+tianyicui@users.noreply.github.com> Date: Sun, 9 Aug 2026 23:25:38 +0800 Subject: [PATCH] test(settings): make invalid watcher edit atomic --- packages/settings/settings-local/tests/local.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/settings/settings-local/tests/local.spec.ts b/packages/settings/settings-local/tests/local.spec.ts index 967091c89b..8e89cd4643 100644 --- a/packages/settings/settings-local/tests/local.spec.ts +++ b/packages/settings/settings-local/tests/local.spec.ts @@ -397,7 +397,9 @@ describe('watch', () => { const ctx = await boot({ path, debounceMs: 10 }) const scope = ctx.settings.register(settingsNamespace('ui-theme'), ThemeSchema) - await writeFile(path, 'ui-theme: [unclosed\n') + // Replace the external edit atomically so this case observes one complete + // invalid document instead of a transient empty file during truncation. + await writeFileAtomic(path, 'ui-theme: [unclosed\n', { mode: 0o600 }) // The bad edit must never take the live tree down or reset the value. await new Promise(resolve => setTimeout(resolve, 300)) expect(scope.get()).toEqual({ theme: 'light', fontSize: 14 })