52 lines
1.7 KiB
Go
52 lines
1.7 KiB
Go
package build
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/delivery"
|
|
)
|
|
|
|
func tcValue(t *testing.T, language, version string) []byte {
|
|
t.Helper()
|
|
b, err := delivery.EncodeToolchain(delivery.Toolchain{Language: language, Version: version, Recipe: "1", At: time.Now()})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return b
|
|
}
|
|
|
|
func TestToolchainSetKeepsEachNodesEntryByLanguageAndSaysWhenOneChanged(t *testing.T) { // 1607/AC6
|
|
var s ToolchainSet
|
|
if !s.Put(GoBuildModule, "novox.go", tcValue(t, "go", "go1.27.1"), false) {
|
|
t.Error("a first entry did not count as a change")
|
|
}
|
|
if s.Put(GoBuildModule, "novox.go", tcValue(t, "go", "go1.27.1"), false) {
|
|
t.Error("the same entry again counted as a change")
|
|
}
|
|
s.Put(GoBuildModule, "ace.go", tcValue(t, "go", "go1.27.1"), false)
|
|
s.Put(NodeBuildModule, "ace.typescript", tcValue(t, "typescript", "tsc5"), false)
|
|
if got := s.Entries("go"); len(got) != 2 {
|
|
t.Errorf("go entries = %+v, want two", got)
|
|
}
|
|
if got := s.Entries("typescript"); len(got) != 1 || got[0].Node != "ace" || got[0].Version != "tsc5" {
|
|
t.Errorf("typescript entries = %+v", got)
|
|
}
|
|
if !s.Put(GoBuildModule, "ace.go", nil, true) || len(s.Entries("go")) != 1 {
|
|
t.Error("a delete did not remove the node's entry")
|
|
}
|
|
}
|
|
|
|
func TestToolchainSetLeavesOutWhatIsNotAToolchainOfTheModulesLanguage(t *testing.T) { // 1607/AC6
|
|
var s ToolchainSet
|
|
if s.Put(GoBuildModule, "novox.typescript", tcValue(t, "typescript", "x"), false) {
|
|
t.Error("a typescript toolchain in the go build module's bucket counted")
|
|
}
|
|
if s.Put(GoBuildModule, "novox.go", []byte("not json"), false) || s.Put("other-module", "novox.go", tcValue(t, "go", "x"), false) {
|
|
t.Error("garbage or an unknown module counted")
|
|
}
|
|
if len(s.Entries("go")) != 0 {
|
|
t.Error("an entry was kept")
|
|
}
|
|
}
|