diff options
Diffstat (limited to 'syz-verifier/execresult_test.go')
| -rw-r--r-- | syz-verifier/execresult_test.go | 62 |
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) } |
