From 9f4b3bbb7c4a5ffa03aff076248c9117d4c22d08 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 16 Mar 2021 13:47:36 +0000 Subject: [PATCH] Replace AssertPanic with AssertPanicMessageContains Bug: 182885307 Test: m nothing Change-Id: Idffa314285c90080796cc3df391de9c314eaa422 --- android/test_asserts.go | 14 ++++++++++---- sdk/bp_test.go | 8 ++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/android/test_asserts.go b/android/test_asserts.go index 4b5e9343e..bfb88ab17 100644 --- a/android/test_asserts.go +++ b/android/test_asserts.go @@ -15,6 +15,7 @@ package android import ( + "fmt" "reflect" "strings" "testing" @@ -162,19 +163,24 @@ func AssertDeepEquals(t *testing.T, message string, expected interface{}, actual } } -// AssertPanic checks that the supplied function panics as expected. -func AssertPanic(t *testing.T, message string, funcThatShouldPanic func()) { +// AssertPanicMessageContains checks that the supplied function panics as expected and the message +// 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() panicked := false + var recovered interface{} func() { defer func() { - if x := recover(); x != nil { + if recovered = recover(); recovered != nil { panicked = true } }() funcThatShouldPanic() }() 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) } diff --git a/sdk/bp_test.go b/sdk/bp_test.go index 2bd8a4307..c620ac2b8 100644 --- a/sdk/bp_test.go +++ b/sdk/bp_test.go @@ -84,9 +84,9 @@ func TestAddPropertySimple(t *testing.T) { set.AddProperty(name, val) 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") }) - 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"}) }) } @@ -124,14 +124,14 @@ func TestAddPropertySubset(t *testing.T) { t.Run("add conflicting subset", func(t *testing.T) { 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()) }) }) t.Run("add non-pointer struct", func(t *testing.T) { set := propertySetFixture().(*bpPropertySet) 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) }) }) }