package catalogue import "testing" // A bundle is the module's own directory compiled whole, and naming a source would be describing its // own build. That holds for an interpreted language and cannot hold for a compiled one: a repository // written in Go carries several commands — the host and its bootstrap live in one — and "the module's // own directory" is then not a package at all (novox/hq 04-ISSUES/142). func TestAGoBundleMayNameItsCommand(t *testing.T) { b := &Build{Artifacts: []Artifact{{ Name: "host-arch", Kind: ArtifactBundle, Language: "go", System: "arch", From: "cmd/mesh-host", }}} if p := b.problems("mesh-host"); len(p) != 0 { t.Fatalf("a go bundle naming its command was refused: %v", p) } } func TestAnInterpretedBundleStillMayNotNameASource(t *testing.T) { b := &Build{Artifacts: []Artifact{{ Name: "tools", Kind: ArtifactBundle, Language: "typescript", From: "src", }}} p := b.problems("something") if len(p) == 0 { t.Fatal("an interpreted bundle naming what it is built from was accepted") } } func TestACompiledBundleStillMustSayItsSystem(t *testing.T) { b := &Build{Artifacts: []Artifact{{ Name: "host", Kind: ArtifactBundle, Language: "go", From: "cmd/mesh-host", }}} if len(b.problems("mesh-host")) == 0 { t.Fatal("a compiled bundle with no system was accepted") } }