diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2019-05-10 09:35:34 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-05-10 10:31:07 +0200 |
| commit | 364acbc23b4551c725b9c3a2d26372e4386462b8 (patch) | |
| tree | f8f2eed115ac5886e42cbaea5e559433b79ce1c3 /syz-ci/jobs_test.go | |
| parent | 018207ef2f3cc02fc5e20bdc8c43bbe3c6acbf52 (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.go | 107 |
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) + } + } +} |
