@@ -0,0 +1,53 @@
1+package commands
2+
3+import (
4+ "os"
5+ "path/filepath"
6+ "testing"
7+
8+ "github.com/stretchr/testify/require"
9+)
10+
11+func TestLoadFromSource_NonExistentDir(t *testing.T) {
12+ t.Parallel()
13+
14+ dir := filepath.Join(t.TempDir(), "does-not-exist")
15+
16+ cmds, err := loadFromSource(commandSource{path: dir, prefix: userCommandPrefix})
17+ require.NoError(t, err)
18+ require.Empty(t, cmds)
19+
20+ // directory must NOT have been created
21+ _, statErr := os.Stat(dir)
22+ require.True(t, os.IsNotExist(statErr))
23+}
24+
25+func TestLoadFromSource_ExistingDir(t *testing.T) {
26+ t.Parallel()
27+
28+ dir := t.TempDir()
29+ require.NoError(t, os.WriteFile(filepath.Join(dir, "hello.md"), []byte("say hello"), 0o644))
30+
31+ cmds, err := loadFromSource(commandSource{path: dir, prefix: userCommandPrefix})
32+ require.NoError(t, err)
33+ require.Len(t, cmds, 1)
34+ require.Equal(t, "user:hello", cmds[0].ID)
35+ require.Equal(t, "say hello", cmds[0].Content)
36+}
37+
38+func TestLoadAll_MixedSources(t *testing.T) {
39+ t.Parallel()
40+
41+ existing := t.TempDir()
42+ require.NoError(t, os.WriteFile(filepath.Join(existing, "cmd.md"), []byte("content"), 0o644))
43+
44+ missing := filepath.Join(t.TempDir(), "nope")
45+
46+ cmds, err := loadAll([]commandSource{
47+ {path: existing, prefix: userCommandPrefix},
48+ {path: missing, prefix: projectCommandPrefix},
49+ })
50+ require.NoError(t, err)
51+ require.Len(t, cmds, 1)
52+ require.Equal(t, "user:cmd", cmds[0].ID)
53+}