aboutsummaryrefslogtreecommitdiffstats
path: root/executor/executor_windows.h
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-12-07 14:00:33 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-07 14:01:26 +0100
commit4f39cef6c2104a54ad45ac29ade31d38905452e0 (patch)
tree40dc4dbbb73fefd008ad52ad4b4aad4fd7a7974e /executor/executor_windows.h
parenteada53b810e964b4a71c20ab023020f281855fe9 (diff)
tools/syz-trace2syz/proggen: convert tests to table format
This has number of advantages: 1. Tests are readable and writable. The current checks [1] are neither. 2. Tests are much more compact. 3. Tests verify all aspects rather than just 1 aspect of the resulting program. 4. Tests are much less fragile. 5. Any diffs in the results will be more clearly visible. [1] switch a := p.Calls[1].Args[0].(type) { case *prog.ResultArg: if a.Res != p.Calls[0].Ret { switch a := p.Calls[1].Args[0].(type) { case *prog.ResultArg: pipeSecondFd := p.Calls[0].Args[0].(*prog.PointerArg).Res.(*prog.GroupArg).Inner[1] if a.Res != pipeSecondFd { write := p.Calls[len(p.Calls)-2] inotifyRmWatch := p.Calls[len(p.Calls)-1] switch a := write.Args[0].Type().(type) { case *prog.ResourceType: if a.TypeName != "fd" { t.Fatalf("expected first argument of write to have type fd, got: %s", a.TypeName) } default: t.Fatalf("first argument of write is not resource type: %s", a.Name()) } switch a := inotifyRmWatch.Args[1].(type) { case *prog.ResultArg: b := a.Type().(*prog.ResourceType) if b.TypeName != "inotifydesc" { t.Fatalf("expected second argument of inotify_rm_watch to have type inoitfydesc, got: %s", b.TypeName) } if a.Res != p.Calls[2].Ret { t.Fatalf("inotify_rm_watch's second argument should match the result of inotify_add_watch.") } } sockaddr, ok := a.(*prog.PointerArg).Res.(*prog.GroupArg) if !ok { t.Fatalf("%s", a.Type().Name()) } ipv4Addr, ok := sockaddr.Inner[2].(*prog.UnionArg) if !ok { t.Fatalf("expected 3rd argument to be unionArg, got %s", sockaddr.Inner[2].Type().Name()) } optName := ipv4Addr.Option.Type().FieldName() if !strings.Contains(optName, "rand") { t.Fatalf("expected ip option to be random opt, got: %s", optName) } ip, ok := ipv4Addr.Option.(*prog.ConstArg) if !ok { t.Fatalf("ipv4Addr option is not IntType") } if ip.Val != expectedIp { t.Fatalf("parsed != expected, %d != %d", ip.Val, expectedIp) }
Diffstat (limited to 'executor/executor_windows.h')
0 files changed, 0 insertions, 0 deletions