@@ -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+
75104func TestErrorStackTrace (t * testing.T ) {
76105 err := createErrorFuncInStackTrace (testType )
77106 output := fmt .Sprintf ("%+v" , err )
0 commit comments