Files
harness-sync/internal/adapter/common/markdown_fs_test.go
T

65 lines
2.2 KiB
Go

package common_test
import (
"testing"
"github.com/spf13/afero"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/lukaszraczylo/harness-sync/internal/adapter/common"
"github.com/lukaszraczylo/harness-sync/internal/fsx"
)
func TestImportMarkdownTreeFSPicksUpSkillsFromMemFS(t *testing.T) {
mem := fsx.Mem()
body := []byte("---\nname: cool-skill\ndescription: does stuff\n---\n# Cool Skill\n")
require.NoError(t, mem.MkdirAll("/skills/cool-skill", 0o755))
require.NoError(t, afero.WriteFile(mem, "/skills/cool-skill/SKILL.md", body, 0o644))
docs, err := common.ImportMarkdownTreeFS(mem, "/skills", "SKILL.md")
require.NoError(t, err)
require.Len(t, docs, 1)
assert.Equal(t, "cool-skill", docs[0].Name)
assert.Equal(t, "does stuff", docs[0].Description)
assert.Contains(t, docs[0].Body, "# Cool Skill")
}
func TestImportMarkdownTreeFSHandlesMissingDir(t *testing.T) {
mem := fsx.Mem()
docs, err := common.ImportMarkdownTreeFS(mem, "/no-such-dir", "SKILL.md")
require.NoError(t, err)
assert.Empty(t, docs)
}
func TestImportMarkdownTreeFSSkipsNonMatching(t *testing.T) {
mem := fsx.Mem()
require.NoError(t, mem.MkdirAll("/skills/a", 0o755))
require.NoError(t, mem.MkdirAll("/skills/b", 0o755))
require.NoError(t, afero.WriteFile(mem, "/skills/a/SKILL.md", []byte("---\nname: a\n---\n"), 0o644))
require.NoError(t, afero.WriteFile(mem, "/skills/b/OTHER.md", []byte("# other"), 0o644))
require.NoError(t, afero.WriteFile(mem, "/skills/b/notes.txt", []byte("text"), 0o644))
// requiredFilename = "SKILL.md" → only picks up a/SKILL.md
docs, err := common.ImportMarkdownTreeFS(mem, "/skills", "SKILL.md")
require.NoError(t, err)
require.Len(t, docs, 1)
assert.Equal(t, "a", docs[0].Name)
}
func TestImportMarkdownTreeFSAnyMDWhenNoRequired(t *testing.T) {
mem := fsx.Mem()
require.NoError(t, mem.MkdirAll("/agents", 0o755))
require.NoError(t, afero.WriteFile(mem, "/agents/alpha.md", []byte("# Alpha\n"), 0o644))
require.NoError(t, afero.WriteFile(mem, "/agents/beta.md", []byte("# Beta\n"), 0o644))
require.NoError(t, afero.WriteFile(mem, "/agents/skip.txt", []byte("not md"), 0o644))
docs, err := common.ImportMarkdownTreeFS(mem, "/agents", "")
require.NoError(t, err)
assert.Len(t, docs, 2)
}