/usr/share/gocode/src/github.com/smartystreets/goconvey/reporting/json.go is in golang-github-smartystreets-goconvey-dev 1.5.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | // TODO: under unit test
package reporting
import (
"bytes"
"encoding/json"
"strings"
"github.com/smartystreets/goconvey/printing"
)
func (self *JsonReporter) BeginStory(story *StoryReport) {}
func (self *JsonReporter) Enter(scope *ScopeReport) {
if _, found := self.index[scope.ID]; !found {
self.registerScope(scope)
}
self.current = self.index[scope.ID]
self.depth++
}
func (self *JsonReporter) registerScope(scope *ScopeReport) {
next := newScopeResult(scope.Title, self.depth, scope.File, scope.Line)
self.scopes = append(self.scopes, next)
self.index[scope.ID] = next
}
func (self *JsonReporter) Report(report *AssertionResult) {
self.current.Assertions = append(self.current.Assertions, report)
}
func (self *JsonReporter) Exit() {
self.depth--
}
func (self *JsonReporter) EndStory() {
self.report()
self.reset()
}
func (self *JsonReporter) report() {
self.out.Print(OpenJson + "\n")
scopes := []string{}
for _, scope := range self.scopes {
serialized, err := json.Marshal(scope)
if err != nil {
self.out.Println(jsonMarshalFailure)
panic(err)
}
var buffer bytes.Buffer
json.Indent(&buffer, serialized, "", " ")
scopes = append(scopes, buffer.String())
}
self.out.Print(strings.Join(scopes, ",") + ",\n")
self.out.Print(CloseJson + "\n")
}
func (self *JsonReporter) reset() {
self.scopes = []*ScopeResult{}
self.index = map[string]*ScopeResult{}
self.depth = 0
}
func NewJsonReporter(out *printing.Printer) *JsonReporter {
self := &JsonReporter{}
self.out = out
self.reset()
return self
}
type JsonReporter struct {
out *printing.Printer
current *ScopeResult
index map[string]*ScopeResult
scopes []*ScopeResult
depth int
}
const OpenJson = ">>>>>" // "⌦"
const CloseJson = "<<<<<" // "⌫"
const jsonMarshalFailure = `
GOCONVEY_JSON_MARSHALL_FAILURE: There was an error when attempting to convert test results to JSON.
Please file a bug report and reference the code that caused this failure if possible.
Here's the panic:
`
|