Skip to content

Commit a5b478d

Browse files
refactor: failure propagation in reports (#1960) (#1961)
Signed-off-by: Charles-Edouard Brétéché <[email protected]> Co-authored-by: Charles-Edouard Brétéché <[email protected]>
1 parent f36ca88 commit a5b478d

File tree

4 files changed

+20
-11
lines changed

4 files changed

+20
-11
lines changed

pkg/model/report.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,17 @@ type TestReport struct {
2828
EndTime time.Time
2929
Namespace string
3030
Skipped bool
31+
Failed bool
3132
Steps []StepReport
3233
}
3334

3435
func (r *TestReport) Add(report StepReport) {
3536
if report.Name == "" {
3637
report.Name = fmt.Sprintf("step %d", len(r.Steps)+1)
3738
}
39+
if report.Failed {
40+
r.Failed = true
41+
}
3842
r.Steps = append(r.Steps, report)
3943
}
4044

@@ -50,12 +54,15 @@ func (r *StepReport) Add(report OperationReport) {
5054
if report.Name == "" {
5155
report.Name = fmt.Sprintf("operation %d", len(r.Operations)+1)
5256
}
57+
if report.Err != nil {
58+
r.Failed = true
59+
}
5360
r.Operations = append(r.Operations, report)
5461
}
5562

5663
type OperationReport struct {
5764
Name string
5865
StartTime time.Time
5966
EndTime time.Time
60-
Failed bool
67+
Err error
6168
}

pkg/report/junit.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,22 @@ func addTestSuite(testSuites *junit.Testsuites, report model.TestReport) {
3636
}
3737
suite.SetTimestamp(report.StartTime)
3838
suite.AddProperty("namespace", report.Namespace)
39+
if report.Skipped {
40+
suite.Skipped = suite.Skipped + 1
41+
}
3942
for _, report := range report.Steps {
4043
testCase := junit.Testcase{
4144
Name: report.Name,
4245
Time: durationInSecondsString(report.StartTime, report.EndTime),
4346
}
44-
// if report.Skipped {
45-
// testCase.Skipped = &junit.Result{}
46-
// }
4747
if report.Failed {
4848
testCase.Failure = &junit.Result{}
49+
for _, report := range report.Operations {
50+
if report.Err != nil {
51+
testCase.Failure.Message = report.Err.Error()
52+
break
53+
}
54+
}
4955
}
5056
suite.AddTestcase(testCase)
5157
}

pkg/runner/processors/operation.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,16 @@ func newOperation(
2929
}
3030
}
3131

32-
func (o operation) execute(ctx context.Context, tc engine.Context, stepReport *model.StepReport) (outputs.Outputs, error) {
32+
func (o operation) execute(ctx context.Context, tc engine.Context, stepReport *model.StepReport) (_ outputs.Outputs, err error) {
3333
report := model.OperationReport{
3434
StartTime: time.Now(),
3535
}
3636
defer func() {
3737
report.EndTime = time.Now()
38+
report.Err = err
3839
stepReport.Add(report)
3940
}()
40-
tc = tc.WithBinding(ctx, "operation", o.info)
41-
operation, timeout, tc, err := o.operation(ctx, tc)
42-
if err != nil {
41+
if operation, timeout, tc, err := o.operation(ctx, tc.WithBinding(ctx, "operation", o.info)); err != nil {
4342
logging.Log(ctx, logging.Internal, logging.ErrorStatus, color.BoldRed, logging.ErrSection(err))
4443
return nil, err
4544
} else {

pkg/runner/processors/step.go

-3
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,6 @@ func (p *stepProcessor) Run(ctx context.Context, namespacer namespacer.Namespace
9999
}
100100
defer func() {
101101
report.EndTime = time.Now()
102-
if t.Failed() {
103-
report.Failed = true
104-
}
105102
p.report.Add(report)
106103
}()
107104
logger := logging.FromContext(ctx)

0 commit comments

Comments
 (0)