Skip to content

Commit 49f7900

Browse files
authored
chore(cobra): cleanup up leftover Cobra code (#6448)
1 parent 9c1324d commit 49f7900

3 files changed

Lines changed: 11 additions & 121 deletions

File tree

internal/flags/binders.go

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package flags
1818

1919
import (
20-
"fmt"
2120
"regexp"
2221
"strconv"
2322
"time"
@@ -108,37 +107,3 @@ func (b *KingpinBinder) RegexpVar(name, help string, def *regexp.Regexp, target
108107
}
109108
b.App.Flag(name, help).Default(defStr).RegexpVar(target)
110109
}
111-
112-
type regexpValue struct {
113-
target **regexp.Regexp
114-
}
115-
116-
func (rv *regexpValue) String() string {
117-
if rv == nil || rv.target == nil || *rv.target == nil {
118-
return ""
119-
}
120-
return (*rv.target).String()
121-
}
122-
123-
func (rv *regexpValue) Set(s string) error {
124-
re, err := regexp.Compile(s)
125-
if err != nil {
126-
return err
127-
}
128-
*rv.target = re
129-
return nil
130-
}
131-
132-
func (rv *regexpValue) Type() string { return "regexp" }
133-
134-
type regexpSetter interface {
135-
Set(string) error
136-
}
137-
138-
func setRegexpDefault(rs regexpSetter, def *regexp.Regexp, name string) {
139-
if def != nil {
140-
if err := rs.Set(def.String()); err != nil {
141-
panic(fmt.Errorf("invalid default regexp for flag %s: %w", name, err))
142-
}
143-
}
144-
}

internal/flags/binders_test.go

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package flags
1818

1919
import (
20-
"errors"
2120
"regexp"
2221
"testing"
2322
"time"
@@ -27,10 +26,6 @@ import (
2726
"github.com/stretchr/testify/require"
2827
)
2928

30-
type badSetter struct{}
31-
32-
func (b *badSetter) Set(_ string) error { return errors.New("bad default") }
33-
3429
func TestKingpinBinderParsesAllTypes(t *testing.T) {
3530
app := kingpin.New("test", "")
3631
b := NewKingpinBinder(app)
@@ -95,24 +90,20 @@ func TestKingpinBinderStringsVarNoDefaultAndBoolDefaultFalse(t *testing.T) {
9590
assert.False(t, b2)
9691
}
9792

98-
func TestCobraRegexValueSetStringType(t *testing.T) {
99-
var r *regexp.Regexp
100-
rv := &regexpValue{target: &r}
93+
func TestKingpinBinderStringMapVar(t *testing.T) {
94+
app := kingpin.New("test", "")
95+
b := NewKingpinBinder(app)
10196

102-
require.Equal(t, "regexp", rv.Type())
103-
// empty when target nil
104-
assert.Empty(t, rv.String())
97+
labels := map[string]string{}
98+
b.StringMapVar("label", "map flag", &labels)
10599

106-
// invalid pattern returns error
107-
err := rv.Set("(")
108-
require.Error(t, err)
109-
110-
// valid pattern sets target
111-
err = rv.Set("^foo$")
100+
_, err := app.Parse([]string{"--label=env=prod", "--label=team=dns"})
112101
require.NoError(t, err)
113-
require.NotNil(t, r)
114-
assert.Equal(t, "^foo$", r.String())
115-
assert.Equal(t, "^foo$", rv.String())
102+
103+
assert.Equal(t, map[string]string{
104+
"env": "prod",
105+
"team": "dns",
106+
}, labels)
116107
}
117108

118109
func TestKingpinRegexpVarDefaultAndParse(t *testing.T) {
@@ -157,9 +148,3 @@ func TestKingpinStringsEnumVarWithAndWithoutDefault(t *testing.T) {
157148
require.NoError(t, err)
158149
assert.ElementsMatch(t, []string{"a", "c"}, vals2)
159150
}
160-
161-
func TestSetRegexDefaultPanicsOnInvalidDefault(t *testing.T) {
162-
bs := &badSetter{}
163-
def := regexp.MustCompile("^")
164-
require.Panics(t, func() { setRegexpDefault(bs, def, "flag") })
165-
}

pkg/apis/externaldns/types_test.go

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -569,12 +569,6 @@ func TestParseFlags(t *testing.T) {
569569
}
570570
}
571571

572-
func TestParseFlagsCobraExecuteError(t *testing.T) {
573-
cfg := NewConfig()
574-
err := cfg.ParseFlags([]string{"--cli-backend=cobra", "--unknown-flag"})
575-
require.Error(t, err)
576-
}
577-
578572
func TestParseFlagsKingpinParseError(t *testing.T) {
579573
cfg := NewConfig()
580574
err := cfg.ParseFlags([]string{"--unknown-flag"})
@@ -620,61 +614,7 @@ func TestParseFlagsDefaultKingpin(t *testing.T) {
620614
assert.Equal(t, "default", cfg.OCPRouterName)
621615
}
622616

623-
// When EXTERNAL_DNS_CLI=cobra is set, cobra path should parse the subset of
624-
// flags it currently binds, yielding parity with kingpin for those fields.
625-
func TestParseFlagsCobraSwitchParitySubset(t *testing.T) {
626-
args := []string{
627-
"--provider=aws",
628-
"--source=service",
629-
"--source=ingress",
630-
"--server=http://127.0.0.1:8080",
631-
"--kubeconfig=/some/path",
632-
"--request-timeout=2s",
633-
"--namespace=ns",
634-
"--domain-filter=example.org",
635-
"--domain-filter=company.com",
636-
"--openshift-router-name=default",
637-
}
638-
639-
// Kingpin baseline
640-
cfgK := NewConfig()
641-
require.NoError(t, cfgK.ParseFlags(args))
642-
643-
// Cobra path via env switch
644-
t.Setenv("EXTERNAL_DNS_CLI", "cobra")
645-
cfgC := NewConfig()
646-
require.NoError(t, cfgC.ParseFlags(args))
647-
648-
// Compare selected fields bound in cobra
649-
assert.Equal(t, cfgK.Provider, cfgC.Provider)
650-
assert.ElementsMatch(t, cfgK.Sources, cfgC.Sources)
651-
assert.Equal(t, cfgK.APIServerURL, cfgC.APIServerURL)
652-
assert.Equal(t, cfgK.KubeConfig, cfgC.KubeConfig)
653-
assert.Equal(t, cfgK.KubeAPIRequestTimeout, cfgC.KubeAPIRequestTimeout)
654-
assert.Equal(t, cfgK.Namespace, cfgC.Namespace)
655-
assert.ElementsMatch(t, cfgK.DomainFilter, cfgC.DomainFilter)
656-
assert.Equal(t, cfgK.OCPRouterName, cfgC.OCPRouterName)
657-
}
658-
659-
func TestParseFlagsCliFlagOverridesEnv(t *testing.T) {
660-
// Env requests cobra; CLI flag forces kingpin.
661-
t.Setenv("EXTERNAL_DNS_CLI", "cobra")
662-
args := []string{
663-
"--provider=aws",
664-
"--source=service",
665-
// Flag not bound in Cobra newCobraCommand path; will error if cobra is used.
666-
"--log-format=json",
667-
}
668-
669-
cfg := NewConfig()
670-
require.NoError(t, cfg.ParseFlags(args))
671-
assert.Equal(t, ProviderAWS, cfg.Provider)
672-
assert.ElementsMatch(t, []string{"service"}, cfg.Sources)
673-
assert.Equal(t, "json", cfg.LogFormat)
674-
}
675-
676617
func TestParseFlagsCliFlagSeparatedValue(t *testing.T) {
677-
// Support "--cli-backend", "cobra" form as well.
678618
args := []string{
679619
"--provider=aws",
680620
"--source=service",

0 commit comments

Comments
 (0)