aboutsummaryrefslogtreecommitdiffstats
path: root/syz-ci/jobs_test.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-05-10 09:35:34 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-05-10 10:31:07 +0200
commit364acbc23b4551c725b9c3a2d26372e4386462b8 (patch)
treef8f2eed115ac5886e42cbaea5e559433b79ce1c3 /syz-ci/jobs_test.go
parent018207ef2f3cc02fc5e20bdc8c43bbe3c6acbf52 (diff)
syz-ci: add tests for test result aggregation
Factor out patch testing result aggregation and add tests.
Diffstat (limited to 'syz-ci/jobs_test.go')
-rw-r--r--syz-ci/jobs_test.go107
1 files changed, 107 insertions, 0 deletions
diff --git a/syz-ci/jobs_test.go b/syz-ci/jobs_test.go
new file mode 100644
index 000000000..73c551a5d
--- /dev/null
+++ b/syz-ci/jobs_test.go
@@ -0,0 +1,107 @@
+// Copyright 2019 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package main
+
+import (
+ "errors"
+ "reflect"
+ "testing"
+
+ "github.com/google/syzkaller/pkg/instance"
+ "github.com/google/syzkaller/pkg/report"
+)
+
+func TestAggregateTestResults(t *testing.T) {
+ tests := []struct {
+ results []error
+ title string
+ err error
+ }{
+ {
+ results: []error{nil, nil, nil},
+ title: "",
+ err: nil,
+ },
+ {
+ results: []error{
+ &instance.CrashError{Report: &report.Report{Title: "title1"}},
+ &instance.CrashError{Report: &report.Report{Title: "title2"}},
+ &instance.CrashError{Report: &report.Report{Title: "title3"}},
+ },
+ title: "title1",
+ err: nil,
+ },
+ {
+ results: []error{
+ nil,
+ &instance.CrashError{Report: &report.Report{Title: "title2"}},
+ nil,
+ },
+ title: "title2",
+ err: nil,
+ },
+ {
+ results: []error{
+ &instance.TestError{Title: "test error1"},
+ &instance.CrashError{Report: &report.Report{Title: "title2"}},
+ &instance.TestError{Title: "test error2"},
+ },
+ title: "title2",
+ err: nil,
+ },
+ {
+ results: []error{
+ &instance.TestError{Title: "test error1"},
+ &instance.TestError{Title: "test error2"},
+ nil,
+ },
+ title: "",
+ err: nil,
+ },
+ {
+ results: []error{
+ &instance.TestError{Title: "test error1"},
+ &instance.TestError{Title: "test error2"},
+ &instance.TestError{Title: "test error3", Output: []byte("output")},
+ },
+ title: "",
+ err: errors.New("test error3\n\noutput"),
+ },
+ {
+ results: []error{
+ errors.New("infra error1"),
+ errors.New("infra error2"),
+ &instance.TestError{Title: "test error", Report: &report.Report{
+ Title: "report title",
+ Report: []byte("report body"),
+ Output: []byte("output"),
+ }},
+ },
+ title: "",
+ err: errors.New("report title\n\nreport body\n\noutput"),
+ },
+ {
+ results: []error{
+ errors.New("infra error1"),
+ errors.New("infra error2"),
+ errors.New("infra error3"),
+ },
+ title: "",
+ err: errors.New("infra error3"),
+ },
+ }
+ for i, test := range tests {
+ rep, err := aggregateTestResults(test.results)
+ if !reflect.DeepEqual(err, test.err) {
+ t.Errorf("test #%v: got err: %q, want: %q", i, err, test.err)
+ }
+ got := ""
+ if rep != nil {
+ got = rep.Title
+ }
+ if got != test.title {
+ t.Errorf("test #%v: got title: %q, want: %q", i, got, test.title)
+ }
+ }
+}