Fix TestCloneProperties for go 1.21 am: 50fe8e79e5 am: 21118230c9

Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2824190

Change-Id: I613f425fecb3513ac58b7d9d6bf3afb2a4fa1142
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Colin Cross 2023-11-09 19:29:45 +00:00 committed by Automerger Merge Worker
commit d732cac5fd

View file

@ -296,6 +296,21 @@ type EmbeddedStruct struct {
}
type EmbeddedInterface interface{}
func isPointerToEmptyStruct(v any) bool {
t := reflect.TypeOf(v)
if t.Kind() != reflect.Ptr {
return false
}
t = t.Elem()
if t.Kind() != reflect.Struct {
return false
}
if t.NumField() > 0 {
return false
}
return true
}
func TestCloneProperties(t *testing.T) {
for _, testCase := range clonePropertiesTestCases {
testString := fmt.Sprintf("%s", testCase.in)
@ -308,7 +323,7 @@ func TestCloneProperties(t *testing.T) {
t.Errorf(" expected: %#v", testCase.out)
t.Errorf(" got: %#v", got)
}
if testCase.out == got {
if testCase.out == got && !isPointerToEmptyStruct(testCase.out) {
t.Errorf("test case %s", testString)
t.Errorf("items should be cloned, not the original")
t.Errorf(" expected: %s", testCase.out)