Merge "Replace AssertPanic with AssertPanicMessageContains" am: c737facd2b

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1647200

Change-Id: I5865c7845ae1820e55919252c99f612e3ac8f138
This commit is contained in:
Paul Duffin
2021-03-22 09:36:04 +00:00
committed by Automerger Merge Worker
2 changed files with 14 additions and 8 deletions

View File

@@ -15,6 +15,7 @@
package android package android
import ( import (
"fmt"
"reflect" "reflect"
"strings" "strings"
"testing" "testing"
@@ -162,19 +163,24 @@ func AssertDeepEquals(t *testing.T, message string, expected interface{}, actual
} }
} }
// AssertPanic checks that the supplied function panics as expected. // AssertPanicMessageContains checks that the supplied function panics as expected and the message
func AssertPanic(t *testing.T, message string, funcThatShouldPanic func()) { // obtained by formatting the recovered value as a string contains the expected contents.
func AssertPanicMessageContains(t *testing.T, message, expectedMessageContents string, funcThatShouldPanic func()) {
t.Helper() t.Helper()
panicked := false panicked := false
var recovered interface{}
func() { func() {
defer func() { defer func() {
if x := recover(); x != nil { if recovered = recover(); recovered != nil {
panicked = true panicked = true
} }
}() }()
funcThatShouldPanic() funcThatShouldPanic()
}() }()
if !panicked { if !panicked {
t.Error(message) t.Errorf("%s: did not panic", message)
} }
panicMessage := fmt.Sprintf("%s", recovered)
AssertStringDoesContain(t, fmt.Sprintf("%s: panic message", message), panicMessage, expectedMessageContents)
} }

View File

@@ -84,9 +84,9 @@ func TestAddPropertySimple(t *testing.T) {
set.AddProperty(name, val) set.AddProperty(name, val)
android.AssertDeepEquals(t, "wrong value", val, set.getValue(name)) android.AssertDeepEquals(t, "wrong value", val, set.getValue(name))
} }
android.AssertPanic(t, "adding x again should panic", android.AssertPanicMessageContains(t, "adding x again should panic", `Property "x" already exists in property set`,
func() { set.AddProperty("x", "taxi") }) func() { set.AddProperty("x", "taxi") })
android.AssertPanic(t, "adding arr again should panic", android.AssertPanicMessageContains(t, "adding arr again should panic", `Property "arr" already exists in property set`,
func() { set.AddProperty("arr", []string{"d"}) }) func() { set.AddProperty("arr", []string{"d"}) })
} }
@@ -124,14 +124,14 @@ func TestAddPropertySubset(t *testing.T) {
t.Run("add conflicting subset", func(t *testing.T) { t.Run("add conflicting subset", func(t *testing.T) {
set := propertySetFixture().(*bpPropertySet) set := propertySetFixture().(*bpPropertySet)
android.AssertPanic(t, "adding x again should panic", android.AssertPanicMessageContains(t, "adding x again should panic", `Property "x" already exists in property set`,
func() { set.AddProperty("x", propertySetFixture()) }) func() { set.AddProperty("x", propertySetFixture()) })
}) })
t.Run("add non-pointer struct", func(t *testing.T) { t.Run("add non-pointer struct", func(t *testing.T) {
set := propertySetFixture().(*bpPropertySet) set := propertySetFixture().(*bpPropertySet)
str := propertyStructFixture().(*propertyStruct) str := propertyStructFixture().(*propertyStruct)
android.AssertPanic(t, "adding a non-pointer struct should panic", android.AssertPanicMessageContains(t, "adding a non-pointer struct should panic", "Value is a struct, not a pointer to one:",
func() { set.AddProperty("new", *str) }) func() { set.AddProperty("new", *str) })
}) })
} }