1package flags 2 3import ( 4 "testing" 5) 6 7func TestUnknownFlags(t *testing.T) { 8 var opts = struct { 9 Verbose []bool `short:"v" long:"verbose" description:"Verbose output"` 10 }{} 11 12 args := []string{ 13 "-f", 14 } 15 16 p := NewParser(&opts, 0) 17 args, err := p.ParseArgs(args) 18 19 if err == nil { 20 t.Fatal("Expected error for unknown argument") 21 } 22} 23 24func TestIgnoreUnknownFlags(t *testing.T) { 25 var opts = struct { 26 Verbose []bool `short:"v" long:"verbose" description:"Verbose output"` 27 }{} 28 29 args := []string{ 30 "hello", 31 "world", 32 "-v", 33 "--foo=bar", 34 "--verbose", 35 "-f", 36 } 37 38 p := NewParser(&opts, IgnoreUnknown) 39 args, err := p.ParseArgs(args) 40 41 if err != nil { 42 t.Fatal(err) 43 } 44 45 exargs := []string{ 46 "hello", 47 "world", 48 "--foo=bar", 49 "-f", 50 } 51 52 issame := (len(args) == len(exargs)) 53 54 if issame { 55 for i := 0; i < len(args); i++ { 56 if args[i] != exargs[i] { 57 issame = false 58 break 59 } 60 } 61 } 62 63 if !issame { 64 t.Fatalf("Expected %v but got %v", exargs, args) 65 } 66} 67