aboutsummaryrefslogtreecommitdiffstats
path: root/syz-verifier/execresult_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'syz-verifier/execresult_test.go')
-rw-r--r--syz-verifier/execresult_test.go62
1 files changed, 59 insertions, 3 deletions
diff --git a/syz-verifier/execresult_test.go b/syz-verifier/execresult_test.go
index aae7bcdac..bddd91042 100644
--- a/syz-verifier/execresult_test.go
+++ b/syz-verifier/execresult_test.go
@@ -10,7 +10,62 @@ import (
"github.com/google/syzkaller/prog"
)
-func TestVerify(t *testing.T) {
+func TestIsEqual(t *testing.T) {
+ tests := []struct {
+ name string
+ res []*ExecResult
+ want bool
+ }{
+ {
+ name: "only crashes",
+ res: []*ExecResult{
+ makeExecResultCrashed(1),
+ makeExecResultCrashed(4),
+ },
+ want: false,
+ },
+ {
+ name: "mismatch because result and crash",
+ res: []*ExecResult{
+ makeExecResultCrashed(1),
+ makeExecResult(2, []int{11, 33, 22}, []int{1, 3, 3}...),
+ },
+ want: false,
+ },
+ {
+ name: "mismatches because of diffent length",
+ res: []*ExecResult{
+ makeExecResult(2, []int{11, 33}, []int{1, 3}...),
+ makeExecResult(4, []int{11, 33, 22}, []int{1, 3, 3}...)},
+ want: false,
+ },
+ {
+ name: "mismatches not found",
+ res: []*ExecResult{
+ makeExecResult(2, []int{11, 33, 22}, []int{1, 3, 3}...),
+ makeExecResult(4, []int{11, 33, 22}, []int{1, 3, 3}...)},
+ want: true,
+ },
+ {
+ name: "mismatches found in results",
+ res: []*ExecResult{
+ makeExecResult(1, []int{1, 3, 2}, []int{4, 7, 7}...),
+ makeExecResult(4, []int{1, 3, 5}, []int{4, 7, 3}...),
+ },
+ want: false,
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ got := test.res[0].IsEqual(test.res[1])
+ if diff := cmp.Diff(test.want, got); diff != "" {
+ t.Errorf("ExecResult.IsEqual failure (-want +got):\n%s", diff)
+ }
+ })
+ }
+}
+
+func TestCompareResults(t *testing.T) {
p := "breaks_returns()\n" +
"minimize$0(0x1, 0x1)\n" +
"test$res0()\n"
@@ -54,6 +109,7 @@ func TestVerify(t *testing.T) {
4: returnState(22, 3)},
Mismatch: true},
},
+ Mismatch: true,
},
},
{
@@ -76,6 +132,7 @@ func TestVerify(t *testing.T) {
{Call: "minimize$0", States: map[int]ReturnState{1: {Errno: 3, Flags: 7}, 4: {Errno: 3, Flags: 7}}},
{Call: "test$res0", States: map[int]ReturnState{1: {Errno: 2, Flags: 7}, 4: {Errno: 5, Flags: 3}}, Mismatch: true},
},
+ Mismatch: true,
},
}}
@@ -86,8 +143,7 @@ func TestVerify(t *testing.T) {
if err != nil {
t.Fatalf("failed to deserialise test program: %v", err)
}
- stats := emptyTestStats()
- got := Verify(test.res, prog, stats)
+ got := CompareResults(test.res, prog)
if diff := cmp.Diff(test.wantReport, got); diff != "" {
t.Errorf("Verify report mismatch (-want +got):\n%s", diff)
}