watchpr: arm the conflict rule on a new merge computation
A mergeable=false baseline meant a conflict could never be reported, since Gitea sends false while it recomputes after a push. Arm on a head or base SHA change as well as on a mergeable poll, break the conflict run on unknown and failed polls, and print the baseline with the conditions it suppresses.
This commit is contained in:
@@ -182,3 +182,33 @@ func TestDescribeFailureNamesTheCause(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// A watch started against an already conflicted or CI-red PR sends no alert for
|
||||
// either, so the baseline line has to say that is what it is doing: before this,
|
||||
// such a run printed nothing in either direction.
|
||||
func TestBaselineLineNamesSuppressedConditions(t *testing.T) {
|
||||
st := agent.PRState{
|
||||
Ref: agent.PRRef{Owner: "unkin", Repo: "repo", Number: 7},
|
||||
State: "open",
|
||||
Mergeable: agent.MergeNo,
|
||||
CIStatus: "failure",
|
||||
HeadSHA: "cafebabecafebabe",
|
||||
BaseSHA: "deadbeefdeadbeef",
|
||||
}
|
||||
got := baselineLine(st)
|
||||
for _, want := range []string{
|
||||
"unkin/repo#7", "mergeable=false", "ci=failure", "head=cafebabe", "base=deadbeef",
|
||||
"already non-mergeable", "CI already failure", "not alerting",
|
||||
} {
|
||||
if !strings.Contains(got, want) {
|
||||
t.Errorf("baselineLine = %q, want it to mention %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
clean := st
|
||||
clean.Mergeable = agent.MergeYes
|
||||
clean.CIStatus = "success"
|
||||
if got := baselineLine(clean); strings.Contains(got, "not alerting") {
|
||||
t.Errorf("baselineLine = %q, want no suppression note for a clean baseline", got)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user