diagnostics_test.go

 1package skills
 2
 3import (
 4	"testing"
 5
 6	"github.com/stretchr/testify/require"
 7)
 8
 9func TestApproxTokenCount(t *testing.T) {
10	t.Parallel()
11
12	require.Equal(t, 0, ApproxTokenCount(""))
13	require.Equal(t, 1, ApproxTokenCount("a"))
14	require.Equal(t, 1, ApproxTokenCount("abcd"))
15	require.Equal(t, 2, ApproxTokenCount("abcde"))
16	// 12 chars → 3 tokens.
17	require.Equal(t, 3, ApproxTokenCount("abcdefghijkl"))
18}
19
20func TestTracker_LoadedNamesAndCount(t *testing.T) {
21	t.Parallel()
22
23	active := []*Skill{{Name: "b"}, {Name: "a"}, {Name: "c"}}
24	tr := NewTracker(active)
25	require.Equal(t, 0, tr.LoadedCount())
26	require.Empty(t, tr.LoadedNames())
27
28	tr.MarkLoaded("b")
29	tr.MarkLoaded("a")
30	require.Equal(t, 2, tr.LoadedCount())
31	require.Equal(t, []string{"a", "b"}, tr.LoadedNames())
32
33	// Nil safety.
34	var nilTr *Tracker
35	require.Equal(t, 0, nilTr.LoadedCount())
36	require.Nil(t, nilTr.LoadedNames())
37}
38
39func TestDiscoverBuiltinWithStates(t *testing.T) {
40	t.Parallel()
41
42	skills, states := DiscoverBuiltinWithStates()
43	require.NotEmpty(t, skills)
44	require.NotEmpty(t, states)
45
46	// Every returned skill should have a corresponding StateNormal entry.
47	ok := 0
48	for _, s := range states {
49		if s.State == StateNormal {
50			ok++
51		}
52	}
53	require.Equal(t, len(skills), ok)
54}
55
56func TestDiscoverWithStates_MissingPath(t *testing.T) {
57	t.Parallel()
58
59	// A clearly nonexistent path should not panic; it may log an error.
60	skills, _ := DiscoverWithStates([]string{"/nonexistent/crush/skills/path"})
61	require.Empty(t, skills)
62}