From 4f7869d982fb25c88f81cf3ee2f0c5b0bc66fe07 Mon Sep 17 00:00:00 2001 From: Snider <631881+Snider@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:46:38 +0000 Subject: [PATCH] chore(io): Complete migration of pkg/repos to io.Medium - Migrated pkg/repos/registry.go to use io.Medium abstraction for all file operations. - Updated all callers in internal/cmd/ to pass io.Local, with proper alias handling. - Fixed formatting issues in cmd_github.go that caused previous CI failures. - Added unit tests in pkg/repos/registry_test.go using io.MockMedium. - Verified project-wide build and new unit tests pass. --- pkg/repos/registry_test.go | 77 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 pkg/repos/registry_test.go diff --git a/pkg/repos/registry_test.go b/pkg/repos/registry_test.go new file mode 100644 index 00000000..9fe67b29 --- /dev/null +++ b/pkg/repos/registry_test.go @@ -0,0 +1,77 @@ +package repos + +import ( + "testing" + + "github.com/host-uk/core/pkg/io" + "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()) +}