1package command
2
3import (
4	"flag"
5	"reflect"
6	"sort"
7	"testing"
8)
9
10func TestMeta_FlagSet(t *testing.T) {
11	t.Parallel()
12	cases := []struct {
13		Flags    FlagSetFlags
14		Expected []string
15	}{
16		{
17			FlagSetNone,
18			[]string{},
19		},
20		{
21			FlagSetClient,
22			[]string{
23				"address",
24				"no-color",
25				"region",
26				"namespace",
27				"ca-cert",
28				"ca-path",
29				"client-cert",
30				"client-key",
31				"insecure",
32				"tls-server-name",
33				"tls-skip-verify",
34				"token",
35			},
36		},
37	}
38
39	for i, tc := range cases {
40		var m Meta
41		fs := m.FlagSet("foo", tc.Flags)
42
43		actual := make([]string, 0, 0)
44		fs.VisitAll(func(f *flag.Flag) {
45			actual = append(actual, f.Name)
46		})
47		sort.Strings(actual)
48		sort.Strings(tc.Expected)
49
50		if !reflect.DeepEqual(actual, tc.Expected) {
51			t.Fatalf("%d: flags: %#v\n\nExpected: %#v\nGot: %#v",
52				i, tc.Flags, tc.Expected, actual)
53		}
54	}
55}
56