blob: 14e0033cc79de55c6f8e42afd85c86dc4299ed34 [file] [log] [blame]
// Copyright Istio Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package cmd
import (
"flag"
"testing"
"time"
)
import (
"github.com/spf13/cobra"
"github.com/spf13/pflag"
)
const (
defaultInt = 100
defaultString = "my default string"
defaultBool = true
defaultDuration = 24 * time.Hour
)
func TestInitializeIntFlag(t *testing.T) {
cmd := &cobra.Command{}
var testInt int
flag.IntVar(&testInt, "testint", defaultInt, "test int flag")
AddFlags(cmd)
testName := "Initialize int Flag"
if !flag.Parsed() {
t.Errorf("%s: flag.Parsed() returns false, should be true", testName)
}
cmd.Flags().VisitAll(func(f *pflag.Flag) {
if f.Name != "testint" {
t.Errorf("%s: pflag name error. Actual %s, Expected %s", testName, f.Name, "testint")
}
})
_ = cmd.Flags().Parse([]string{})
if testInt != defaultInt {
t.Errorf("%s: pflag parse error. Actual %d, Expected %d", testName, testInt, defaultInt)
}
}
func TestInitializeStringFlag(t *testing.T) {
cmd := &cobra.Command{}
var testString string
flag.StringVar(&testString, "teststring", defaultString, "test string flag")
AddFlags(cmd)
testName := "Initialize String Flag"
if !flag.Parsed() {
t.Errorf("%s: flag.Parsed() returns false, should be true", testName)
}
cmd.Flags().VisitAll(func(f *pflag.Flag) {
if f.Name != "teststring" {
t.Errorf("%s: pflag name error. Actual %s, Expected %s", testName, f.Name, "teststring")
}
})
_ = cmd.Flags().Parse([]string{})
if testString != defaultString {
t.Errorf("%s: pflag parse error. Actual %s, Expected %s", testName, testString, defaultString)
}
}
func TestInitializeBoolFlag(t *testing.T) {
cmd := &cobra.Command{}
var testBool bool
flag.BoolVar(&testBool, "testbool", defaultBool, "test bool flag")
AddFlags(cmd)
testName := "Initialize bool Flag"
if !flag.Parsed() {
t.Errorf("%s: flag.Parsed() returns false, should be true", testName)
}
cmd.Flags().VisitAll(func(f *pflag.Flag) {
if f.Name != "testbool" {
t.Errorf("%s: pflag name error. Actual %s, Expected %s", testName, f.Name, "testbool")
}
})
_ = cmd.Flags().Parse([]string{})
if testBool != defaultBool { // nolint: megacheck
t.Errorf("%s: pflag parse error. Actual %t, Expected %t", testName, testBool, defaultBool)
}
}
func TestInitializeDurationFlag(t *testing.T) {
cmd := &cobra.Command{}
var testDuration time.Duration
flag.DurationVar(&testDuration, "testduration", defaultDuration, "test duration flag")
AddFlags(cmd)
testName := "Initialize duration flag"
if !flag.Parsed() {
t.Errorf("%s: flag.Parsed() returns false, should be true", testName)
}
cmd.Flags().VisitAll(func(f *pflag.Flag) {
if f.Name != "testduration" {
t.Errorf("%s: pflag name error. Actual %s, Expected %s", testName, f.Name, "testduration")
}
})
_ = cmd.Flags().Parse([]string{})
if testDuration != defaultDuration {
t.Errorf("%s: pflag parse error. Actual %d, Expected %d", testName, testDuration, defaultDuration)
}
}