@@ -403,11 +403,11 @@ func (o *runOption) runSuite(loader testing.Loader, dataContext map[string]inter
403403 o .limiter .Accept ()
404404
405405 ctxWithTimeout , cancel := context .WithTimeout (ctx , o .requestTimeout )
406+ defer cancel () // Ensure context is always cancelled when leaving this scope
406407 ctxWithTimeout = context .WithValue (ctxWithTimeout , runner .ContextKey ("" ).ParentDir (), loader .GetContext ())
407408
408409 output , err = suiteRunner .RunTestCase (& testCase , dataContext , ctxWithTimeout )
409410 if err = util .ErrorWrap (err , "failed to run '%s', %v" , testCase .Name , err ); err != nil {
410- cancel () // Cancel context before handling error
411411 if o .requestIgnoreError {
412412 errs = append (errs , err )
413413 } else {
@@ -419,12 +419,10 @@ func (o *runOption) runSuite(loader testing.Loader, dataContext map[string]inter
419419 reverseRunner .WithTestReporter (runner .NewDiscardTestReporter ())
420420 if _ , err = reverseRunner .RunTestCase (
421421 & testCase , dataContext , ctxWithTimeout ); err != nil {
422- cancel () // Cancel context before returning error
423422 err = fmt .Errorf ("got error in reverse test: %w" , err )
424423 return
425424 }
426425 suiteRunner .WithTestReporter (o .reporter )
427- cancel () // Cancel context after successful completion
428426 }
429427 dataContext [testCase .Name ] = output
430428 }
0 commit comments