mesh/repo-check head b519c8dde2da merged into trunk a5aa69a4e815 beside mesh-catalog#423@12ff1cfb +1 more — pass: its merge-check.sh passed
mesh/merge-gate head b519c8dde2da merged into trunk a5aa69a4e815 — pass: group feat/the-checker composed: every machine composes with the change as it did …
mesh/delivery delivered
mesh/delivery-group group feat/the-checker merged: every member is merged
39 lines
1.2 KiB
Go
39 lines
1.2 KiB
Go
package check
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/delivery"
|
|
)
|
|
|
|
func TestARunningCheckIsNotStoppedWhenADeliveryStartsToBuild(t *testing.T) { // ADR 0484 clause 12, ADR 0483 clause 4
|
|
ctx := context.Background()
|
|
held := false
|
|
j := &judgeFunc{f: func(_ context.Context, _ *Case, call int) (Outcome, error) {
|
|
if call == 1 {
|
|
held = true // a delivery starts while this check runs
|
|
}
|
|
return Outcome{Verdict: passing()}, nil
|
|
}}
|
|
r := newRig(t, j)
|
|
r.ch.Hold = func() bool { return held }
|
|
r.ch.Candidate(ctx, "feat/x", candidateOf(t, "feat/x", pullOf(repoA, 7, head1)))
|
|
r.ch.Wait()
|
|
if v := r.verdict(t, keyOf(t, "feat/x", candidateOf(t, "feat/x", pullOf(repoA, 7, head1)))); v.State != delivery.VerdictPass {
|
|
t.Errorf("verdict = %+v, want the running check to end as it was", v)
|
|
}
|
|
// A new candidate waits while the plan builds.
|
|
r.ch.Candidate(ctx, "feat/y", candidateOf(t, "feat/y", pullOf(repoA, 8, head2)))
|
|
r.ch.Wait()
|
|
if j.count() != 1 {
|
|
t.Errorf("judged %d times while a delivery builds, want only the one already running", j.count())
|
|
}
|
|
held = false
|
|
r.ch.Reconsider(ctx)
|
|
r.ch.Wait()
|
|
if j.count() != 2 {
|
|
t.Errorf("judged %d times after the delivery ended, want the waiting candidate too", j.count())
|
|
}
|
|
}
|