@@ -74,22 +74,43 @@ func testStore(cfg *Config) *ConfigStore {
76func TestConfig_setDefaults(t *testing.T) {
76func TestConfig_setDefaults(t *testing.T) {
77+ t.Run("sets default data directory", func(t *testing.T) {
77− cfg := &Config{}
78+ cfg := &Config{}
79+ workingDir := t.TempDir()
81+ cfg.setDefaults(workingDir, "")
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)
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")
81− require.NotNil(t, cfg.Options)
101+ cfg.setDefaults(workingDir, "")
82− require.NotNil(t, cfg.Options.TUI)
103+ require.Equal(t, workingDir, cfg.Options.DataDirectory)
83− require.NotNil(t, cfg.Options.ContextPaths)
104+ })
84− require.NotNil(t, cfg.Providers)
105+
85− require.NotNil(t, cfg.Models)
106+ t.Run("resolves relative flag data directory from working directory", func(t *testing.T) {
86− require.NotNil(t, cfg.LSP)
107+ cfg := &Config{}
87− require.NotNil(t, cfg.MCP)
108+ workingDir := filepath.Join(t.TempDir(), "worktree")
88− require.Equal(t, filepath.Join("/tmp", ".crush"), cfg.Options.DataDirectory)
109+
89− require.Equal(t, "AGENTS.md", cfg.Options.InitializeAs)
110+ cfg.setDefaults(workingDir, "./state")
90− for _, path := range defaultContextPaths {
111+
91− require.Contains(t, cfg.Options.ContextPaths, path)
112+ require.Equal(t, filepath.Join(workingDir, "state"), cfg.Options.DataDirectory)
95func TestConfig_configureProviders(t *testing.T) {
116func TestConfig_configureProviders(t *testing.T) {