Skip to content

[12.x] Fix queue fake cleanup to always restore original queue manager #56165

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 1, 2025

Conversation

xurshudyan
Copy link
Contributor

The current implementations of Queue::fakeFor() and Queue::fakeExceptFor() use tap() to restore the original queue manager after running a callback. However, if the callback throws an exception—such as a failed assertion (ExpectationFailedException)— the restoration never happens. This leaves the fake queue active outside the intended scope, causing tests to leak state and behave unpredictably.

This PR replaces tap() with a try...finally block to guarantee the original queue manager is always restored, even if exceptions occur during the callback execution.

@taylorotwell taylorotwell merged commit 1536df3 into laravel:12.x Jul 1, 2025
62 checks passed
mohammad-fouladgar pushed a commit to mohammad-fouladgar/framework that referenced this pull request Jul 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants