mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Merge pull request #711 from smarterclayton/more_info_about_format_conversion_error
More verbose error on missing field
This commit is contained in:
commit
aa454fea93
@ -141,11 +141,11 @@ func (c *Converter) convert(sv, dv reflect.Value) error {
|
|||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
for i := 0; i < dt.NumField(); i++ {
|
for i := 0; i < dt.NumField(); i++ {
|
||||||
f := dv.Type().Field(i)
|
f := dv.Type().Field(i)
|
||||||
df := dv.FieldByName(f.Name)
|
|
||||||
sf := sv.FieldByName(f.Name)
|
sf := sv.FieldByName(f.Name)
|
||||||
if !df.IsValid() || !sf.IsValid() {
|
if !sf.IsValid() {
|
||||||
return fmt.Errorf("%v not present in source and dest.", f.Name)
|
return fmt.Errorf("%v not present in source %v for dest %v", f.Name, sv.Type(), dv.Type())
|
||||||
}
|
}
|
||||||
|
df := dv.Field(i)
|
||||||
if err := c.convert(sf, df); err != nil {
|
if err := c.convert(sf, df); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -79,3 +79,32 @@ func TestConverter(t *testing.T) {
|
|||||||
t.Errorf("unexpected non-error")
|
t.Errorf("unexpected non-error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func anonymousEmptyTypeNamedA() interface{} {
|
||||||
|
type A struct{}
|
||||||
|
return &A{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCopyConvertor(t *testing.T) {
|
||||||
|
type A struct {
|
||||||
|
Bar string
|
||||||
|
}
|
||||||
|
type B struct {
|
||||||
|
Bar string
|
||||||
|
}
|
||||||
|
c := NewConverter()
|
||||||
|
err := c.Convert(anonymousEmptyTypeNamedA(), &A{})
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("unexpected non-error")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = c.Convert(&A{}, anonymousEmptyTypeNamedA())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = c.Convert(&B{}, &A{})
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("unexpected non-error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user