1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- Copyright 2018 The Kubernetes 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 options
- import (
- "flag"
- "reflect"
- "sort"
- "strings"
- "testing"
- "github.com/spf13/pflag"
- cliflag "k8s.io/component-base/cli/flag"
- "k8s.io/component-base/cli/globalflag"
- )
- func TestAddCustomGlobalFlags(t *testing.T) {
- namedFlagSets := &cliflag.NamedFlagSets{}
- // Note that we will register all flags (including klog flags) into the same
- // flag set. This allows us to test against all global flags from
- // flags.CommandLine.
- nfs := namedFlagSets.FlagSet("test")
- globalflag.AddGlobalFlags(nfs, "test-cmd")
- AddCustomGlobalFlags(nfs)
- actualFlag := []string{}
- nfs.VisitAll(func(flag *pflag.Flag) {
- actualFlag = append(actualFlag, flag.Name)
- })
- // Get all flags from flags.CommandLine, except flag `test.*`.
- wantedFlag := []string{"help"}
- pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
- pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
- pflag.VisitAll(func(flag *pflag.Flag) {
- if !strings.Contains(flag.Name, "test.") {
- wantedFlag = append(wantedFlag, flag.Name)
- }
- })
- sort.Strings(wantedFlag)
- if !reflect.DeepEqual(wantedFlag, actualFlag) {
- t.Errorf("[Default]: expected %+v, got %+v", wantedFlag, actualFlag)
- }
- }
|