Merge pull request #60696 from wrfly/patch-1

Automatic merge from submit-queue (batch tested with PRs 60696, 60876, 60901, 60925, 60428). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

fix non-nil ptr in struct convert

**What this PR does / why we need it**:
Fix an issue.

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes #35335

**Special notes for your reviewer**:
Thanks for other contributer's debug.

**Release note**:

```release-note
NONE
```
This commit is contained in:
Kubernetes Submit Queue 2018-03-20 13:36:10 -07:00 committed by GitHub
commit f44f7dffa2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -174,6 +174,9 @@ func convertStruct(result url.Values, st reflect.Type, sv reflect.Value) {
kind = ft.Kind()
if !field.IsNil() {
field = reflect.Indirect(field)
// If the field is non-nil, it should be added to params
// and the omitempty should be overwite to false
omitempty = false
}
}

View File

@ -70,6 +70,7 @@ type childStructs struct {
Follow bool `json:"follow,omitempty"`
Previous bool `json:"previous,omitempty"`
SinceSeconds *int64 `json:"sinceSeconds,omitempty"`
TailLines *int64 `json:"tailLines,omitempty"`
SinceTime *metav1.Time `json:"sinceTime,omitempty"`
EmptyTime *metav1.Time `json:"emptyTime"`
NonPointerTime metav1.Time `json:"nonPointerTime"`
@ -99,6 +100,7 @@ func validateResult(t *testing.T, input interface{}, actual, expected url.Values
func TestConvert(t *testing.T) {
sinceSeconds := int64(123)
tailLines := int64(0)
sinceTime := metav1.Date(2000, 1, 1, 12, 34, 56, 0, time.UTC)
tests := []struct {
@ -182,6 +184,7 @@ func TestConvert(t *testing.T) {
Follow: true,
Previous: true,
SinceSeconds: &sinceSeconds,
TailLines: nil,
SinceTime: &sinceTime, // test a custom marshaller
EmptyTime: nil, // test a nil custom marshaller without omitempty
NonPointerTime: sinceTime,
@ -194,10 +197,11 @@ func TestConvert(t *testing.T) {
Follow: true,
Previous: true,
SinceSeconds: &sinceSeconds,
TailLines: &tailLines,
SinceTime: nil, // test a nil custom marshaller with omitempty
NonPointerTime: sinceTime,
},
expected: url.Values{"container": {"mycontainer"}, "follow": {"true"}, "previous": {"true"}, "sinceSeconds": {"123"}, "emptyTime": {""}, "nonPointerTime": {"2000-01-01T12:34:56Z"}},
expected: url.Values{"container": {"mycontainer"}, "follow": {"true"}, "previous": {"true"}, "sinceSeconds": {"123"}, "tailLines": {"0"}, "emptyTime": {""}, "nonPointerTime": {"2000-01-01T12:34:56Z"}},
},
}