Merge pull request #3836 from mfojtik/extract_list_ptr

Ensure the ptr is pointing to reflect.Slice in ExtractList
pull/6/head
Brendan Burns 2015-01-27 10:00:33 -08:00
commit 99b9785881
2 changed files with 6 additions and 2 deletions

View File

@ -43,6 +43,10 @@ func GetItemsPtr(list Object) (interface{}, error) {
}
switch items.Kind() {
case reflect.Interface, reflect.Ptr:
target := reflect.TypeOf(items.Interface()).Elem()
if target.Kind() != reflect.Slice {
return nil, fmt.Errorf("items: Expected slice, got %s", target.Kind())
}
return items.Interface(), nil
case reflect.Slice:
return items.Addr().Interface(), nil

View File

@ -86,14 +86,14 @@ func TestExtractListGeneric(t *testing.T) {
}
type fakePtrInterfaceList struct {
Items []*runtime.Object
Items *[]runtime.Object
}
func (f fakePtrInterfaceList) IsAnAPIObject() {}
func TestExtractListOfInterfacePtrs(t *testing.T) {
pl := &fakePtrInterfaceList{
Items: []*runtime.Object{},
Items: &[]runtime.Object{},
}
list, err := runtime.ExtractList(pl)
if err != nil {