2026-02-04 18:03:54 +00:00
|
|
|
package repos
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
refactor: strip to pure package library (#3)
- Fix remaining 187 pkg/ files referencing core/cli → core/go
- Move SDK library code from internal/cmd/sdk/ → pkg/sdk/ (new package)
- Create pkg/rag/helpers.go with convenience functions from internal/cmd/rag/
- Fix pkg/mcp/tools_rag.go to use pkg/rag instead of internal/cmd/rag
- Fix pkg/build/buildcmd/cmd_sdk.go and pkg/release/sdk.go to use pkg/sdk
- Remove all non-library content: main.go, internal/, cmd/, docker/,
scripts/, tasks/, tools/, .core/, .forgejo/, .woodpecker/, Taskfile.yml
- Run go mod tidy to trim unused dependencies
core/go is now a pure Go package suite (library only).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude <developers@lethean.io>
Reviewed-on: https://forge.lthn.ai/core/go/pulls/3
2026-02-16 14:23:45 +00:00
|
|
|
"forge.lthn.ai/core/go/pkg/io"
|
2026-02-04 18:03:54 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestLoadRegistry(t *testing.T) {
|
|
|
|
|
m := io.NewMockMedium()
|
|
|
|
|
yaml := `
|
|
|
|
|
version: 1
|
|
|
|
|
org: host-uk
|
|
|
|
|
base_path: /tmp/repos
|
|
|
|
|
repos:
|
|
|
|
|
core:
|
|
|
|
|
type: foundation
|
|
|
|
|
description: Core package
|
|
|
|
|
`
|
|
|
|
|
_ = m.Write("/tmp/repos.yaml", yaml)
|
|
|
|
|
|
|
|
|
|
reg, err := LoadRegistry(m, "/tmp/repos.yaml")
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
assert.NotNil(t, reg)
|
|
|
|
|
assert.Equal(t, "host-uk", reg.Org)
|
|
|
|
|
assert.Equal(t, "/tmp/repos", reg.BasePath)
|
|
|
|
|
assert.Equal(t, m, reg.medium)
|
|
|
|
|
|
|
|
|
|
repo, ok := reg.Get("core")
|
|
|
|
|
assert.True(t, ok)
|
|
|
|
|
assert.Equal(t, "core", repo.Name)
|
|
|
|
|
assert.Equal(t, "/tmp/repos/core", repo.Path)
|
|
|
|
|
assert.Equal(t, reg, repo.registry)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestRepo_Exists(t *testing.T) {
|
|
|
|
|
m := io.NewMockMedium()
|
|
|
|
|
reg := &Registry{
|
|
|
|
|
medium: m,
|
|
|
|
|
BasePath: "/tmp/repos",
|
|
|
|
|
Repos: make(map[string]*Repo),
|
|
|
|
|
}
|
|
|
|
|
repo := &Repo{
|
|
|
|
|
Name: "core",
|
|
|
|
|
Path: "/tmp/repos/core",
|
|
|
|
|
registry: reg,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Not exists yet
|
|
|
|
|
assert.False(t, repo.Exists())
|
|
|
|
|
|
|
|
|
|
// Create directory in mock
|
|
|
|
|
_ = m.EnsureDir("/tmp/repos/core")
|
|
|
|
|
assert.True(t, repo.Exists())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestRepo_IsGitRepo(t *testing.T) {
|
|
|
|
|
m := io.NewMockMedium()
|
|
|
|
|
reg := &Registry{
|
|
|
|
|
medium: m,
|
|
|
|
|
BasePath: "/tmp/repos",
|
|
|
|
|
Repos: make(map[string]*Repo),
|
|
|
|
|
}
|
|
|
|
|
repo := &Repo{
|
|
|
|
|
Name: "core",
|
|
|
|
|
Path: "/tmp/repos/core",
|
|
|
|
|
registry: reg,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Not a git repo yet
|
|
|
|
|
assert.False(t, repo.IsGitRepo())
|
|
|
|
|
|
|
|
|
|
// Create .git directory in mock
|
|
|
|
|
_ = m.EnsureDir("/tmp/repos/core/.git")
|
|
|
|
|
assert.True(t, repo.IsGitRepo())
|
|
|
|
|
}
|