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