Skip to content

Commit 39432d3

Browse files
committed
test: cover anonymous embedded XML fields
1 parent 6248a64 commit 39432d3

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package parser
2+
3+
import (
4+
"reflect"
5+
"slices"
6+
"testing"
7+
8+
"libvirt.org/go/libvirtxml"
9+
)
10+
11+
func TestReflectStruct_AnonymousEmbeddedFields(t *testing.T) {
12+
reflector := NewLibvirtXMLReflector()
13+
14+
ir, err := reflector.ReflectStruct(reflect.TypeOf(libvirtxml.DomainFeatureHyperVSpinlocks{}))
15+
if err != nil {
16+
t.Fatalf("ReflectStruct() error = %v", err)
17+
}
18+
19+
fields := make(map[string]bool, len(ir.Fields))
20+
for _, field := range ir.Fields {
21+
fields[field.TFName] = true
22+
}
23+
24+
if !fields["state"] {
25+
t.Fatalf("expected embedded field %q to be reflected, got fields %v", "state", keys(fields))
26+
}
27+
28+
if !fields["retries"] {
29+
t.Fatalf("expected field %q to be reflected, got fields %v", "retries", keys(fields))
30+
}
31+
}
32+
33+
func keys(fields map[string]bool) []string {
34+
names := make([]string, 0, len(fields))
35+
for name := range fields {
36+
names = append(names, name)
37+
}
38+
slices.Sort(names)
39+
return names
40+
}

0 commit comments

Comments
 (0)