From 5491cb3f50916c194d15e6a128759ea435c7d95d Mon Sep 17 00:00:00 2001 From: Alec Thomas Date: Wed, 27 Mar 2024 13:40:45 +1100 Subject: [PATCH] feat: use %+v for displaying errors Some error tracing libraries use this to write the full trace, which is useful when debugging. --- assert.go | 6 +++--- assert_test.go | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/assert.go b/assert.go index 616294a..be0e4cc 100644 --- a/assert.go +++ b/assert.go @@ -148,7 +148,7 @@ func IsError(t testing.TB, err, target error, msgAndArgs ...any) { return } t.Helper() - t.Fatal(formatMsgAndArgs(fmt.Sprintf("Error tree %q should contain error %q", err, target), msgAndArgs...)) + t.Fatal(formatMsgAndArgs(fmt.Sprintf("Error tree %+v should contain error %q", err, target), msgAndArgs...)) } // NotIsError asserts than no error in "err"'s tree matches "target". @@ -157,7 +157,7 @@ func NotIsError(t testing.TB, err, target error, msgAndArgs ...any) { return } t.Helper() - t.Fatal(formatMsgAndArgs(fmt.Sprintf("Error tree %q should NOT contain error %q", err, target), msgAndArgs...)) + t.Fatal(formatMsgAndArgs(fmt.Sprintf("Error tree %+v should NOT contain error %q", err, target), msgAndArgs...)) } // Error asserts that an error is not nil. @@ -176,7 +176,7 @@ func NoError(t testing.TB, err error, msgAndArgs ...any) { } t.Helper() msg := formatMsgAndArgs("Did not expect an error but got:", msgAndArgs...) - t.Fatalf("%s\n%s", msg, err) + t.Fatalf("%s\n%+v", msg, err) } // True asserts that an expression is true. diff --git a/assert_test.go b/assert_test.go index 20bf37a..b03faae 100644 --- a/assert_test.go +++ b/assert_test.go @@ -86,6 +86,24 @@ func TestEqualError(t *testing.T) { }) } +func TestError(t *testing.T) { + assertOk(t, "Error", func(t testing.TB) { + Error(t, fmt.Errorf("hello")) + }) + assertFail(t, "Nil", func(t testing.TB) { + Error(t, nil) + }) +} + +func TestNoError(t *testing.T) { + assertOk(t, "Nil", func(t testing.TB) { + NoError(t, nil) + }) + assertFail(t, "Error", func(t testing.TB) { + NoError(t, fmt.Errorf("hello")) + }) +} + func TestZero(t *testing.T) { assertOk(t, "Struct", func(t testing.TB) { Zero(t, Data{})