Coverage improvements: - pkg/build: 89.4% - pkg/release: 86.7% (from 36.7%) - pkg/container: 85.7% - pkg/php: 62.1% (from 26%) - pkg/devops: 56.7% (from 33.1%) - pkg/release/publishers: 54.7% Also: - Add GEMINI.md for Gemini agent guidance - Update .gitignore to exclude coverage files - Remove stray core.go at root - Add core go cov command for coverage reports Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
68 lines
1.9 KiB
Go
68 lines
1.9 KiB
Go
package sources
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGitHubSource_Good_Available(t *testing.T) {
|
|
src := NewGitHubSource(SourceConfig{
|
|
GitHubRepo: "host-uk/core-images",
|
|
ImageName: "core-devops-darwin-arm64.qcow2",
|
|
})
|
|
|
|
if src.Name() != "github" {
|
|
t.Errorf("expected name 'github', got %q", src.Name())
|
|
}
|
|
|
|
// Available depends on gh CLI being installed
|
|
_ = src.Available()
|
|
}
|
|
|
|
func TestGitHubSource_Name(t *testing.T) {
|
|
src := NewGitHubSource(SourceConfig{})
|
|
assert.Equal(t, "github", src.Name())
|
|
}
|
|
|
|
func TestGitHubSource_Config(t *testing.T) {
|
|
cfg := SourceConfig{
|
|
GitHubRepo: "owner/repo",
|
|
ImageName: "test-image.qcow2",
|
|
}
|
|
src := NewGitHubSource(cfg)
|
|
|
|
// Verify the config is stored
|
|
assert.Equal(t, "owner/repo", src.config.GitHubRepo)
|
|
assert.Equal(t, "test-image.qcow2", src.config.ImageName)
|
|
}
|
|
|
|
func TestGitHubSource_Good_Multiple(t *testing.T) {
|
|
// Test creating multiple sources with different configs
|
|
src1 := NewGitHubSource(SourceConfig{GitHubRepo: "org1/repo1", ImageName: "img1.qcow2"})
|
|
src2 := NewGitHubSource(SourceConfig{GitHubRepo: "org2/repo2", ImageName: "img2.qcow2"})
|
|
|
|
assert.Equal(t, "org1/repo1", src1.config.GitHubRepo)
|
|
assert.Equal(t, "org2/repo2", src2.config.GitHubRepo)
|
|
assert.Equal(t, "github", src1.Name())
|
|
assert.Equal(t, "github", src2.Name())
|
|
}
|
|
|
|
func TestNewGitHubSource_Good(t *testing.T) {
|
|
cfg := SourceConfig{
|
|
GitHubRepo: "host-uk/core-images",
|
|
RegistryImage: "ghcr.io/host-uk/core-devops",
|
|
CDNURL: "https://cdn.example.com",
|
|
ImageName: "core-devops-darwin-arm64.qcow2",
|
|
}
|
|
|
|
src := NewGitHubSource(cfg)
|
|
assert.NotNil(t, src)
|
|
assert.Equal(t, "github", src.Name())
|
|
assert.Equal(t, cfg.GitHubRepo, src.config.GitHubRepo)
|
|
}
|
|
|
|
func TestGitHubSource_InterfaceCompliance(t *testing.T) {
|
|
// Verify GitHubSource implements ImageSource
|
|
var _ ImageSource = (*GitHubSource)(nil)
|
|
}
|