Files
mesh-controller/internal/builder/source_test.go
T

42 lines
1.4 KiB
Go

package builder
import (
"context"
"strings"
"testing"
)
// A build's source fingerprint (novox/hq issue 280): what it was made from, so a rebuild of an unchanged
// source is one build however the image digest it made differs.
const anImage = `{"module":"bus","version":"1",
"build":{"on":[{"arg":"BASE","image":"vendor/server@sha256:` + "1111111111111111111111111111111111111111111111111111111111111111" + `"}],
"artifacts":[{"name":"server","kind":"image","from":"Dockerfile"}]},
"resources":[{"id":"svc","type":"container","name":"bus","artifact":"server"}]}`
// mirroring is a store that copies a vendor's image into the mesh's registry, at an address a test says.
type mirroring struct {
*recorded
at string
}
func (m *mirroring) MirrorImage(_ context.Context, from, repository string) (string, error) {
_, digest, _ := strings.Cut(from, "@")
return m.at + "/" + repository + "@" + digest, nil
}
func TestABuildTheRegistryDecidesHasNoFingerprint(t *testing.T) {
s := newSourceInputs("app")
s.tree = "aaaa"
if s.fingerprint() == "" {
t.Fatal("a pinned source has no fingerprint")
}
s.notPinned("it resolves packages from the mesh's registry at build time")
if got := s.fingerprint(); got != "" {
t.Fatalf("a build the registry decides has a fingerprint: %s", got)
}
if (&sourceInputs{module: "app"}).fingerprint() != "" {
t.Fatal("a build whose tree was not named has a fingerprint")
}
}