diff --git a/internal/config/config.go b/internal/config/config.go index 2632f11..456c536 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -25,8 +25,8 @@ type API struct { func ReadConfigFromFile(file string) (*Config, error) { // Check if file exists first if _, err := os.Stat(file); os.IsNotExist(err) { - slog.Error("Config file does not exist", "file", file) - return nil, err + slog.Warn("Config file does not exist, using default configuration", "file", file) + return &Config{APIs: make(map[string]API)}, nil } var c Config diff --git a/internal/config/config_test.go b/internal/config/config_test.go index f19b790..1c42369 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -1,8 +1,6 @@ package config import ( - "errors" - "os" "path/filepath" "testing" @@ -14,10 +12,11 @@ func TestConfigEndToEnd(t *testing.T) { tmpDir := t.TempDir() testFile := filepath.Join(tmpDir, "test_config.toml") - // First read should fail since file doesn't exist - _, err := ReadConfigFromFile(testFile) - assert.Error(t, err) - assert.True(t, errors.Is(err, os.ErrNotExist)) + // First read should return a default configuration since file doesn't exist + cfg, err := ReadConfigFromFile(testFile) + assert.NoError(t, err) + assert.NotNil(t, cfg) + assert.Empty(t, cfg.APIs) // Create test API config testAPI := API{ @@ -33,7 +32,7 @@ func TestConfigEndToEnd(t *testing.T) { assert.NoError(t, err) // Read config back and verify contents - cfg, err := ReadConfigFromFile(testFile) + cfg, err = ReadConfigFromFile(testFile) assert.NoError(t, err) assert.NotNil(t, cfg) assert.Len(t, cfg.APIs, 1) @@ -61,3 +60,17 @@ func TestWriteAPIWithEmptyName(t *testing.T) { assert.Error(t, err) assert.Equal(t, "api name cannot be empty", err.Error()) } + +func TestReadConfigFromFile_NoFile(t *testing.T) { + // Create a temporary directory + tmpDir := t.TempDir() + testFile := filepath.Join(tmpDir, "nonexistent_config.toml") + + // Attempt to read the config file + cfg, err := ReadConfigFromFile(testFile) + + // Verify no error is returned and a default config is provided + assert.NoError(t, err) + assert.NotNil(t, cfg) + assert.Empty(t, cfg.APIs) +}