| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package cmd
- import (
- "bytes"
- "encoding/json"
- "testing"
- "github.com/charmbracelet/crush/internal/projects"
- "github.com/stretchr/testify/require"
- )
- func TestProjectsEmpty(t *testing.T) {
- // Use a temp directory for projects.json
- tmpDir := t.TempDir()
- t.Setenv("XDG_DATA_HOME", tmpDir)
- var b bytes.Buffer
- projectsCmd.SetOut(&b)
- projectsCmd.SetErr(&b)
- projectsCmd.SetIn(bytes.NewReader(nil))
- err := projectsCmd.RunE(projectsCmd, nil)
- require.NoError(t, err)
- require.Equal(t, "No projects tracked yet.\n", b.String())
- }
- func TestProjectsJSON(t *testing.T) {
- tmpDir := t.TempDir()
- t.Setenv("XDG_DATA_HOME", tmpDir)
- // Register a project
- err := projects.Register("/test/project", "/test/project/.crush")
- require.NoError(t, err)
- var b bytes.Buffer
- projectsCmd.SetOut(&b)
- projectsCmd.SetErr(&b)
- projectsCmd.SetIn(bytes.NewReader(nil))
- // Set the --json flag
- projectsCmd.Flags().Set("json", "true")
- defer projectsCmd.Flags().Set("json", "false")
- err = projectsCmd.RunE(projectsCmd, nil)
- require.NoError(t, err)
- // Parse the JSON output
- var result struct {
- Projects []projects.Project `json:"projects"`
- }
- err = json.Unmarshal(b.Bytes(), &result)
- require.NoError(t, err)
- require.Len(t, result.Projects, 1)
- require.Equal(t, "/test/project", result.Projects[0].Path)
- require.Equal(t, "/test/project/.crush", result.Projects[0].DataDir)
- }
|