mirror of
https://github.com/lukaszraczylo/harness-sync.git
synced 2026-10-12 00:45:22 +00:00
65 lines
2.2 KiB
Go
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)
|
|
}
|