87 lines
4.3 KiB
Go
87 lines
4.3 KiB
Go
package check
|
|
|
|
import (
|
|
"git.novox.be/novox/mesh-delivery/sdk/buildstep"
|
|
)
|
|
|
|
// The shapes of what the build modules' steps answer, as their code writes them (mesh-catalog modules/mesh-build-go
|
|
// cmd/mesh-build-go levels.go TestResult, digest.go DigestResult, fetch.go FetchResult; modules/mesh-build-node
|
|
// cmd/mesh-build-node check.go TestResult, fetch.go FetchResult) with the fields the fetch step adds for a merge (ADR 0484
|
|
// clause 3). Only the fields the checker reads are named; the rest is ignored.
|
|
|
|
// Fetched is the answer of a build module's fetch step, whole: the Delivery SDK's FetchAnswer, which a check answer keeps
|
|
// (B2g; the build seats' part FetchAnswer): the workspace, the merge preview with its conflicts, changed paths, programs and
|
|
// trees. A conflict is an answer.
|
|
type Fetched = buildstep.FetchAnswer
|
|
|
|
// GoPackage is one package of a Go test result.
|
|
type GoPackage struct {
|
|
Dir string `json:"dir"`
|
|
Package string `json:"package"`
|
|
Passed bool `json:"passed"`
|
|
Elapsed float64 `json:"elapsed"`
|
|
Tests int `json:"tests"`
|
|
NoTests bool `json:"no_tests,omitempty"`
|
|
// Skipped is how many of the package's tests skipped; an older build module names none.
|
|
Skipped int `json:"skipped,omitempty"`
|
|
}
|
|
|
|
// Failure is a test that failed, or a package that failed with no test to name: the build modules' failure contract
|
|
// (buildstep.Failure, issue 1901), its cause never empty and never a passing line from a build module that keeps it.
|
|
type Failure = buildstep.Failure
|
|
|
|
// TestTime is one test and the seconds it took.
|
|
type TestTime struct {
|
|
Package string `json:"package"`
|
|
Test string `json:"test"`
|
|
Elapsed float64 `json:"elapsed"`
|
|
}
|
|
|
|
// Tested is the answer of a test step of either build module (the Go one names packages and counts tests; the Node one
|
|
// names the package directory as Module and counts none).
|
|
type Tested struct {
|
|
Level string `json:"level"`
|
|
Module string `json:"module,omitempty"`
|
|
Passed bool `json:"passed"`
|
|
Why string `json:"why,omitempty"`
|
|
NoTests bool `json:"no_tests,omitempty"`
|
|
Tests int `json:"tests"`
|
|
Skipped int `json:"skipped"`
|
|
Packages []GoPackage `json:"packages,omitempty"`
|
|
Elapsed float64 `json:"elapsed"`
|
|
Setup float64 `json:"setup,omitempty"`
|
|
// Lint is the unit level's gofmt and go vet time, before its tests (mesh-build-go, ADR 0529 §1).
|
|
Lint float64 `json:"lint,omitempty"`
|
|
Bound float64 `json:"bound"`
|
|
SetupBound float64 `json:"setup_bound,omitempty"`
|
|
Slowest []TestTime `json:"slowest,omitempty"`
|
|
Failed []Failure `json:"failed,omitempty"`
|
|
OverBound bool `json:"over_bound"`
|
|
OverWhich string `json:"over_which,omitempty"`
|
|
// JudgedBy is the program that ran the step (ADR 0535 §5): "installed", or "candidate <merge commit>" under runner
|
|
// workspace; absent from a build module that does not take the runner.
|
|
JudgedBy string `json:"judged_by,omitempty"`
|
|
// By is the build module that answered and the SDK it was built with (buildstep.By); absent from a build module from
|
|
// before the failure contract.
|
|
By string `json:"by,omitempty"`
|
|
// OutOfStep are the generated files the step's regenerate-and-compare found out of step with their seat definitions,
|
|
// each a repository-relative path (design 26; the build modules' compare step, mesh-catalog CAT-BG5 and CAT-BN2):
|
|
// the checker names them in its verdict event. Absent from a build module that does not compare.
|
|
OutOfStep []string `json:"out-of-step,omitempty"`
|
|
}
|
|
|
|
// Digested is the answer of the Go build module's digest step: one digest per package that has tests at the level, by import
|
|
// path.
|
|
type Digested struct {
|
|
// Beside are the lines `<owner/repo> <commit>` of the siblings the digest folded in (DigestVersion 3, lead decision L5),
|
|
// sorted; absent when the workspace has none or the build module folds none in.
|
|
Beside []string `json:"beside,omitempty"`
|
|
Level string `json:"level"`
|
|
Packages map[string]string `json:"packages"`
|
|
WithoutTests []string `json:"without_tests,omitempty"`
|
|
// JudgedBy is the program that ran the digest, as Tested.JudgedBy says.
|
|
JudgedBy string `json:"judged_by,omitempty"`
|
|
// Needs are the packages whose tests need something of the node at this level (issue 890).
|
|
Needs []buildstep.PackageNeeds `json:"needs,omitempty"`
|
|
}
|