novox/hq 04-ISSUES/142. A bundle is refused if it names what it is built from, because a bundle is the module's own directory compiled whole and naming a source would be describing its own build. That reason 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. So a compiled bundle may say which package, and says the module root by saying nothing. The refusal stands for every interpreted bundle, which is what it was written for. Found by writing the host's manifest, which is the first bundle in a compiled language this mesh has had.
38 lines
1.3 KiB
Go
38 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|