@@ -74,22 +74,43 @@ func testStore(cfg *Config) *ConfigStore {
7474}
7575
7676func TestConfig_setDefaults(t *testing.T) {
77− cfg := &Config{}
77+ t.Run("sets default data directory", func(t *testing.T) {
78+ cfg := &Config{}
79+ workingDir := t.TempDir()
80+
81+ cfg.setDefaults(workingDir, "")
82+
83+ require.NotNil(t, cfg.Options)
84+ require.NotNil(t, cfg.Options.TUI)
85+ require.NotNil(t, cfg.Options.ContextPaths)
86+ require.NotNil(t, cfg.Providers)
87+ require.NotNil(t, cfg.Models)
88+ require.NotNil(t, cfg.LSP)
89+ require.NotNil(t, cfg.MCP)
90+ require.Equal(t, filepath.Join(workingDir, ".crush"), cfg.Options.DataDirectory)
91+ require.Equal(t, "AGENTS.md", cfg.Options.InitializeAs)
92+ for _, path := range defaultContextPaths {
93+ require.Contains(t, cfg.Options.ContextPaths, path)
94+ }
95+ })
7896
79− cfg.setDefaults("/tmp", "")
97+ t.Run("resolves relative configured data directory from working directory", func(t *testing.T) {
98+ cfg := &Config{Options: &Options{DataDirectory: "."}}
99+ workingDir := filepath.Join(t.TempDir(), "worktree")
80100
81− require.NotNil(t, cfg.Options)
82− require.NotNil(t, cfg.Options.TUI)
83− require.NotNil(t, cfg.Options.ContextPaths)
84− require.NotNil(t, cfg.Providers)
85− require.NotNil(t, cfg.Models)
86− require.NotNil(t, cfg.LSP)
87− require.NotNil(t, cfg.MCP)
88− require.Equal(t, filepath.Join("/tmp", ".crush"), cfg.Options.DataDirectory)
89− require.Equal(t, "AGENTS.md", cfg.Options.InitializeAs)
90− for _, path := range defaultContextPaths {
91− require.Contains(t, cfg.Options.ContextPaths, path)
92− }
101+ cfg.setDefaults(workingDir, "")
102+
103+ require.Equal(t, workingDir, cfg.Options.DataDirectory)
104+ })
105+
106+ t.Run("resolves relative flag data directory from working directory", func(t *testing.T) {
107+ cfg := &Config{}
108+ workingDir := filepath.Join(t.TempDir(), "worktree")
109+
110+ cfg.setDefaults(workingDir, "./state")
111+
112+ require.Equal(t, filepath.Join(workingDir, "state"), cfg.Options.DataDirectory)
113+ })
93114}
94115
95116func TestConfig_configureProviders(t *testing.T) {