517 lines
13 KiB
Go
517 lines
13 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package flags
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func Test_HideGroupName(t *testing.T) {
|
|
s := testSet()
|
|
g, err := s.NewGroup("test")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error creating group: %s", err)
|
|
}
|
|
if !g.showGroupName {
|
|
t.Fatalf("invalid show group name - true != false")
|
|
}
|
|
HideGroupName()(g)
|
|
if g.showGroupName {
|
|
t.Errorf("invalid show group name - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_HideGroup(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
if g.hidden {
|
|
t.Errorf("expected default group to not be hidden")
|
|
}
|
|
g.hidden = false
|
|
HideGroup()(g)
|
|
if !g.hidden {
|
|
t.Errorf("invalid hidden - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_newGroup(t *testing.T) {
|
|
s := testSet()
|
|
g := newGroup(s, "test-group")
|
|
if g.name != "test-group" {
|
|
t.Errorf("invalid name - test-group != %s", g.name)
|
|
}
|
|
if g.set != s {
|
|
t.Errorf("invalid set - %#v != %#v", s, g.set)
|
|
}
|
|
found := false
|
|
for _, grp := range s.groups {
|
|
if grp == g {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
t.Errorf("group not found within set")
|
|
}
|
|
}
|
|
|
|
func Test_Group_Add(t *testing.T) {
|
|
sSrc := testSet()
|
|
sDst := testSet()
|
|
|
|
f := sSrc.DefaultGroup().Bool("test-flag")
|
|
if err := sDst.DefaultGroup().Add(f); err != nil {
|
|
t.Fatalf("failed to add flag to group: %s", err)
|
|
}
|
|
if len(sDst.Flags()) != 1 {
|
|
t.Fatalf("invalid flag length - 1 != %d", len(sDst.Flags()))
|
|
}
|
|
if len(sSrc.Flags()) != 0 {
|
|
t.Errorf("invalid flag length - 0 != %d", len(sSrc.Flags()))
|
|
}
|
|
if sDst.Flags()[0] != f {
|
|
t.Errorf("invalid flags - %#v != %#v", sDst.Flags()[0], f)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Name(t *testing.T) {
|
|
s := testSet()
|
|
g, err := s.NewGroup("name-test")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error creating group: %s", err)
|
|
}
|
|
if g.Name() != "name-test" {
|
|
t.Errorf("invalid name - name-test != %s", g.Name())
|
|
}
|
|
}
|
|
|
|
func Test_Group_Flags(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().Bool("test-bool")
|
|
if len(s.DefaultGroup().Flags()) != 1 {
|
|
t.Fatalf("invalid flags length - 1 != %d", len(s.DefaultGroup().Flags()))
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid flags - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
}
|
|
|
|
func Test_Group_Bool(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().Bool("test-bool")
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != BooleanType {
|
|
t.Errorf("invalid flag type - %s != %s", BooleanType.String(), f.kind.String())
|
|
}
|
|
}
|
|
|
|
func Test_Group_BoolVar(t *testing.T) {
|
|
s := testSet()
|
|
var val bool
|
|
f := s.DefaultGroup().BoolVar("test-bool", &val)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != BooleanType {
|
|
t.Errorf("invalid flag type - %s != %s", BooleanType.String(), f.kind.String())
|
|
}
|
|
if !f.ptr {
|
|
t.Errorf("invalid flag ptr - true != false")
|
|
}
|
|
if f.value != &val {
|
|
t.Errorf("invalid flag value - %p != %p", &val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Group_String(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().String("test-string")
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != StringType {
|
|
t.Errorf("invalid flag type - %s != %s", StringType.String(), f.kind.String())
|
|
}
|
|
}
|
|
|
|
func Test_Group_StringVar(t *testing.T) {
|
|
s := testSet()
|
|
var val string
|
|
f := s.DefaultGroup().StringVar("test-string", &val)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != StringType {
|
|
t.Errorf("invalid flag type - %s != %s", StringType.String(), f.kind.String())
|
|
}
|
|
if !f.ptr {
|
|
t.Errorf("invalid flag ptr - true != false")
|
|
}
|
|
if f.value != &val {
|
|
t.Errorf("invalid flag value - %p != %p", &val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Array(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().Array("test-string", StringType)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != ArrayType {
|
|
t.Errorf("invalid flag type - %s != %s", ArrayType.String(), f.kind.String())
|
|
}
|
|
if f.subkind != StringType {
|
|
t.Errorf("invalid flag sub-type - %s != %s", StringType.String(), f.subkind.String())
|
|
}
|
|
}
|
|
|
|
func Test_Group_ArrayVar(t *testing.T) {
|
|
s := testSet()
|
|
val := []string{}
|
|
f := s.DefaultGroup().ArrayVar("test-string", StringType, &val)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != ArrayType {
|
|
t.Errorf("invalid flag type - %s != %s", ArrayType.String(), f.kind.String())
|
|
}
|
|
if f.subkind != StringType {
|
|
t.Errorf("invalid flag sub-type - %s != %s", StringType, f.subkind.String())
|
|
}
|
|
if !f.ptr {
|
|
t.Errorf("invalid flag ptr - true != false")
|
|
}
|
|
if f.value != &val {
|
|
t.Errorf("invalid flag value - %p != %p", &val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Float(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().Float("test-float")
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != FloatType {
|
|
t.Errorf("invalid flag type - %s != %s", FloatType.String(), f.kind.String())
|
|
}
|
|
}
|
|
|
|
func Test_Group_FloatVar(t *testing.T) {
|
|
s := testSet()
|
|
var val float64
|
|
f := s.DefaultGroup().FloatVar("test-string", &val)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != FloatType {
|
|
t.Errorf("invalid flag type - %s != %s", FloatType.String(), f.kind.String())
|
|
}
|
|
if !f.ptr {
|
|
t.Errorf("invalid flag ptr - true != false")
|
|
}
|
|
if f.value != &val {
|
|
t.Errorf("invalid flag value - %p != %p", &val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Integer(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().Integer("test-integer")
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != IntegerType {
|
|
t.Errorf("invalid flag type - %s != %s", IntegerType.String(), f.kind.String())
|
|
}
|
|
}
|
|
|
|
func Test_Group_IntegerVar(t *testing.T) {
|
|
s := testSet()
|
|
var val int64
|
|
f := s.DefaultGroup().IntegerVar("test-string", &val)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != IntegerType {
|
|
t.Errorf("invalid flag type - %s != %s", IntegerType.String(), f.kind.String())
|
|
}
|
|
if !f.ptr {
|
|
t.Errorf("invalid flag ptr - true != false")
|
|
}
|
|
if f.value != &val {
|
|
t.Errorf("invalid flag value - %p != %p", &val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Increment(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().Increment("test-increment")
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != IncrementType {
|
|
t.Errorf("invalid flag type - %s != %s", IncrementType.String(), f.kind.String())
|
|
}
|
|
}
|
|
|
|
func Test_Group_IncrementVar(t *testing.T) {
|
|
s := testSet()
|
|
var val int64
|
|
f := s.DefaultGroup().IncrementVar("test-incrmeent", &val)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != IncrementType {
|
|
t.Errorf("invalid flag type - %s != %s", IncrementType.String(), f.kind.String())
|
|
}
|
|
if !f.ptr {
|
|
t.Errorf("invalid flag ptr - true != false")
|
|
}
|
|
if f.value != &val {
|
|
t.Errorf("invalid flag value - %p != %p", &val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Map(t *testing.T) {
|
|
s := testSet()
|
|
f := s.DefaultGroup().Map("test-string", StringType)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != MapType {
|
|
t.Errorf("invalid flag type - %s != %s", MapType.String(), f.kind.String())
|
|
}
|
|
if f.subkind != StringType {
|
|
t.Errorf("invalid flag sub-type - %s != %s", StringType.String(), f.subkind.String())
|
|
}
|
|
}
|
|
|
|
func Test_Group_MapVar(t *testing.T) {
|
|
s := testSet()
|
|
val := map[string]string{}
|
|
f := s.DefaultGroup().MapVar("test-string", StringType, &val)
|
|
if s.Flags()[0] != f {
|
|
t.Errorf("invalid set flag - %#v != %#v", f, s.Flags()[0])
|
|
}
|
|
if s.DefaultGroup().Flags()[0] != f {
|
|
t.Errorf("invalid group flag - %#v != %#v", f, s.DefaultGroup().Flags()[0])
|
|
}
|
|
if f.kind != MapType {
|
|
t.Errorf("invalid flag type - %s != %s", MapType.String(), f.kind.String())
|
|
}
|
|
if f.subkind != StringType {
|
|
t.Errorf("invalid flag sub-type - %s != %s", StringType, f.subkind.String())
|
|
}
|
|
if !f.ptr {
|
|
t.Errorf("invalid flag ptr - true != false")
|
|
}
|
|
if f.value != &val {
|
|
t.Errorf("invalid flag value - %p != %p", &val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Bool("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_bool(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Bool("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
if !strings.Contains(d, "--[no-]") {
|
|
t.Errorf("flag negate option missing: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_integer(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Integer("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "--test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
if !strings.Contains(d, "VALUE") {
|
|
t.Errorf("VALUE option not found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_increment(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Increment("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "--test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
if strings.Contains(d, "VALUE") {
|
|
t.Errorf("VALUE option found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_float(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Float("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "--test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
if !strings.Contains(d, "VALUE") {
|
|
t.Errorf("VALUE option not found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_string(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.String("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "--test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
if !strings.Contains(d, "VALUE") {
|
|
t.Errorf("VALUE option not found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_array(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Array("test-flag", StringType)
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "--test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
if !strings.Contains(d, "VALUE") {
|
|
t.Errorf("VALUE option not found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_map(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Map("test-flag", StringType)
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "--test-flag") {
|
|
t.Errorf("flag 'test-flag' not found: %s", d)
|
|
}
|
|
if !strings.Contains(d, "VALUE") {
|
|
t.Errorf("VALUE option not found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_hidden_flag(t *testing.T) {
|
|
s := testSet()
|
|
g := s.DefaultGroup()
|
|
g.Bool("visible-option")
|
|
g.Bool("hidden-option", Hidden())
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "visible-option") {
|
|
t.Errorf("visible flag 'visible-option' not found: %s", d)
|
|
}
|
|
if strings.Contains(d, "hidden-option") {
|
|
t.Errorf("hidden flag 'hidden-option' found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_group_name(t *testing.T) {
|
|
s := testSet()
|
|
g, err := s.NewGroup("Test Group")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error creating group: %s", err)
|
|
}
|
|
g.Bool("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "test-flag") {
|
|
t.Errorf("flag not found: %s", d)
|
|
}
|
|
if !strings.Contains(d, "Test Group") {
|
|
t.Errorf("group name not found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_group_name_hidden(t *testing.T) {
|
|
s := testSet()
|
|
g, err := s.NewGroup("Test Group", HideGroupName())
|
|
if err != nil {
|
|
t.Fatalf("unexpected error creating group: %s", err)
|
|
}
|
|
g.Bool("test-flag")
|
|
d := g.Display(0)
|
|
if !strings.Contains(d, "test-flag") {
|
|
t.Errorf("flag not found: %s", d)
|
|
}
|
|
if strings.Contains(d, "Test Group") {
|
|
t.Errorf("group name found: %s", d)
|
|
}
|
|
}
|
|
|
|
func Test_Group_Display_hidden(t *testing.T) {
|
|
s := testSet()
|
|
g, err := s.NewGroup("Test Group", HideGroup())
|
|
if err != nil {
|
|
t.Fatalf("unexpected error creating group: %s", err)
|
|
}
|
|
g.Bool("test-flag")
|
|
d := g.Display(0)
|
|
if d != "" {
|
|
t.Errorf("encountered output for hidden group: %s", d)
|
|
}
|
|
}
|