58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// The build agent and the toolchain images are gone (novox/hq ADR 0524 §5, issue 1295 and E6 of milestone R4g): no text a module
|
|
// can show names them. Where the word stands for a reason that is another lane's or still waits for its change, buildagent-allowed
|
|
// names the module's directory with that reason and the date it is dated from; the list only shrinks: a directory on it that no
|
|
// longer names the word is refused, so the line is taken out.
|
|
var gone = []string{"build-agent", "build agent", "toolchain image"}
|
|
|
|
func allowedModules(t *testing.T) map[string]string {
|
|
t.Helper()
|
|
raw, err := os.ReadFile("buildagent-allowed")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
out := map[string]string{}
|
|
for _, line := range strings.Split(string(raw), "\n") {
|
|
entry, why, _ := strings.Cut(line, "#")
|
|
if entry = strings.TrimSpace(entry); entry != "" && !strings.HasPrefix(line, "#") {
|
|
if strings.TrimSpace(why) == "" {
|
|
t.Fatalf("%q is allowed without a reason", entry)
|
|
}
|
|
out[entry] = strings.TrimSpace(why)
|
|
}
|
|
}
|
|
return out
|
|
}
|
|
|
|
func TestNoTextOfTheCatalogueNamesTheBuildAgentOutsideTheModulesAllowed(t *testing.T) {
|
|
texts, _, err := collect("../..")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
allowed := allowedModules(t)
|
|
seen := map[string]bool{}
|
|
for _, f := range check(gone, texts) {
|
|
module := f
|
|
if rest, ok := strings.CutPrefix(f, "modules/"); ok {
|
|
module = "modules/" + strings.SplitN(rest, "/", 2)[0]
|
|
}
|
|
if _, ok := allowed[module]; ok {
|
|
seen[module] = true
|
|
continue
|
|
}
|
|
t.Errorf("%s (the build agent and the toolchain images are gone: say what stands in their place)", f)
|
|
}
|
|
for module, why := range allowed {
|
|
if !seen[module] {
|
|
t.Errorf("buildagent-allowed names %s (%s), which names the word no more: take the line out, so it cannot come back", module, why)
|
|
}
|
|
}
|
|
}
|