summaryrefslogtreecommitdiff
path: root/adapters/gtest/results.go
diff options
context:
space:
mode:
Diffstat (limited to 'adapters/gtest/results.go')
-rw-r--r--adapters/gtest/results.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/adapters/gtest/results.go b/adapters/gtest/results.go
new file mode 100644
index 0000000..f8c8a23
--- /dev/null
+++ b/adapters/gtest/results.go
@@ -0,0 +1,75 @@
+package gtest
+
+import (
+ "bytes"
+ "encoding/json"
+ "io"
+ "log"
+ "time"
+
+ "golang.flu0r1ne.net/planr"
+)
+
+type gFailure struct {
+ Failure string `json:"failure"`
+ Type string `json:"type"`
+}
+
+type gTestsuite struct {
+ Name string `json:"name"`
+ Status string `json:"status"`
+ Result string `json:"result"`
+ Timestamp time.Time `json:"timestamp"`
+ Time string `json:"time"`
+ Classname string `json:"classname"`
+ Failures []gFailure `json:"failures"`
+}
+
+type gTestsuites struct {
+ Name string `json:"name"`
+ Tests int `json:"tests"`
+ Failures int `json:"failures"`
+ Disabled int `json:"disabled"`
+ Errors int `json:"errors"`
+ Timestamp time.Time `json:"timestamp"`
+ Time string `json:"time"`
+ Testsuite []gTestsuite `json:"testsuite"`
+}
+
+type gResults struct {
+ Tests int `json:"tests"`
+ Failures int `json:"failures"`
+ Disabled int `json:"disabled"`
+ Errors int `json:"errors"`
+ Timestamp time.Time `json:"timestamp"`
+ Time string `json:"time"`
+ Name string `json:"name"`
+ Testsuites []gTestsuites `json:"testsuites"`
+}
+
+func decodeResults(r io.Reader) []planr.TestResult {
+ var results gResults
+ buf := bytes.Buffer{}
+
+ if _, err := buf.ReadFrom(r); err != nil {
+ log.Fatal(err)
+ }
+
+ if err := json.Unmarshal(buf.Bytes(), &results); err != nil {
+ log.Fatal(err)
+ }
+
+ decoded := make([]planr.TestResult, 0)
+ for _, suite := range results.Testsuites {
+ for _, test := range suite.Testsuite {
+ n := len(test.Failures)
+
+ decoded = append(decoded, planr.TestResult {
+ Id: suite.Name + "_" + test.Name,
+ Pass: n == 0,
+ })
+ }
+ }
+
+ return decoded
+}