Skip to content

Commit ad7329e

Browse files
committed
copy-on-write for error test
1 parent 420d19b commit ad7329e

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

error_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,35 @@ func TestErrorMessages(t *testing.T) {
7272
})
7373
}
7474

75+
func TestImmutableError(t *testing.T) {
76+
t.Run("Property", func(t *testing.T) {
77+
err := testType.NewWithNoMessage()
78+
err1 := err.WithProperty(PropertyPayload(), 1)
79+
err2 := err1.WithProperty(PropertyPayload(), 2)
80+
81+
payload, ok := ExtractPayload(err)
82+
require.False(t, ok)
83+
84+
payload, ok = ExtractPayload(err1)
85+
require.True(t, ok)
86+
require.EqualValues(t, 1, payload)
87+
88+
payload, ok = ExtractPayload(err2)
89+
require.True(t, ok)
90+
require.EqualValues(t, 2, payload)
91+
})
92+
93+
t.Run("Underlying", func(t *testing.T) {
94+
err := testType.NewWithNoMessage()
95+
err1 := err.WithUnderlyingErrors(testSubtype0.NewWithNoMessage())
96+
err2 := err1.WithUnderlyingErrors(testSubtype1.NewWithNoMessage())
97+
98+
require.Len(t, err.underlying, 0)
99+
require.Len(t, err1.underlying, 1)
100+
require.Len(t, err2.underlying, 2)
101+
})
102+
}
103+
75104
func TestErrorStackTrace(t *testing.T) {
76105
err := createErrorFuncInStackTrace(testType)
77106
output := fmt.Sprintf("%+v", err)

0 commit comments

Comments
 (0)