| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | package reportingimport "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)	}}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{}}
 |