flags_test.go 786 Bytes
Newer Older
1 2 3 4 5 6
package flags

import (
	"testing"

	"github.com/stretchr/testify/require"
7
	"github.com/urfave/cli/v2"
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
)

// TestOptionalFlagsDontSetRequired asserts that all flags deemed optional set
// the Required field to false.
func TestOptionalFlagsDontSetRequired(t *testing.T) {
	for _, flag := range optionalFlags {
		reqFlag, ok := flag.(cli.RequiredFlag)
		require.True(t, ok)
		require.False(t, reqFlag.IsRequired())
	}
}

// TestUniqueFlags asserts that all flag names are unique, to avoid accidental conflicts between the many flags.
func TestUniqueFlags(t *testing.T) {
	seenCLI := make(map[string]struct{})
	for _, flag := range Flags {
24
		name := flag.Names()[0]
25 26 27 28 29 30 31
		if _, ok := seenCLI[name]; ok {
			t.Errorf("duplicate flag %s", name)
			continue
		}
		seenCLI[name] = struct{}{}
	}
}