json output mode for test results

This commit is contained in:
Aaron Meihm 2015-08-07 11:06:03 -05:00
Родитель 9e2d1d0686
Коммит 87464b0084
2 изменённых файлов: 14 добавлений и 0 удалений

Просмотреть файл

@ -8,6 +8,7 @@
package scribe
import (
"encoding/json"
"fmt"
"strings"
)
@ -89,6 +90,15 @@ func (r *TestResult) SingleLineResults() []string {
return lns
}
// A helper function to convert TestResult into a JSON string.
func (r *TestResult) JSON() string {
buf, err := json.Marshal(r)
if err != nil {
fmt.Sprintf("JSON encoding error: %v", err)
}
return string(buf)
}
// A helper function to convert TestResult into a human readable result
// suitable for display.
func (r *TestResult) String() string {

Просмотреть файл

@ -27,6 +27,7 @@ func main() {
testHooks bool
showVersion bool
lineFmt bool
jsonFmt bool
)
err := scribe.Bootstrap()
@ -39,6 +40,7 @@ func main() {
flag.BoolVar(&expectedExit, "e", false, "exit if result is unexpected")
flag.StringVar(&docpath, "f", "", "path to document")
flag.BoolVar(&lineFmt, "l", false, "output one result per line")
flag.BoolVar(&jsonFmt, "j", false, "JSON output mode")
flag.BoolVar(&testHooks, "t", false, "enable test hooks")
flag.BoolVar(&showVersion, "v", false, "show version")
flag.Parse()
@ -95,6 +97,8 @@ func main() {
for _, x := range tr.SingleLineResults() {
fmt.Fprintf(os.Stdout, "%v\n", x)
}
} else if jsonFmt {
fmt.Fprintf(os.Stdout, "%v\n", tr.JSON())
} else {
fmt.Fprintf(os.Stdout, "%v\n", tr.String())
}