1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package reporting
- import "fmt"
- type problem struct {
- silent bool
- out *Printer
- errors []*AssertionResult
- failures []*AssertionResult
- }
- func (self *problem) BeginStory(story *StoryReport) {}
- func (self *problem) Enter(scope *ScopeReport) {}
- func (self *problem) Report(report *AssertionResult) {
- if report.Error != nil {
- self.errors = append(self.errors, report)
- } else if report.Failure != "" {
- self.failures = append(self.failures, report)
- }
- }
- func (self *problem) Exit() {}
- func (self *problem) EndStory() {
- self.show(self.showErrors, redColor)
- self.show(self.showFailures, yellowColor)
- self.prepareForNextStory()
- }
- func (self *problem) show(display func(), color string) {
- if !self.silent {
- fmt.Print(color)
- }
- display()
- if !self.silent {
- fmt.Print(resetColor)
- }
- self.out.Dedent()
- }
- func (self *problem) showErrors() {
- for i, e := range self.errors {
- if i == 0 {
- self.out.Println("\nErrors:\n")
- self.out.Indent()
- }
- self.out.Println(errorTemplate, e.File, e.Line, e.Error, e.StackTrace)
- }
- }
- func (self *problem) showFailures() {
- for i, f := range self.failures {
- if i == 0 {
- self.out.Println("\nFailures:\n")
- self.out.Indent()
- }
- self.out.Println(failureTemplate, f.File, f.Line, f.Failure, f.StackTrace)
- }
- }
- func (self *problem) Write(content []byte) (written int, err error) {
- return len(content), nil // no-op
- }
- func NewProblemReporter(out *Printer) *problem {
- self := new(problem)
- self.out = out
- self.prepareForNextStory()
- return self
- }
- func NewSilentProblemReporter(out *Printer) *problem {
- self := NewProblemReporter(out)
- self.silent = true
- return self
- }
- func (self *problem) prepareForNextStory() {
- self.errors = []*AssertionResult{}
- self.failures = []*AssertionResult{}
- }
|