fix: prevent tests from overwriting real settings.json (#49)

Co-authored-by: Letta <noreply@letta.com>
This commit is contained in:
Charles Packer
2025-11-03 19:20:55 -08:00
committed by GitHub
parent 5c3b303eac
commit f8107c84f4
2 changed files with 60 additions and 27 deletions

View File

@@ -11,7 +11,7 @@ let testProjectDir: string;
beforeEach(async () => {
// Reset settings manager FIRST before changing HOME
settingsManager.reset();
await settingsManager.reset();
// Create temporary directories for testing
testHomeDir = await mkdtemp(join(tmpdir(), "letta-test-home-"));
@@ -22,15 +22,16 @@ beforeEach(async () => {
});
afterEach(async () => {
// Wait for all pending writes to complete BEFORE restoring HOME
// This prevents test writes from leaking into real settings after HOME is restored
await settingsManager.reset();
// Clean up test directories
await rm(testHomeDir, { recursive: true, force: true });
await rm(testProjectDir, { recursive: true, force: true });
// Restore original HOME
// Restore original HOME AFTER reset completes
process.env.HOME = originalHome;
// Reset settings manager after each test
settingsManager.reset();
});
// ============================================================================
@@ -63,7 +64,7 @@ describe("Settings Manager - Initialization", () => {
await new Promise((resolve) => setTimeout(resolve, 100));
// Reset and re-initialize
settingsManager.reset();
await settingsManager.reset();
await settingsManager.initialize();
const settings = settingsManager.getSettings();
@@ -194,7 +195,7 @@ describe("Settings Manager - Global Settings", () => {
await new Promise((resolve) => setTimeout(resolve, 100));
// Reset and reload
settingsManager.reset();
await settingsManager.reset();
await settingsManager.initialize();
const settings = settingsManager.getSettings();
@@ -265,7 +266,7 @@ describe("Settings Manager - Project Settings", () => {
await new Promise((resolve) => setTimeout(resolve, 100));
// Clear cache and reload
settingsManager.reset();
await settingsManager.reset();
await settingsManager.initialize();
const reloaded = await settingsManager.loadProjectSettings(testProjectDir);
@@ -356,7 +357,7 @@ describe("Settings Manager - Local Project Settings", () => {
await new Promise((resolve) => setTimeout(resolve, 100));
// Clear cache and reload
settingsManager.reset();
await settingsManager.reset();
await settingsManager.initialize();
const reloaded =
await settingsManager.loadLocalProjectSettings(testProjectDir);
@@ -443,7 +444,7 @@ describe("Settings Manager - Reset", () => {
await settingsManager.initialize();
settingsManager.updateSettings({ lastAgent: "agent-reset-test" });
settingsManager.reset();
await settingsManager.reset();
// Should throw error after reset
expect(() => settingsManager.getSettings()).toThrow();
@@ -456,7 +457,7 @@ describe("Settings Manager - Reset", () => {
// Wait for persist
await new Promise((resolve) => setTimeout(resolve, 100));
settingsManager.reset();
await settingsManager.reset();
await settingsManager.initialize();
const settings = settingsManager.getSettings();