mirror of
https://github.com/tailscale/tailscale.git
synced 2025-07-29 15:23:45 +00:00
cmd/tailscale/cli: add test coverage for singleUseStringFlag
This test exercises singleUseStringFlag behavior to ensure an error is returned when flags are set multiple times. Updates #15534 Signed-off-by: Jason O'Donnell <2160810+jasonodonnell@users.noreply.github.com>
This commit is contained in:
parent
f5a873aca4
commit
94462bdf6b
@ -1659,3 +1659,51 @@ func TestSingleUseStringFlag(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSingleUseStringFlagsSetTwice(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
flagName string
|
||||||
|
vals []string
|
||||||
|
setup func(*upArgsT) flag.Value
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "advertise-tags",
|
||||||
|
flagName: "advertise-tags",
|
||||||
|
vals: []string{"tag:foo", "tag:bar"},
|
||||||
|
setup: func(u *upArgsT) flag.Value {
|
||||||
|
return &u.advertiseTags
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "advertise-routes",
|
||||||
|
flagName: "advertise-routes",
|
||||||
|
vals: []string{"10.0.0.0/8", "192.168.0.0/16"},
|
||||||
|
setup: func(u *upArgsT) flag.Value {
|
||||||
|
return &u.advertiseRoutes
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
var upArgs upArgsT
|
||||||
|
fs := flag.NewFlagSet("test", flag.ContinueOnError)
|
||||||
|
fs.SetOutput(io.Discard)
|
||||||
|
|
||||||
|
fs.Var(tt.setup(&upArgs), tt.flagName, "")
|
||||||
|
args := []string{
|
||||||
|
fmt.Sprintf("--%s=%s", tt.flagName, tt.vals[0]),
|
||||||
|
fmt.Sprintf("--%s=%s", tt.flagName, tt.vals[1]),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := fs.Parse(args)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error when setting flag twice, got nil")
|
||||||
|
}
|
||||||
|
if !strings.Contains(err.Error(), "flag can only be specified once") {
|
||||||
|
t.Errorf("unexpected error message: %v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user