mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
Merge pull request #7541 from csrwng/fix_bool_conversion
Handle conversion of boolean query parameters with a value of "false"
This commit is contained in:
commit
b11f07be7a
@ -67,13 +67,17 @@ func convertStringSliceToInt(input *[]string, out *int, s conversion.Scope) erro
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// converStringSliceToBool will convert a string parameter to boolean.
|
||||||
|
// Only the absence of a value, a value of "false", or a value of "0" resolve to false.
|
||||||
|
// Any other value (including empty string) resolves to true.
|
||||||
func convertStringSliceToBool(input *[]string, out *bool, s conversion.Scope) error {
|
func convertStringSliceToBool(input *[]string, out *bool, s conversion.Scope) error {
|
||||||
if len(*input) == 0 {
|
if len(*input) == 0 {
|
||||||
*out = false
|
*out = false
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
switch strings.ToLower((*input)[0]) {
|
switch strings.ToLower((*input)[0]) {
|
||||||
case "true", "1":
|
case "false", "0":
|
||||||
*out = true
|
*out = false
|
||||||
default:
|
default:
|
||||||
*out = true
|
*out = true
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ type InternalComplex struct {
|
|||||||
Integer int
|
Integer int
|
||||||
Integer64 int64
|
Integer64 int64
|
||||||
Int64 int64
|
Int64 int64
|
||||||
|
Bool bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExternalComplex struct {
|
type ExternalComplex struct {
|
||||||
@ -37,6 +38,7 @@ type ExternalComplex struct {
|
|||||||
Integer int `json:"int"`
|
Integer int `json:"int"`
|
||||||
Integer64 int64 `json:",omitempty"`
|
Integer64 int64 `json:",omitempty"`
|
||||||
Int64 int64
|
Int64 int64
|
||||||
|
Bool bool `json:"bool"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*InternalComplex) IsAnAPIObject() {}
|
func (*InternalComplex) IsAnAPIObject() {}
|
||||||
@ -82,6 +84,36 @@ func TestStringMapConversion(t *testing.T) {
|
|||||||
errFn: func(err error) bool { return err != nil },
|
errFn: func(err error) bool { return err != nil },
|
||||||
expected: &ExternalComplex{},
|
expected: &ExternalComplex{},
|
||||||
},
|
},
|
||||||
|
"parses boolean true": {
|
||||||
|
input: map[string][]string{
|
||||||
|
"bool": {"true"},
|
||||||
|
},
|
||||||
|
expected: &ExternalComplex{Bool: true},
|
||||||
|
},
|
||||||
|
"parses boolean any value": {
|
||||||
|
input: map[string][]string{
|
||||||
|
"bool": {"foo"},
|
||||||
|
},
|
||||||
|
expected: &ExternalComplex{Bool: true},
|
||||||
|
},
|
||||||
|
"parses boolean false": {
|
||||||
|
input: map[string][]string{
|
||||||
|
"bool": {"false"},
|
||||||
|
},
|
||||||
|
expected: &ExternalComplex{Bool: false},
|
||||||
|
},
|
||||||
|
"parses boolean empty value": {
|
||||||
|
input: map[string][]string{
|
||||||
|
"bool": {""},
|
||||||
|
},
|
||||||
|
expected: &ExternalComplex{Bool: true},
|
||||||
|
},
|
||||||
|
"parses boolean no value": {
|
||||||
|
input: map[string][]string{
|
||||||
|
"bool": {},
|
||||||
|
},
|
||||||
|
expected: &ExternalComplex{Bool: false},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, tc := range testCases {
|
for k, tc := range testCases {
|
||||||
|
Loading…
Reference in New Issue
Block a user