@@ -11,7 +11,7 @@ import (
11 "github.com/charmbracelet/catwalk/pkg/catwalk"
11 "github.com/charmbracelet/catwalk/pkg/catwalk"
12 "github.com/charmbracelet/crush/internal/csync"
12 "github.com/charmbracelet/crush/internal/csync"
13 "github.com/charmbracelet/crush/internal/env"
13 "github.com/charmbracelet/crush/internal/env"
14− "github.com/stretchr/testify/assert"
14+ "github.com/stretchr/testify/require"
17func TestMain(m *testing.M) {
17func TestMain(m *testing.M) {
@@ -28,12 +28,12 @@ func TestConfig_LoadFromReaders(t *testing.T) {
29 loadedConfig, err := loadFromReaders([]io.Reader{data1, data2, data3})
29 loadedConfig, err := loadFromReaders([]io.Reader{data1, data2, data3})
31− assert.NoError(t, err)
31+ require.NoError(t, err)
32− assert.NotNil(t, loadedConfig)
32+ require.NotNil(t, loadedConfig)
33− assert.Equal(t, 1, loadedConfig.Providers.Len())
33+ require.Equal(t, 1, loadedConfig.Providers.Len())
34 pc, _ := loadedConfig.Providers.Get("openai")
34 pc, _ := loadedConfig.Providers.Get("openai")
35− assert.Equal(t, "key2", pc.APIKey)
35+ require.Equal(t, "key2", pc.APIKey)
36− assert.Equal(t, "https://api.openai.com/v2", pc.BaseURL)
36+ require.Equal(t, "https://api.openai.com/v2", pc.BaseURL)
39func TestConfig_setDefaults(t *testing.T) {
39func TestConfig_setDefaults(t *testing.T) {
@@ -41,18 +41,18 @@ func TestConfig_setDefaults(t *testing.T) {
42 cfg.setDefaults("/tmp")
42 cfg.setDefaults("/tmp")
44− assert.NotNil(t, cfg.Options)
44+ require.NotNil(t, cfg.Options)
45− assert.NotNil(t, cfg.Options.TUI)
45+ require.NotNil(t, cfg.Options.TUI)
46− assert.NotNil(t, cfg.Options.ContextPaths)
46+ require.NotNil(t, cfg.Options.ContextPaths)
47− assert.NotNil(t, cfg.Providers)
47+ require.NotNil(t, cfg.Providers)
48− assert.NotNil(t, cfg.Models)
48+ require.NotNil(t, cfg.Models)
49− assert.NotNil(t, cfg.LSP)
49+ require.NotNil(t, cfg.LSP)
50− assert.NotNil(t, cfg.MCP)
50+ require.NotNil(t, cfg.MCP)
51− assert.Equal(t, filepath.Join("/tmp", ".crush"), cfg.Options.DataDirectory)
51+ require.Equal(t, filepath.Join("/tmp", ".crush"), cfg.Options.DataDirectory)
52 for _, path := range defaultContextPaths {
52 for _, path := range defaultContextPaths {
53− assert.Contains(t, cfg.Options.ContextPaths, path)
53+ require.Contains(t, cfg.Options.ContextPaths, path)
55− assert.Equal(t, "/tmp", cfg.workingDir)
55+ require.Equal(t, "/tmp", cfg.workingDir)
58func TestConfig_configureProviders(t *testing.T) {
58func TestConfig_configureProviders(t *testing.T) {
@@ -74,12 +74,12 @@ func TestConfig_configureProviders(t *testing.T) {
75 resolver := NewEnvironmentVariableResolver(env)
75 resolver := NewEnvironmentVariableResolver(env)
76 err := cfg.configureProviders(env, resolver, knownProviders)
76 err := cfg.configureProviders(env, resolver, knownProviders)
77− assert.NoError(t, err)
77+ require.NoError(t, err)
78− assert.Equal(t, 1, cfg.Providers.Len())
78+ require.Equal(t, 1, cfg.Providers.Len())
80 // We want to make sure that we keep the configured API key as a placeholder
80 // We want to make sure that we keep the configured API key as a placeholder
81 pc, _ := cfg.Providers.Get("openai")
81 pc, _ := cfg.Providers.Get("openai")
82− assert.Equal(t, "$OPENAI_API_KEY", pc.APIKey)
82+ require.Equal(t, "$OPENAI_API_KEY", pc.APIKey)
85func TestConfig_configureProvidersWithOverride(t *testing.T) {
85func TestConfig_configureProvidersWithOverride(t *testing.T) {
@@ -117,15 +117,15 @@ func TestConfig_configureProvidersWithOverride(t *testing.T) {
118 resolver := NewEnvironmentVariableResolver(env)
118 resolver := NewEnvironmentVariableResolver(env)
119 err := cfg.configureProviders(env, resolver, knownProviders)
119 err := cfg.configureProviders(env, resolver, knownProviders)
120− assert.NoError(t, err)
120+ require.NoError(t, err)
121− assert.Equal(t, 1, cfg.Providers.Len())
121+ require.Equal(t, 1, cfg.Providers.Len())
123 // We want to make sure that we keep the configured API key as a placeholder
123 // We want to make sure that we keep the configured API key as a placeholder
124 pc, _ := cfg.Providers.Get("openai")
124 pc, _ := cfg.Providers.Get("openai")
125− assert.Equal(t, "xyz", pc.APIKey)
125+ require.Equal(t, "xyz", pc.APIKey)
126− assert.Equal(t, "https://api.openai.com/v2", pc.BaseURL)
126+ require.Equal(t, "https://api.openai.com/v2", pc.BaseURL)
127− assert.Len(t, pc.Models, 2)
127+ require.Len(t, pc.Models, 2)
128− assert.Equal(t, "Updated", pc.Models[0].Name)
128+ require.Equal(t, "Updated", pc.Models[0].Name)
131func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
131func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
@@ -159,20 +159,20 @@ func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
160 resolver := NewEnvironmentVariableResolver(env)
160 resolver := NewEnvironmentVariableResolver(env)
161 err := cfg.configureProviders(env, resolver, knownProviders)
161 err := cfg.configureProviders(env, resolver, knownProviders)
162− assert.NoError(t, err)
162+ require.NoError(t, err)
163 // Should be to because of the env variable
163 // Should be to because of the env variable
164− assert.Equal(t, cfg.Providers.Len(), 2)
164+ require.Equal(t, cfg.Providers.Len(), 2)
166 // We want to make sure that we keep the configured API key as a placeholder
166 // We want to make sure that we keep the configured API key as a placeholder
167 pc, _ := cfg.Providers.Get("custom")
167 pc, _ := cfg.Providers.Get("custom")
168− assert.Equal(t, "xyz", pc.APIKey)
168+ require.Equal(t, "xyz", pc.APIKey)
169 // Make sure we set the ID correctly
169 // Make sure we set the ID correctly
170− assert.Equal(t, "custom", pc.ID)
170+ require.Equal(t, "custom", pc.ID)
171− assert.Equal(t, "https://api.someendpoint.com/v2", pc.BaseURL)
171+ require.Equal(t, "https://api.someendpoint.com/v2", pc.BaseURL)
172− assert.Len(t, pc.Models, 1)
172+ require.Len(t, pc.Models, 1)
174 _, ok := cfg.Providers.Get("openai")
174 _, ok := cfg.Providers.Get("openai")
175− assert.True(t, ok, "OpenAI provider should still be present")
175+ require.True(t, ok, "OpenAI provider should still be present")
178func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
178func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
@@ -195,13 +195,13 @@ func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
196 resolver := NewEnvironmentVariableResolver(env)
196 resolver := NewEnvironmentVariableResolver(env)
197 err := cfg.configureProviders(env, resolver, knownProviders)
197 err := cfg.configureProviders(env, resolver, knownProviders)
198− assert.NoError(t, err)
198+ require.NoError(t, err)
199− assert.Equal(t, cfg.Providers.Len(), 1)
199+ require.Equal(t, cfg.Providers.Len(), 1)
201 bedrockProvider, ok := cfg.Providers.Get("bedrock")
201 bedrockProvider, ok := cfg.Providers.Get("bedrock")
202− assert.True(t, ok, "Bedrock provider should be present")
202+ require.True(t, ok, "Bedrock provider should be present")
203− assert.Len(t, bedrockProvider.Models, 1)
203+ require.Len(t, bedrockProvider.Models, 1)
204− assert.Equal(t, "anthropic.claude-sonnet-4-20250514-v1:0", bedrockProvider.Models[0].ID)
204+ require.Equal(t, "anthropic.claude-sonnet-4-20250514-v1:0", bedrockProvider.Models[0].ID)
207func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
207func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
@@ -221,9 +221,9 @@ func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
221 env := env.NewFromMap(map[string]string{})
221 env := env.NewFromMap(map[string]string{})
222 resolver := NewEnvironmentVariableResolver(env)
222 resolver := NewEnvironmentVariableResolver(env)
223 err := cfg.configureProviders(env, resolver, knownProviders)
223 err := cfg.configureProviders(env, resolver, knownProviders)
224− assert.NoError(t, err)
224+ require.NoError(t, err)
225 // Provider should not be configured without credentials
225 // Provider should not be configured without credentials
226− assert.Equal(t, cfg.Providers.Len(), 0)
226+ require.Equal(t, cfg.Providers.Len(), 0)
229func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
229func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
@@ -246,7 +246,7 @@ func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
247 resolver := NewEnvironmentVariableResolver(env)
247 resolver := NewEnvironmentVariableResolver(env)
248 err := cfg.configureProviders(env, resolver, knownProviders)
248 err := cfg.configureProviders(env, resolver, knownProviders)
249− assert.Error(t, err)
249+ require.Error(t, err)
252func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
252func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
@@ -270,15 +270,15 @@ func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
271 resolver := NewEnvironmentVariableResolver(env)
271 resolver := NewEnvironmentVariableResolver(env)
272 err := cfg.configureProviders(env, resolver, knownProviders)
272 err := cfg.configureProviders(env, resolver, knownProviders)
273− assert.NoError(t, err)
273+ require.NoError(t, err)
274− assert.Equal(t, cfg.Providers.Len(), 1)
274+ require.Equal(t, cfg.Providers.Len(), 1)
276 vertexProvider, ok := cfg.Providers.Get("vertexai")
276 vertexProvider, ok := cfg.Providers.Get("vertexai")
277− assert.True(t, ok, "VertexAI provider should be present")
277+ require.True(t, ok, "VertexAI provider should be present")
278− assert.Len(t, vertexProvider.Models, 1)
278+ require.Len(t, vertexProvider.Models, 1)
279− assert.Equal(t, "gemini-pro", vertexProvider.Models[0].ID)
279+ require.Equal(t, "gemini-pro", vertexProvider.Models[0].ID)
280− assert.Equal(t, "test-project", vertexProvider.ExtraParams["project"])
280+ require.Equal(t, "test-project", vertexProvider.ExtraParams["project"])
281− assert.Equal(t, "us-central1", vertexProvider.ExtraParams["location"])
281+ require.Equal(t, "us-central1", vertexProvider.ExtraParams["location"])
284func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
284func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
@@ -302,9 +302,9 @@ func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
303 resolver := NewEnvironmentVariableResolver(env)
303 resolver := NewEnvironmentVariableResolver(env)
304 err := cfg.configureProviders(env, resolver, knownProviders)
304 err := cfg.configureProviders(env, resolver, knownProviders)
305− assert.NoError(t, err)
305+ require.NoError(t, err)
306 // Provider should not be configured without proper credentials
306 // Provider should not be configured without proper credentials
307− assert.Equal(t, cfg.Providers.Len(), 0)
307+ require.Equal(t, cfg.Providers.Len(), 0)
310func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
310func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
@@ -327,9 +327,9 @@ func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
328 resolver := NewEnvironmentVariableResolver(env)
328 resolver := NewEnvironmentVariableResolver(env)
329 err := cfg.configureProviders(env, resolver, knownProviders)
329 err := cfg.configureProviders(env, resolver, knownProviders)
330− assert.NoError(t, err)
330+ require.NoError(t, err)
331 // Provider should not be configured without project
331 // Provider should not be configured without project
332− assert.Equal(t, cfg.Providers.Len(), 0)
332+ require.Equal(t, cfg.Providers.Len(), 0)
335func TestConfig_configureProvidersSetProviderID(t *testing.T) {
335func TestConfig_configureProvidersSetProviderID(t *testing.T) {
@@ -351,12 +351,12 @@ func TestConfig_configureProvidersSetProviderID(t *testing.T) {
352 resolver := NewEnvironmentVariableResolver(env)
352 resolver := NewEnvironmentVariableResolver(env)
353 err := cfg.configureProviders(env, resolver, knownProviders)
353 err := cfg.configureProviders(env, resolver, knownProviders)
354− assert.NoError(t, err)
354+ require.NoError(t, err)
355− assert.Equal(t, cfg.Providers.Len(), 1)
355+ require.Equal(t, cfg.Providers.Len(), 1)
357 // Provider ID should be set
357 // Provider ID should be set
358 pc, _ := cfg.Providers.Get("openai")
358 pc, _ := cfg.Providers.Get("openai")
359− assert.Equal(t, "openai", pc.ID)
359+ require.Equal(t, "openai", pc.ID)
362func TestConfig_EnabledProviders(t *testing.T) {
362func TestConfig_EnabledProviders(t *testing.T) {
@@ -377,7 +377,7 @@ func TestConfig_EnabledProviders(t *testing.T) {
379 enabled := cfg.EnabledProviders()
379 enabled := cfg.EnabledProviders()
380− assert.Len(t, enabled, 2)
380+ require.Len(t, enabled, 2)
383 t.Run("some providers disabled", func(t *testing.T) {
383 t.Run("some providers disabled", func(t *testing.T) {
@@ -397,8 +397,8 @@ func TestConfig_EnabledProviders(t *testing.T) {
399 enabled := cfg.EnabledProviders()
399 enabled := cfg.EnabledProviders()
400− assert.Len(t, enabled, 1)
400+ require.Len(t, enabled, 1)
401− assert.Equal(t, "openai", enabled[0].ID)
401+ require.Equal(t, "openai", enabled[0].ID)
404 t.Run("empty providers map", func(t *testing.T) {
404 t.Run("empty providers map", func(t *testing.T) {
@@ -407,7 +407,7 @@ func TestConfig_EnabledProviders(t *testing.T) {
409 enabled := cfg.EnabledProviders()
409 enabled := cfg.EnabledProviders()
410− assert.Len(t, enabled, 0)
410+ require.Len(t, enabled, 0)
@@ -423,7 +423,7 @@ func TestConfig_IsConfigured(t *testing.T) {
426− assert.True(t, cfg.IsConfigured())
426+ require.True(t, cfg.IsConfigured())
429 t.Run("returns false when no providers are configured", func(t *testing.T) {
429 t.Run("returns false when no providers are configured", func(t *testing.T) {
@@ -431,7 +431,7 @@ func TestConfig_IsConfigured(t *testing.T) {
431 Providers: csync.NewMap[string, ProviderConfig](),
431 Providers: csync.NewMap[string, ProviderConfig](),
434− assert.False(t, cfg.IsConfigured())
434+ require.False(t, cfg.IsConfigured())
437 t.Run("returns false when all providers are disabled", func(t *testing.T) {
437 t.Run("returns false when all providers are disabled", func(t *testing.T) {
@@ -450,7 +450,7 @@ func TestConfig_IsConfigured(t *testing.T) {
453− assert.False(t, cfg.IsConfigured())
453+ require.False(t, cfg.IsConfigured())
@@ -480,12 +480,12 @@ func TestConfig_configureProvidersWithDisabledProvider(t *testing.T) {
481 resolver := NewEnvironmentVariableResolver(env)
481 resolver := NewEnvironmentVariableResolver(env)
482 err := cfg.configureProviders(env, resolver, knownProviders)
482 err := cfg.configureProviders(env, resolver, knownProviders)
483− assert.NoError(t, err)
483+ require.NoError(t, err)
485 // Provider should be removed from config when disabled
485 // Provider should be removed from config when disabled
486− assert.Equal(t, cfg.Providers.Len(), 0)
486+ require.Equal(t, cfg.Providers.Len(), 0)
487 _, exists := cfg.Providers.Get("openai")
487 _, exists := cfg.Providers.Get("openai")
488− assert.False(t, exists)
488+ require.False(t, exists)
491func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
491func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
@@ -508,11 +508,11 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
508 env := env.NewFromMap(map[string]string{})
508 env := env.NewFromMap(map[string]string{})
509 resolver := NewEnvironmentVariableResolver(env)
509 resolver := NewEnvironmentVariableResolver(env)
510 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
510 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
511− assert.NoError(t, err)
511+ require.NoError(t, err)
513− assert.Equal(t, cfg.Providers.Len(), 1)
513+ require.Equal(t, cfg.Providers.Len(), 1)
514 _, exists := cfg.Providers.Get("custom")
514 _, exists := cfg.Providers.Get("custom")
515− assert.True(t, exists)
515+ require.True(t, exists)
518 t.Run("custom provider with missing BaseURL is removed", func(t *testing.T) {
518 t.Run("custom provider with missing BaseURL is removed", func(t *testing.T) {
@@ -531,11 +531,11 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
531 env := env.NewFromMap(map[string]string{})
531 env := env.NewFromMap(map[string]string{})
532 resolver := NewEnvironmentVariableResolver(env)
532 resolver := NewEnvironmentVariableResolver(env)
533 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
533 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
534− assert.NoError(t, err)
534+ require.NoError(t, err)
536− assert.Equal(t, cfg.Providers.Len(), 0)
536+ require.Equal(t, cfg.Providers.Len(), 0)
537 _, exists := cfg.Providers.Get("custom")
537 _, exists := cfg.Providers.Get("custom")
538− assert.False(t, exists)
538+ require.False(t, exists)
541 t.Run("custom provider with no models is removed", func(t *testing.T) {
541 t.Run("custom provider with no models is removed", func(t *testing.T) {
@@ -553,11 +553,11 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
553 env := env.NewFromMap(map[string]string{})
553 env := env.NewFromMap(map[string]string{})
554 resolver := NewEnvironmentVariableResolver(env)
554 resolver := NewEnvironmentVariableResolver(env)
555 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
555 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
556− assert.NoError(t, err)
556+ require.NoError(t, err)
558− assert.Equal(t, cfg.Providers.Len(), 0)
558+ require.Equal(t, cfg.Providers.Len(), 0)
559 _, exists := cfg.Providers.Get("custom")
559 _, exists := cfg.Providers.Get("custom")
560− assert.False(t, exists)
560+ require.False(t, exists)
563 t.Run("custom provider with unsupported type is removed", func(t *testing.T) {
563 t.Run("custom provider with unsupported type is removed", func(t *testing.T) {
@@ -578,11 +578,11 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
578 env := env.NewFromMap(map[string]string{})
578 env := env.NewFromMap(map[string]string{})
579 resolver := NewEnvironmentVariableResolver(env)
579 resolver := NewEnvironmentVariableResolver(env)
580 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
580 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
581− assert.NoError(t, err)
581+ require.NoError(t, err)
583− assert.Equal(t, cfg.Providers.Len(), 0)
583+ require.Equal(t, cfg.Providers.Len(), 0)
584 _, exists := cfg.Providers.Get("custom")
584 _, exists := cfg.Providers.Get("custom")
585− assert.False(t, exists)
585+ require.False(t, exists)
588 t.Run("valid custom provider is kept and ID is set", func(t *testing.T) {
588 t.Run("valid custom provider is kept and ID is set", func(t *testing.T) {
@@ -603,14 +603,14 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
603 env := env.NewFromMap(map[string]string{})
603 env := env.NewFromMap(map[string]string{})
604 resolver := NewEnvironmentVariableResolver(env)
604 resolver := NewEnvironmentVariableResolver(env)
605 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
605 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
606− assert.NoError(t, err)
606+ require.NoError(t, err)
608− assert.Equal(t, cfg.Providers.Len(), 1)
608+ require.Equal(t, cfg.Providers.Len(), 1)
609 customProvider, exists := cfg.Providers.Get("custom")
609 customProvider, exists := cfg.Providers.Get("custom")
610− assert.True(t, exists)
610+ require.True(t, exists)
611− assert.Equal(t, "custom", customProvider.ID)
611+ require.Equal(t, "custom", customProvider.ID)
612− assert.Equal(t, "test-key", customProvider.APIKey)
612+ require.Equal(t, "test-key", customProvider.APIKey)
613− assert.Equal(t, "https://api.custom.com/v1", customProvider.BaseURL)
613+ require.Equal(t, "https://api.custom.com/v1", customProvider.BaseURL)
616 t.Run("custom anthropic provider is supported", func(t *testing.T) {
616 t.Run("custom anthropic provider is supported", func(t *testing.T) {
@@ -631,15 +631,15 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
631 env := env.NewFromMap(map[string]string{})
631 env := env.NewFromMap(map[string]string{})
632 resolver := NewEnvironmentVariableResolver(env)
632 resolver := NewEnvironmentVariableResolver(env)
633 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
633 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
634− assert.NoError(t, err)
634+ require.NoError(t, err)
636− assert.Equal(t, cfg.Providers.Len(), 1)
636+ require.Equal(t, cfg.Providers.Len(), 1)
637 customProvider, exists := cfg.Providers.Get("custom-anthropic")
637 customProvider, exists := cfg.Providers.Get("custom-anthropic")
638− assert.True(t, exists)
638+ require.True(t, exists)
639− assert.Equal(t, "custom-anthropic", customProvider.ID)
639+ require.Equal(t, "custom-anthropic", customProvider.ID)
640− assert.Equal(t, "test-key", customProvider.APIKey)
640+ require.Equal(t, "test-key", customProvider.APIKey)
641− assert.Equal(t, "https://api.anthropic.com/v1", customProvider.BaseURL)
641+ require.Equal(t, "https://api.anthropic.com/v1", customProvider.BaseURL)
642− assert.Equal(t, catwalk.TypeAnthropic, customProvider.Type)
642+ require.Equal(t, catwalk.TypeAnthropic, customProvider.Type)
645 t.Run("disabled custom provider is removed", func(t *testing.T) {
645 t.Run("disabled custom provider is removed", func(t *testing.T) {
@@ -661,11 +661,11 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
661 env := env.NewFromMap(map[string]string{})
661 env := env.NewFromMap(map[string]string{})
662 resolver := NewEnvironmentVariableResolver(env)
662 resolver := NewEnvironmentVariableResolver(env)
663 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
663 err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
664− assert.NoError(t, err)
664+ require.NoError(t, err)
666− assert.Equal(t, cfg.Providers.Len(), 0)
666+ require.Equal(t, cfg.Providers.Len(), 0)
667 _, exists := cfg.Providers.Get("custom")
667 _, exists := cfg.Providers.Get("custom")
668− assert.False(t, exists)
668+ require.False(t, exists)
@@ -696,11 +696,11 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
697 resolver := NewEnvironmentVariableResolver(env)
697 resolver := NewEnvironmentVariableResolver(env)
698 err := cfg.configureProviders(env, resolver, knownProviders)
698 err := cfg.configureProviders(env, resolver, knownProviders)
699− assert.NoError(t, err)
699+ require.NoError(t, err)
701− assert.Equal(t, cfg.Providers.Len(), 0)
701+ require.Equal(t, cfg.Providers.Len(), 0)
702 _, exists := cfg.Providers.Get("vertexai")
702 _, exists := cfg.Providers.Get("vertexai")
703− assert.False(t, exists)
703+ require.False(t, exists)
706 t.Run("Bedrock provider removed when AWS credentials missing with existing config", func(t *testing.T) {
706 t.Run("Bedrock provider removed when AWS credentials missing with existing config", func(t *testing.T) {
@@ -727,11 +727,11 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
727 env := env.NewFromMap(map[string]string{})
727 env := env.NewFromMap(map[string]string{})
728 resolver := NewEnvironmentVariableResolver(env)
728 resolver := NewEnvironmentVariableResolver(env)
729 err := cfg.configureProviders(env, resolver, knownProviders)
729 err := cfg.configureProviders(env, resolver, knownProviders)
730− assert.NoError(t, err)
730+ require.NoError(t, err)
732− assert.Equal(t, cfg.Providers.Len(), 0)
732+ require.Equal(t, cfg.Providers.Len(), 0)
733 _, exists := cfg.Providers.Get("bedrock")
733 _, exists := cfg.Providers.Get("bedrock")
734− assert.False(t, exists)
734+ require.False(t, exists)
737 t.Run("provider removed when API key missing with existing config", func(t *testing.T) {
737 t.Run("provider removed when API key missing with existing config", func(t *testing.T) {
@@ -758,11 +758,11 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
758 env := env.NewFromMap(map[string]string{})
758 env := env.NewFromMap(map[string]string{})
759 resolver := NewEnvironmentVariableResolver(env)
759 resolver := NewEnvironmentVariableResolver(env)
760 err := cfg.configureProviders(env, resolver, knownProviders)
760 err := cfg.configureProviders(env, resolver, knownProviders)
761− assert.NoError(t, err)
761+ require.NoError(t, err)
763− assert.Equal(t, cfg.Providers.Len(), 0)
763+ require.Equal(t, cfg.Providers.Len(), 0)
764 _, exists := cfg.Providers.Get("openai")
764 _, exists := cfg.Providers.Get("openai")
765− assert.False(t, exists)
765+ require.False(t, exists)
768 t.Run("known provider should still be added if the endpoint is missing the client will use default endpoints", func(t *testing.T) {
768 t.Run("known provider should still be added if the endpoint is missing the client will use default endpoints", func(t *testing.T) {
@@ -791,11 +791,11 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
792 resolver := NewEnvironmentVariableResolver(env)
792 resolver := NewEnvironmentVariableResolver(env)
793 err := cfg.configureProviders(env, resolver, knownProviders)
793 err := cfg.configureProviders(env, resolver, knownProviders)
794− assert.NoError(t, err)
794+ require.NoError(t, err)
796− assert.Equal(t, cfg.Providers.Len(), 1)
796+ require.Equal(t, cfg.Providers.Len(), 1)
797 _, exists := cfg.Providers.Get("openai")
797 _, exists := cfg.Providers.Get("openai")
798− assert.True(t, exists)
798+ require.True(t, exists)
@@ -825,16 +825,16 @@ func TestConfig_defaultModelSelection(t *testing.T) {
825 env := env.NewFromMap(map[string]string{})
825 env := env.NewFromMap(map[string]string{})
826 resolver := NewEnvironmentVariableResolver(env)
826 resolver := NewEnvironmentVariableResolver(env)
827 err := cfg.configureProviders(env, resolver, knownProviders)
827 err := cfg.configureProviders(env, resolver, knownProviders)
828− assert.NoError(t, err)
828+ require.NoError(t, err)
830 large, small, err := cfg.defaultModelSelection(knownProviders)
830 large, small, err := cfg.defaultModelSelection(knownProviders)
831− assert.NoError(t, err)
831+ require.NoError(t, err)
832− assert.Equal(t, "large-model", large.Model)
832+ require.Equal(t, "large-model", large.Model)
833− assert.Equal(t, "openai", large.Provider)
833+ require.Equal(t, "openai", large.Provider)
834− assert.Equal(t, int64(1000), large.MaxTokens)
834+ require.Equal(t, int64(1000), large.MaxTokens)
835− assert.Equal(t, "small-model", small.Model)
835+ require.Equal(t, "small-model", small.Model)
836− assert.Equal(t, "openai", small.Provider)
836+ require.Equal(t, "openai", small.Provider)
837− assert.Equal(t, int64(500), small.MaxTokens)
837+ require.Equal(t, int64(500), small.MaxTokens)
839 t.Run("should error if no providers configured", func(t *testing.T) {
839 t.Run("should error if no providers configured", func(t *testing.T) {
840 knownProviders := []catwalk.Provider{
840 knownProviders := []catwalk.Provider{
@@ -861,10 +861,10 @@ func TestConfig_defaultModelSelection(t *testing.T) {
861 env := env.NewFromMap(map[string]string{})
861 env := env.NewFromMap(map[string]string{})
862 resolver := NewEnvironmentVariableResolver(env)
862 resolver := NewEnvironmentVariableResolver(env)
863 err := cfg.configureProviders(env, resolver, knownProviders)
863 err := cfg.configureProviders(env, resolver, knownProviders)
864− assert.NoError(t, err)
864+ require.NoError(t, err)
866 _, _, err = cfg.defaultModelSelection(knownProviders)
866 _, _, err = cfg.defaultModelSelection(knownProviders)
867− assert.Error(t, err)
867+ require.Error(t, err)
869 t.Run("should error if model is missing", func(t *testing.T) {
869 t.Run("should error if model is missing", func(t *testing.T) {
870 knownProviders := []catwalk.Provider{
870 knownProviders := []catwalk.Provider{
@@ -891,9 +891,9 @@ func TestConfig_defaultModelSelection(t *testing.T) {
891 env := env.NewFromMap(map[string]string{})
891 env := env.NewFromMap(map[string]string{})
892 resolver := NewEnvironmentVariableResolver(env)
892 resolver := NewEnvironmentVariableResolver(env)
893 err := cfg.configureProviders(env, resolver, knownProviders)
893 err := cfg.configureProviders(env, resolver, knownProviders)
894− assert.NoError(t, err)
894+ require.NoError(t, err)
895 _, _, err = cfg.defaultModelSelection(knownProviders)
895 _, _, err = cfg.defaultModelSelection(knownProviders)
896− assert.Error(t, err)
896+ require.Error(t, err)
899 t.Run("should configure the default models with a custom provider", func(t *testing.T) {
899 t.Run("should configure the default models with a custom provider", func(t *testing.T) {
@@ -934,15 +934,15 @@ func TestConfig_defaultModelSelection(t *testing.T) {
934 env := env.NewFromMap(map[string]string{})
934 env := env.NewFromMap(map[string]string{})
935 resolver := NewEnvironmentVariableResolver(env)
935 resolver := NewEnvironmentVariableResolver(env)
936 err := cfg.configureProviders(env, resolver, knownProviders)
936 err := cfg.configureProviders(env, resolver, knownProviders)
937− assert.NoError(t, err)
937+ require.NoError(t, err)
938 large, small, err := cfg.defaultModelSelection(knownProviders)
938 large, small, err := cfg.defaultModelSelection(knownProviders)
939− assert.NoError(t, err)
939+ require.NoError(t, err)
940− assert.Equal(t, "model", large.Model)
940+ require.Equal(t, "model", large.Model)
941− assert.Equal(t, "custom", large.Provider)
941+ require.Equal(t, "custom", large.Provider)
942− assert.Equal(t, int64(600), large.MaxTokens)
942+ require.Equal(t, int64(600), large.MaxTokens)
943− assert.Equal(t, "model", small.Model)
943+ require.Equal(t, "model", small.Model)
944− assert.Equal(t, "custom", small.Provider)
944+ require.Equal(t, "custom", small.Provider)
945− assert.Equal(t, int64(600), small.MaxTokens)
945+ require.Equal(t, int64(600), small.MaxTokens)
948 t.Run("should fail if no model configured", func(t *testing.T) {
948 t.Run("should fail if no model configured", func(t *testing.T) {
@@ -978,9 +978,9 @@ func TestConfig_defaultModelSelection(t *testing.T) {
978 env := env.NewFromMap(map[string]string{})
978 env := env.NewFromMap(map[string]string{})
979 resolver := NewEnvironmentVariableResolver(env)
979 resolver := NewEnvironmentVariableResolver(env)
980 err := cfg.configureProviders(env, resolver, knownProviders)
980 err := cfg.configureProviders(env, resolver, knownProviders)
981− assert.NoError(t, err)
981+ require.NoError(t, err)
982 _, _, err = cfg.defaultModelSelection(knownProviders)
982 _, _, err = cfg.defaultModelSelection(knownProviders)
983− assert.Error(t, err)
983+ require.Error(t, err)
985 t.Run("should use the default provider first", func(t *testing.T) {
985 t.Run("should use the default provider first", func(t *testing.T) {
986 knownProviders := []catwalk.Provider{
986 knownProviders := []catwalk.Provider{
@@ -1020,15 +1020,15 @@ func TestConfig_defaultModelSelection(t *testing.T) {
1020 env := env.NewFromMap(map[string]string{})
1020 env := env.NewFromMap(map[string]string{})
1021 resolver := NewEnvironmentVariableResolver(env)
1021 resolver := NewEnvironmentVariableResolver(env)
1022 err := cfg.configureProviders(env, resolver, knownProviders)
1022 err := cfg.configureProviders(env, resolver, knownProviders)
1023− assert.NoError(t, err)
1023+ require.NoError(t, err)
1024 large, small, err := cfg.defaultModelSelection(knownProviders)
1024 large, small, err := cfg.defaultModelSelection(knownProviders)
1025− assert.NoError(t, err)
1025+ require.NoError(t, err)
1026− assert.Equal(t, "large-model", large.Model)
1026+ require.Equal(t, "large-model", large.Model)
1027− assert.Equal(t, "openai", large.Provider)
1027+ require.Equal(t, "openai", large.Provider)
1028− assert.Equal(t, int64(1000), large.MaxTokens)
1028+ require.Equal(t, int64(1000), large.MaxTokens)
1029− assert.Equal(t, "small-model", small.Model)
1029+ require.Equal(t, "small-model", small.Model)
1030− assert.Equal(t, "openai", small.Provider)
1030+ require.Equal(t, "openai", small.Provider)
1031− assert.Equal(t, int64(500), small.MaxTokens)
1031+ require.Equal(t, int64(500), small.MaxTokens)
@@ -1068,18 +1068,18 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1068 env := env.NewFromMap(map[string]string{})
1068 env := env.NewFromMap(map[string]string{})
1069 resolver := NewEnvironmentVariableResolver(env)
1069 resolver := NewEnvironmentVariableResolver(env)
1070 err := cfg.configureProviders(env, resolver, knownProviders)
1070 err := cfg.configureProviders(env, resolver, knownProviders)
1071− assert.NoError(t, err)
1071+ require.NoError(t, err)
1073 err = cfg.configureSelectedModels(knownProviders)
1073 err = cfg.configureSelectedModels(knownProviders)
1074− assert.NoError(t, err)
1074+ require.NoError(t, err)
1075 large := cfg.Models[SelectedModelTypeLarge]
1075 large := cfg.Models[SelectedModelTypeLarge]
1076 small := cfg.Models[SelectedModelTypeSmall]
1076 small := cfg.Models[SelectedModelTypeSmall]
1077− assert.Equal(t, "larger-model", large.Model)
1077+ require.Equal(t, "larger-model", large.Model)
1078− assert.Equal(t, "openai", large.Provider)
1078+ require.Equal(t, "openai", large.Provider)
1079− assert.Equal(t, int64(2000), large.MaxTokens)
1079+ require.Equal(t, int64(2000), large.MaxTokens)
1080− assert.Equal(t, "small-model", small.Model)
1080+ require.Equal(t, "small-model", small.Model)
1081− assert.Equal(t, "openai", small.Provider)
1081+ require.Equal(t, "openai", small.Provider)
1082− assert.Equal(t, int64(500), small.MaxTokens)
1082+ require.Equal(t, int64(500), small.MaxTokens)
1084 t.Run("should be possible to use multiple providers", func(t *testing.T) {
1084 t.Run("should be possible to use multiple providers", func(t *testing.T) {
1085 knownProviders := []catwalk.Provider{
1085 knownProviders := []catwalk.Provider{
@@ -1130,18 +1130,18 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1130 env := env.NewFromMap(map[string]string{})
1130 env := env.NewFromMap(map[string]string{})
1131 resolver := NewEnvironmentVariableResolver(env)
1131 resolver := NewEnvironmentVariableResolver(env)
1132 err := cfg.configureProviders(env, resolver, knownProviders)
1132 err := cfg.configureProviders(env, resolver, knownProviders)
1133− assert.NoError(t, err)
1133+ require.NoError(t, err)
1135 err = cfg.configureSelectedModels(knownProviders)
1135 err = cfg.configureSelectedModels(knownProviders)
1136− assert.NoError(t, err)
1136+ require.NoError(t, err)
1137 large := cfg.Models[SelectedModelTypeLarge]
1137 large := cfg.Models[SelectedModelTypeLarge]
1138 small := cfg.Models[SelectedModelTypeSmall]
1138 small := cfg.Models[SelectedModelTypeSmall]
1139− assert.Equal(t, "large-model", large.Model)
1139+ require.Equal(t, "large-model", large.Model)
1140− assert.Equal(t, "openai", large.Provider)
1140+ require.Equal(t, "openai", large.Provider)
1141− assert.Equal(t, int64(1000), large.MaxTokens)
1141+ require.Equal(t, int64(1000), large.MaxTokens)
1142− assert.Equal(t, "a-small-model", small.Model)
1142+ require.Equal(t, "a-small-model", small.Model)
1143− assert.Equal(t, "anthropic", small.Provider)
1143+ require.Equal(t, "anthropic", small.Provider)
1144− assert.Equal(t, int64(300), small.MaxTokens)
1144+ require.Equal(t, int64(300), small.MaxTokens)
1147 t.Run("should override the max tokens only", func(t *testing.T) {
1147 t.Run("should override the max tokens only", func(t *testing.T) {
@@ -1175,13 +1175,13 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1175 env := env.NewFromMap(map[string]string{})
1175 env := env.NewFromMap(map[string]string{})
1176 resolver := NewEnvironmentVariableResolver(env)
1176 resolver := NewEnvironmentVariableResolver(env)
1177 err := cfg.configureProviders(env, resolver, knownProviders)
1177 err := cfg.configureProviders(env, resolver, knownProviders)
1178− assert.NoError(t, err)
1178+ require.NoError(t, err)
1180 err = cfg.configureSelectedModels(knownProviders)
1180 err = cfg.configureSelectedModels(knownProviders)
1181− assert.NoError(t, err)
1181+ require.NoError(t, err)
1182 large := cfg.Models[SelectedModelTypeLarge]
1182 large := cfg.Models[SelectedModelTypeLarge]
1183− assert.Equal(t, "large-model", large.Model)
1183+ require.Equal(t, "large-model", large.Model)
1184− assert.Equal(t, "openai", large.Provider)
1184+ require.Equal(t, "openai", large.Provider)
1185− assert.Equal(t, int64(100), large.MaxTokens)
1185+ require.Equal(t, int64(100), large.MaxTokens)