diff --git a/result/overall.go b/result/overall.go index 8f02c2c..357b10e 100644 --- a/result/overall.go +++ b/result/overall.go @@ -196,7 +196,7 @@ func (o *Overall) GetSummary() string { ) for _, sc := range o.PartialResults { - switch sc.state { + switch sc.GetStatus() { case check.Critical: criticals++ case check.Warning: diff --git a/result/overall_test.go b/result/overall_test.go index 916003c..ad3a1fa 100644 --- a/result/overall_test.go +++ b/result/overall_test.go @@ -338,22 +338,19 @@ func TestOverall_withSubchecks_PartialResultStatus(t *testing.T) { var overall Overall subcheck := PartialResult{ - stateSetExplicitely: true, - Output: "Subcheck", + Output: "Subcheck", } subcheck.SetState(check.OK) subsubcheck := PartialResult{ - stateSetExplicitely: true, - Output: "SubSubcheck", + Output: "SubSubcheck", } subsubcheck.SetState(check.Warning) subsubsubcheck := PartialResult{ - stateSetExplicitely: true, - Output: "SubSubSubcheck", + Output: "SubSubSubcheck", } subsubsubcheck.SetState(check.Critical) @@ -445,3 +442,29 @@ func TestDefaultStates3(t *testing.T) { assert.Equal(t, check.Warning, overall.GetStatus()) } + +func TestOverallOutputWithMultiLayerPartials(t *testing.T) { + var overall Overall + + subcheck1 := PartialResult{} + subcheck1.SetState(check.Warning) + + subcheck2 := PartialResult{} + + subcheck2_1 := PartialResult{} + subcheck2_1.SetState(check.OK) + + subcheck2_2 := PartialResult{} + subcheck2_2.SetState(check.Critical) + + subcheck2.AddSubcheck(subcheck2_1) + subcheck2.AddSubcheck(subcheck2_2) + + overall.AddSubcheck(subcheck1) + overall.AddSubcheck(subcheck2) + + resultString := "states: critical=1 warning=1\n\\_ [WARNING] \n\\_ [CRITICAL] \n \\_ [OK] \n \\_ [CRITICAL] \n" + + assert.Equal(t, resultString, overall.GetOutput()) + assert.Equal(t, check.Critical, overall.GetStatus()) +}