68 lines
2.3 KiB
Go
68 lines
2.3 KiB
Go
package main
|
|
|
|
import (
|
|
"git.novox.be/novox/mesh-sdk/go/delivery/buildrun"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func settingsFile(t *testing.T, body string) string {
|
|
t.Helper()
|
|
p := filepath.Join(t.TempDir(), "settings.json")
|
|
if err := os.WriteFile(p, []byte(body), 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return p
|
|
}
|
|
|
|
// 1661: the build capacity is the module's setting `capacity`, laid into the settings file: empty is one step at a time everywhere.
|
|
func TestCapacityIsReadFromTheSettingsFile(t *testing.T) {
|
|
for body, want := range map[string]map[string]int{
|
|
`{"capacity": "shanks=3,ace=2"}`: {"shanks": 3, "ace": 2},
|
|
`{"capacity": ""}`: {},
|
|
`{}`: {},
|
|
} {
|
|
got, err := capacityFrom(settingsFile(t, body), "")
|
|
if err != nil || len(got) != len(want) || got["shanks"] != want["shanks"] || got["ace"] != want["ace"] {
|
|
t.Errorf("%s: capacity %v, %v, want %v", body, got, err, want)
|
|
}
|
|
}
|
|
p := &buildrun.Places{Capacity: mustCapacity(t, settingsFile(t, `{"capacity": ""}`))}
|
|
if p.CapacityOf("shanks") != 1 || p.CapacityOf("ace") != 1 {
|
|
t.Errorf("an empty setting gives %d and %d, want 1 everywhere", p.CapacityOf("shanks"), p.CapacityOf("ace"))
|
|
}
|
|
}
|
|
|
|
func mustCapacity(t *testing.T, path string) map[string]int {
|
|
t.Helper()
|
|
c, err := capacityFrom(path, "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return c
|
|
}
|
|
|
|
func TestACapacitySettingThatIsNotOneIsRefusedNamingIt(t *testing.T) {
|
|
if _, err := capacityFrom(settingsFile(t, `{"capacity": "shanks=-1"}`), ""); err == nil {
|
|
t.Error("shanks=-1 accepted")
|
|
}
|
|
if c, err := capacityFrom(settingsFile(t, `{"capacity": "shanks=3,ace=2,g14=0,novox=0"}`), ""); err != nil || c["g14"] != 0 || len(c) != 4 {
|
|
t.Errorf("the starting value: %v, %v", c, err)
|
|
}
|
|
if _, err := capacityFrom(settingsFile(t, `not json`), ""); err == nil {
|
|
t.Error("a file that is not JSON accepted")
|
|
}
|
|
if _, err := capacityFrom(filepath.Join(t.TempDir(), "none"), ""); err == nil {
|
|
t.Error("a settings file that is not there accepted")
|
|
}
|
|
}
|
|
|
|
// With no settings file named (a run outside the module's launch, as the tests do), the capacity is the environment's.
|
|
func TestWithNoSettingsFileTheCapacityIsTheEnvironments(t *testing.T) {
|
|
got, err := capacityFrom("", "ace=2")
|
|
if err != nil || got["ace"] != 2 {
|
|
t.Errorf("capacity %v, %v", got, err)
|
|
}
|
|
}
|