| // Copyright 2020 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| package fuzz | |
| import ( | |
| "strings" | |
| "testing" | |
| "github.com/google/go-cmp/cmp" | |
| ) | |
| func TestParseArgsErrors(t *testing.T) { | |
| // Check invalid commands and too few/many args | |
| testCases := map[string]bool{ | |
| "": false, | |
| "invalid": false, | |
| "version": true, | |
| "version extra": false, | |
| "stop_instance": false, | |
| "stop_instance -handle handle": true, | |
| "stop_instance -handle handle extra": false, | |
| } | |
| for cmdline, shouldBeValid := range testCases { | |
| _, err := ParseArgs(strings.Split(cmdline, " ")) | |
| if (err == nil) != shouldBeValid { | |
| t.Fatalf("unexpected result parsing %q: %s", cmdline, err) | |
| } | |
| } | |
| } | |
| func TestParseArgs(t *testing.T) { | |
| // Check that an example APICommand is constructed as expected | |
| args := []string{"run_fuzzer", "-handle", "handle", "-fuzzer", "fuzzer", | |
| "--", "extra1", "extra2"} | |
| got, err := ParseArgs(args) | |
| if err != nil { | |
| t.Fatalf("unexpected parsing failure: %s", err) | |
| } | |
| want := &APICommand{ | |
| name: RunFuzzer, | |
| handle: "handle", | |
| fuzzer: "fuzzer", | |
| extraArgs: []string{"extra1", "extra2"}, | |
| } | |
| if diff := cmp.Diff(want, got, cmp.AllowUnexported(APICommand{})); diff != "" { | |
| t.Fatalf("ParseArgs mismatch (-want +got):\n%s", diff) | |
| } | |
| } |