47 lines
1.8 KiB
Go
47 lines
1.8 KiB
Go
package builder
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
// ownCheckOf runs a repository's own check whose script prints a captured output and fails, as the build
|
|
// seat runs it, and answers the layer and every line it said in the build's log.
|
|
|
|
func captured(t *testing.T, name string) string {
|
|
t.Helper()
|
|
body, err := os.ReadFile(filepath.Join("testdata", "issue460", name))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return string(body)
|
|
}
|
|
|
|
// **novox/hq issue 460**: mesh-controller #218's check failed with "FAIL <package> 268.072s" and no test
|
|
// name: the package's own logs, printed after its `--- FAIL:` lines, pushed them out of the last 200 lines,
|
|
// which was all the summary was named from. The first failing test is named, and the others after it,
|
|
// however much came after them.
|
|
|
|
// One -race run of every package: the first failure is the earliest, not the last within the tail.
|
|
|
|
// A package that does not build is named by its error, not by its bare "[build failed]".
|
|
|
|
// The whole of what the check printed is in the build's log, line by line — where before none of it was.
|
|
|
|
// What failed is kept whole in the verdict: each --- FAIL with its messages, a panic with its first frames,
|
|
// a data race report from rule to rule — and none of the log lines around them.
|
|
|
|
// A run that fails everywhere is bounded in what it keeps, and what it keeps survives the controller's cut
|
|
// of a report to its last 60 KiB, said at the report's end.
|
|
|
|
// A passing check says nothing of what failed.
|
|
func TestAPassingCheckReportsAsBefore(t *testing.T) {
|
|
if got := withWhatFailed("ok\tx\t1s", &Layer{Verdict: "pass"}); got != "ok\tx\t1s" {
|
|
t.Errorf("a passing report became %q", got)
|
|
}
|
|
if got := withWhatFailed("r", nil); got != "r" {
|
|
t.Errorf("no repository layer became %q", got)
|
|
}
|
|
}
|