mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #46760 from xilabao/fix-parse-pairs
Automatic merge from submit-queue (batch tested with PRs 49524, 46760, 50206, 50166, 49603) fix parse pairs **What this PR does / why we need it**: add check to `-` ``` # kubectl label pod foo - error: at least one label update is required See 'kubectl label -h' for help and examples. ``` **Which issue this PR fixes**: **Special notes for your reviewer**: **Release note**: ```release-note NONE ```
This commit is contained in:
commit
535c0f6ff4
@ -156,6 +156,18 @@ func TestParseAnnotations(t *testing.T) {
|
|||||||
scenario: "incorrect annotation input (missing =value)",
|
scenario: "incorrect annotation input (missing =value)",
|
||||||
expectErr: true,
|
expectErr: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
annotations: []string{"-"},
|
||||||
|
expectedErr: "invalid annotation format: -",
|
||||||
|
scenario: "incorrect annotation input (missing key)",
|
||||||
|
expectErr: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
annotations: []string{"=bar"},
|
||||||
|
expectedErr: "invalid annotation format: =bar",
|
||||||
|
scenario: "incorrect annotation input (missing key)",
|
||||||
|
expectErr: true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
annotations, remove, err := parseAnnotations(test.annotations)
|
annotations, remove, err := parseAnnotations(test.annotations)
|
||||||
@ -380,6 +392,18 @@ func TestAnnotateErrors(t *testing.T) {
|
|||||||
return strings.Contains(err.Error(), "at least one annotation update is required")
|
return strings.Contains(err.Error(), "at least one annotation update is required")
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"wrong annotations": {
|
||||||
|
args: []string{"pods", "-"},
|
||||||
|
errFn: func(err error) bool {
|
||||||
|
return strings.Contains(err.Error(), "at least one annotation update is required")
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"wrong annotations 2": {
|
||||||
|
args: []string{"pods", "=bar"},
|
||||||
|
errFn: func(err error) bool {
|
||||||
|
return strings.Contains(err.Error(), "at least one annotation update is required")
|
||||||
|
},
|
||||||
|
},
|
||||||
"no resources remove annotations": {
|
"no resources remove annotations": {
|
||||||
args: []string{"pods-"},
|
args: []string{"pods-"},
|
||||||
errFn: func(err error) bool { return strings.Contains(err.Error(), "one or more resources must be specified") },
|
errFn: func(err error) bool { return strings.Contains(err.Error(), "one or more resources must be specified") },
|
||||||
|
@ -289,6 +289,14 @@ func TestLabelErrors(t *testing.T) {
|
|||||||
args: []string{"pods"},
|
args: []string{"pods"},
|
||||||
errFn: func(err error) bool { return strings.Contains(err.Error(), "at least one label update is required") },
|
errFn: func(err error) bool { return strings.Contains(err.Error(), "at least one label update is required") },
|
||||||
},
|
},
|
||||||
|
"wrong labels": {
|
||||||
|
args: []string{"pods", "-"},
|
||||||
|
errFn: func(err error) bool { return strings.Contains(err.Error(), "at least one label update is required") },
|
||||||
|
},
|
||||||
|
"wrong labels 2": {
|
||||||
|
args: []string{"pods", "=bar"},
|
||||||
|
errFn: func(err error) bool { return strings.Contains(err.Error(), "at least one label update is required") },
|
||||||
|
},
|
||||||
"no resources": {
|
"no resources": {
|
||||||
args: []string{"pods-"},
|
args: []string{"pods-"},
|
||||||
errFn: func(err error) bool { return strings.Contains(err.Error(), "one or more resources must be specified") },
|
errFn: func(err error) bool { return strings.Contains(err.Error(), "one or more resources must be specified") },
|
||||||
|
@ -606,7 +606,7 @@ func AddInclude3rdPartyVarFlags(cmd *cobra.Command, include3rdParty *bool) {
|
|||||||
func GetResourcesAndPairs(args []string, pairType string) (resources []string, pairArgs []string, err error) {
|
func GetResourcesAndPairs(args []string, pairType string) (resources []string, pairArgs []string, err error) {
|
||||||
foundPair := false
|
foundPair := false
|
||||||
for _, s := range args {
|
for _, s := range args {
|
||||||
nonResource := strings.Contains(s, "=") || strings.HasSuffix(s, "-")
|
nonResource := (strings.Contains(s, "=") && s[0] != '=') || (strings.HasSuffix(s, "-") && s != "-")
|
||||||
switch {
|
switch {
|
||||||
case !foundPair && nonResource:
|
case !foundPair && nonResource:
|
||||||
foundPair = true
|
foundPair = true
|
||||||
@ -632,7 +632,7 @@ func ParsePairs(pairArgs []string, pairType string, supportRemove bool) (newPair
|
|||||||
var invalidBuf bytes.Buffer
|
var invalidBuf bytes.Buffer
|
||||||
var invalidBufNonEmpty bool
|
var invalidBufNonEmpty bool
|
||||||
for _, pairArg := range pairArgs {
|
for _, pairArg := range pairArgs {
|
||||||
if strings.Contains(pairArg, "=") {
|
if strings.Contains(pairArg, "=") && pairArg[0] != '=' {
|
||||||
parts := strings.SplitN(pairArg, "=", 2)
|
parts := strings.SplitN(pairArg, "=", 2)
|
||||||
if len(parts) != 2 {
|
if len(parts) != 2 {
|
||||||
if invalidBufNonEmpty {
|
if invalidBufNonEmpty {
|
||||||
@ -643,7 +643,7 @@ func ParsePairs(pairArgs []string, pairType string, supportRemove bool) (newPair
|
|||||||
} else {
|
} else {
|
||||||
newPairs[parts[0]] = parts[1]
|
newPairs[parts[0]] = parts[1]
|
||||||
}
|
}
|
||||||
} else if supportRemove && strings.HasSuffix(pairArg, "-") {
|
} else if supportRemove && strings.HasSuffix(pairArg, "-") && pairArg != "-" {
|
||||||
removePairs = append(removePairs, pairArg[:len(pairArg)-1])
|
removePairs = append(removePairs, pairArg[:len(pairArg)-1])
|
||||||
} else {
|
} else {
|
||||||
if invalidBufNonEmpty {
|
if invalidBufNonEmpty {
|
||||||
|
Loading…
Reference in New Issue
Block a user