diff options
Diffstat (limited to 'src/mongo/gotools/vendor/src/github.com/smartystreets/goconvey/convey/reporting/statistics.go')
-rw-r--r-- | src/mongo/gotools/vendor/src/github.com/smartystreets/goconvey/convey/reporting/statistics.go | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/mongo/gotools/vendor/src/github.com/smartystreets/goconvey/convey/reporting/statistics.go b/src/mongo/gotools/vendor/src/github.com/smartystreets/goconvey/convey/reporting/statistics.go new file mode 100644 index 00000000000..28e1d2071d4 --- /dev/null +++ b/src/mongo/gotools/vendor/src/github.com/smartystreets/goconvey/convey/reporting/statistics.go @@ -0,0 +1,89 @@ +package reporting + +import "fmt" + +func (self *statistics) BeginStory(story *StoryReport) {} + +func (self *statistics) Enter(scope *ScopeReport) {} + +func (self *statistics) Report(report *AssertionResult) { + if !self.failing && report.Failure != "" { + self.failing = true + } + if !self.erroring && report.Error != nil { + self.erroring = true + } + if report.Skipped { + self.skipped += 1 + } else { + self.total++ + } +} + +func (self *statistics) Exit() {} + +func (self *statistics) EndStory() { + if !self.suppressed { + self.PrintSummary() + } +} + +func (self *statistics) Suppress() { + self.suppressed = true +} + +func (self *statistics) PrintSummary() { + self.reportAssertions() + self.reportSkippedSections() + self.completeReport() +} +func (self *statistics) reportAssertions() { + self.decideColor() + self.out.Print("\n%d total %s", self.total, plural("assertion", self.total)) +} +func (self *statistics) decideColor() { + if self.failing && !self.erroring { + fmt.Print(yellowColor) + } else if self.erroring { + fmt.Print(redColor) + } else { + fmt.Print(greenColor) + } +} +func (self *statistics) reportSkippedSections() { + if self.skipped > 0 { + fmt.Print(yellowColor) + self.out.Print(" (one or more sections skipped)") + } +} +func (self *statistics) completeReport() { + fmt.Print(resetColor) + self.out.Print("\n") + self.out.Print("\n") +} + +func (self *statistics) Write(content []byte) (written int, err error) { + return len(content), nil // no-op +} + +func NewStatisticsReporter(out *Printer) *statistics { + self := statistics{} + self.out = out + return &self +} + +type statistics struct { + out *Printer + total int + failing bool + erroring bool + skipped int + suppressed bool +} + +func plural(word string, count int) string { + if count == 1 { + return word + } + return word + "s" +} |