9 "github.com/charmbracelet/catwalk/pkg/catwalk"
10 "github.com/stretchr/testify/require"
13type mockProviderClient struct {
17func (m *mockProviderClient) GetProviders() ([]catwalk.Provider, error) {
19 return nil, errors.New("failed to load providers")
21 return []catwalk.Provider{
28func TestProvider_loadProvidersNoIssues(t *testing.T) {
29 client := &mockProviderClient{shouldFail: false}
30 tmpPath := t.TempDir() + "/providers.json"
31 providers, err := loadProviders(false, client, tmpPath)
32 require.NoError(t, err)
33 require.NotNil(t, providers)
34 require.Len(t, providers, 1)
36 // check if file got saved
37 fileInfo, err := os.Stat(tmpPath)
38 require.NoError(t, err)
39 require.False(t, fileInfo.IsDir(), "Expected a file, not a directory")
42func TestProvider_loadProvidersWithIssues(t *testing.T) {
43 client := &mockProviderClient{shouldFail: true}
44 tmpPath := t.TempDir() + "/providers.json"
45 // store providers to a temporary file
46 oldProviders := []catwalk.Provider{
51 data, err := json.Marshal(oldProviders)
53 t.Fatalf("Failed to marshal old providers: %v", err)
56 err = os.WriteFile(tmpPath, data, 0o644)
58 t.Fatalf("Failed to write old providers to file: %v", err)
60 providers, err := loadProviders(true, client, tmpPath)
61 require.NoError(t, err)
62 require.NotNil(t, providers)
63 require.Len(t, providers, 1)
64 require.Equal(t, "OldProvider", providers[0].Name, "Expected to keep old provider when loading fails")
67func TestProvider_loadProvidersWithIssuesAndNoCache(t *testing.T) {
68 client := &mockProviderClient{shouldFail: true}
69 tmpPath := t.TempDir() + "/providers.json"
70 providers, err := loadProviders(false, client, tmpPath)
72 require.Nil(t, providers, "Expected nil providers when loading fails and no cache exists")
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list