/
failure_reporter.go
69 lines (62 loc) · 2.01 KB
/
failure_reporter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package test_util
import (
"fmt"
"strings"
"github.com/cloudfoundry/custom-cats-reporters/honeycomb/client"
"github.com/onsi/ginkgo/v2/config"
"github.com/onsi/ginkgo/v2/types"
)
type FailureReporter struct {
client client.Client
}
func NewFailureReporter(client client.Client) FailureReporter {
return FailureReporter{
client: client,
}
}
func (fr FailureReporter) SpecDidComplete(ss *types.SpecSummary) {
if ss.HasFailureState() {
_ = fr.client.SendEvent(
map[string]string{
"State": getTestState(ss.State),
"Description": strings.Join(ss.ComponentTexts, " | "),
"FailureMessage": ss.Failure.Message,
"FailureLocation": ss.Failure.Location.String(),
"FailureOutput": ss.CapturedOutput,
"ComponentCodeLocation": ss.Failure.ComponentCodeLocation.String(),
"RunTimeInSeconds": fmt.Sprintf("%f", ss.RunTime.Seconds()),
},
map[string]string{},
map[string]string{},
)
}
}
func (fr FailureReporter) SuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary) {
}
func (fr FailureReporter) SpecSuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary) {
}
func (fr FailureReporter) BeforeSuiteDidRun(setupSummary *types.SetupSummary) {}
func (fr FailureReporter) SpecWillRun(specSummary *types.SpecSummary) {}
func (fr FailureReporter) AfterSuiteDidRun(setupSummary *types.SetupSummary) {}
func (fr FailureReporter) SpecSuiteDidEnd(summary *types.SuiteSummary) {}
func (fr FailureReporter) SuiteDidEnd(summary *types.SuiteSummary) {}
func getTestState(state types.SpecState) string {
switch state {
case types.SpecStatePassed:
return "passed"
case types.SpecStateFailed:
return "failed"
case types.SpecStatePending:
return "pending"
case types.SpecStateSkipped:
return "skipped"
case types.SpecStatePanicked:
return "panicked"
case types.SpecStateTimedout:
return "timedOut"
case types.SpecStateInvalid:
return "invalid"
default:
panic("unknown spec state")
}
}