mirror-to-gitea/vendor/github.com/onsi/ginkgo/reporters/default_reporter.go
vendor/github.com/onsi/ginkgo/reporters/default_reporter.goRaw
1/*
2Ginkgo's Default Reporter
3
4A number of command line flags are available to tweak Ginkgo's default output.
5
6These are documented [here](http://onsi.github.io/ginkgo/#running_tests)
7*/
8package reporters
9
10import (
11 "github.com/onsi/ginkgo/config"
12 "github.com/onsi/ginkgo/reporters/stenographer"
13 "github.com/onsi/ginkgo/types"
14)
15
16type DefaultReporter struct {
17 config config.DefaultReporterConfigType
18 stenographer stenographer.Stenographer
19 specSummaries []*types.SpecSummary
20}
21
22func NewDefaultReporter(config config.DefaultReporterConfigType, stenographer stenographer.Stenographer) *DefaultReporter {
23 return &DefaultReporter{
24 config: config,
25 stenographer: stenographer,
26 }
27}
28
29func (reporter *DefaultReporter) SpecSuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary) {
30 reporter.stenographer.AnnounceSuite(summary.SuiteDescription, config.RandomSeed, config.RandomizeAllSpecs, reporter.config.Succinct)
31 if config.ParallelTotal > 1 {
32 reporter.stenographer.AnnounceParallelRun(config.ParallelNode, config.ParallelTotal, reporter.config.Succinct)
33 } else {
34 reporter.stenographer.AnnounceNumberOfSpecs(summary.NumberOfSpecsThatWillBeRun, summary.NumberOfTotalSpecs, reporter.config.Succinct)
35 }
36}
37
38func (reporter *DefaultReporter) BeforeSuiteDidRun(setupSummary *types.SetupSummary) {
39 if setupSummary.State != types.SpecStatePassed {
40 reporter.stenographer.AnnounceBeforeSuiteFailure(setupSummary, reporter.config.Succinct, reporter.config.FullTrace)
41 }
42}
43
44func (reporter *DefaultReporter) AfterSuiteDidRun(setupSummary *types.SetupSummary) {
45 if setupSummary.State != types.SpecStatePassed {
46 reporter.stenographer.AnnounceAfterSuiteFailure(setupSummary, reporter.config.Succinct, reporter.config.FullTrace)
47 }
48}
49
50func (reporter *DefaultReporter) SpecWillRun(specSummary *types.SpecSummary) {
51 if reporter.config.Verbose && !reporter.config.Succinct && specSummary.State != types.SpecStatePending && specSummary.State != types.SpecStateSkipped {
52 reporter.stenographer.AnnounceSpecWillRun(specSummary)
53 }
54}
55
56func (reporter *DefaultReporter) SpecDidComplete(specSummary *types.SpecSummary) {
57 switch specSummary.State {
58 case types.SpecStatePassed:
59 if specSummary.IsMeasurement {
60 reporter.stenographer.AnnounceSuccessfulMeasurement(specSummary, reporter.config.Succinct)
61 } else if specSummary.RunTime.Seconds() >= reporter.config.SlowSpecThreshold {
62 reporter.stenographer.AnnounceSuccessfulSlowSpec(specSummary, reporter.config.Succinct)
63 } else {
64 reporter.stenographer.AnnounceSuccessfulSpec(specSummary)
65 if reporter.config.ReportPassed {
66 reporter.stenographer.AnnounceCapturedOutput(specSummary.CapturedOutput)
67 }
68 }
69 case types.SpecStatePending:
70 reporter.stenographer.AnnouncePendingSpec(specSummary, reporter.config.NoisyPendings && !reporter.config.Succinct)
71 case types.SpecStateSkipped:
72 reporter.stenographer.AnnounceSkippedSpec(specSummary, reporter.config.Succinct || !reporter.config.NoisySkippings, reporter.config.FullTrace)
73 case types.SpecStateTimedOut:
74 reporter.stenographer.AnnounceSpecTimedOut(specSummary, reporter.config.Succinct, reporter.config.FullTrace)
75 case types.SpecStatePanicked:
76 reporter.stenographer.AnnounceSpecPanicked(specSummary, reporter.config.Succinct, reporter.config.FullTrace)
77 case types.SpecStateFailed:
78 reporter.stenographer.AnnounceSpecFailed(specSummary, reporter.config.Succinct, reporter.config.FullTrace)
79 }
80
81 reporter.specSummaries = append(reporter.specSummaries, specSummary)
82}
83
84func (reporter *DefaultReporter) SpecSuiteDidEnd(summary *types.SuiteSummary) {
85 reporter.stenographer.SummarizeFailures(reporter.specSummaries)
86 reporter.stenographer.AnnounceSpecRunCompletion(summary, reporter.config.Succinct)
87}