@@ -153,6 +153,64 @@ func TestToFiberHandler_ExpressThreeParamsWithError(t *testing.T) {
153153 require .True (t , nextCalled )
154154}
155155
156+ func TestToFiberHandler_ExpressThreeParamsWithError_PrefersHandlerErrorOverNextError (t * testing.T ) {
157+ t .Parallel ()
158+
159+ app , ctx := newTestCtx (t )
160+
161+ handler := func (req Req , res Res , next func () error ) error {
162+ assert .Equal (t , app , req .App ())
163+ assert .Equal (t , app , res .App ())
164+ require .EqualError (t , next (), "next error" )
165+ return errors .New ("handler error" )
166+ }
167+
168+ converted , ok := toFiberHandler (handler )
169+ require .True (t , ok )
170+
171+ nextCalled := false
172+ nextHandler := func (_ Ctx ) error {
173+ nextCalled = true
174+ return errors .New ("next error" )
175+ }
176+
177+ withRouteHandlers (t , ctx , converted , nextHandler )
178+
179+ err := converted (ctx )
180+ require .EqualError (t , err , "handler error" )
181+ require .True (t , nextCalled )
182+ }
183+
184+ func TestToFiberHandler_ExpressThreeParamsWithError_PropagatesNextErrorWhenNoReturnError (t * testing.T ) {
185+ t .Parallel ()
186+
187+ app , ctx := newTestCtx (t )
188+
189+ nextErr := errors .New ("next error" )
190+
191+ handler := func (req Req , res Res , next func () error ) error {
192+ assert .Equal (t , app , req .App ())
193+ assert .Equal (t , app , res .App ())
194+ require .ErrorIs (t , next (), nextErr )
195+ return nil
196+ }
197+
198+ converted , ok := toFiberHandler (handler )
199+ require .True (t , ok )
200+
201+ nextCalled := false
202+ nextHandler := func (_ Ctx ) error {
203+ nextCalled = true
204+ return nextErr
205+ }
206+
207+ withRouteHandlers (t , ctx , converted , nextHandler )
208+
209+ err := converted (ctx )
210+ require .ErrorIs (t , err , nextErr )
211+ require .True (t , nextCalled )
212+ }
213+
156214func TestToFiberHandler_ExpressThreeParamsWithoutError (t * testing.T ) {
157215 t .Parallel ()
158216
0 commit comments