Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c737facd authored by Paul Duffin's avatar Paul Duffin Committed by Gerrit Code Review
Browse files

Merge "Replace AssertPanic with AssertPanicMessageContains"

parents 50e49818 9f4b3bbb
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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)
}
+4 −4
Original line number Diff line number Diff line
@@ -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) })
	})
}