-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[FrameworkBundle] ensureKernelShutdown in tearDownAfterClass #60564
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
[FrameworkBundle] ensureKernelShutdown in tearDownAfterClass #60564
Conversation
Hey! I see that this is your first PR. That is great! Welcome! Symfony has a contribution guide which I suggest you to read. In short:
Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change. When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor! I am going to sit back now and wait for the reviews. Cheers! Carsonbot |
ea858f6
to
feeac45
Compare
This relies on the child class calling the parent class. |
@nicolas-grekas I've added it in a new public method annotated with |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it'd make more sense to me to add the annotation on the existing method.
My concern is about increasing the public API. People will start using the new method instead of the existing one in their test cases / IDEs will propose both, and people will wonder about that.
Also: I'm fine merging this as a bugfix, so 6.4 works for me.
Made the change to set the annotation directly in the |
674990e
to
8d81b0d
Compare
@nicolas-grekas looks like by changing the method to
Do you think it could be related to the test (actually the |
That failure is a false-positive so we can ignore it. |
@@ -120,8 +120,10 @@ protected static function createKernel(array $options = []): KernelInterface | |||
|
|||
/** | |||
* Shuts the kernel down if it was used in the test - called by the tearDown method by default. | |||
* | |||
* @afterClass |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should also have the attribute, to be compatible with PHPUnit 10+
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, I've added the attribute in addition of the annotation 👍
Is there any other change required?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@stof looks like the attribute is not available, Psalm fails but the tests pass... Is there anything I missed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the attribute is not available because Psalm runs with PHPUnit 9.x installed. But that's not an issue. We don't treat Psalm as a mandatory check, only as an helper tool (and each PR reports only new Psalm errors)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay, thanks for the answer!
7b1d5ad
to
bf9786c
Compare
Thank you @cquintana92. |
So this merge broke our build because for performance reason (to avoid recreating containers at every test) we suppress the tearDown client reset behavior, explicitly not calling the parent::tearDown(), and then suddenly the client got reset anyway, causing issues. Not sure what to do about this though.. I can see how this fixes a bug too. |
I realized that there's another issue: we made the method public, which will break classes that override the method but keep it protected. |
Reverted in 0291ea1 |
How should we proceed to include this, then? Will another PR be made for including the call to |
I suggest going with your initial PR: calling ensureKernelShutdown in teardownAfterClass |
@nicolas-grekas there you go: #60693 |
…ss (cquintana92) This PR was submitted for the 7.4 branch but it was squashed and merged into the 6.4 branch instead. Discussion ---------- [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass | Q | A | ------------- | --- | Branch? | 6.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Issues | None | License | MIT Comes from #60564 This PR performs the following change: In `KernelTestCase`, the kernel is shut down after every test, as per the `static::ensureKernelShutdown()` call in the `tearDown` function. However, if one was to perform any extra code in their `tearDownAfterClass` and call `getContainer`, it would boot up a new kernel, which would then be left dangling. The main issue with that is that when the next Test class is executed, there would already be a booted kernel, so it could happen that it was pointing to dangling resources. By adding this call to `static::ensureKernelShutdown` in the `tearDownAfterClass`, we can ensure that no dangling kernels are left even after the test class has finished. Commits ------- c193b98 [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass
* 6.4: cs tweak [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass Revert "bug #60564 [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass (cquintana92)"
* 7.2: cs tweak [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass Revert "bug symfony#60564 [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass (cquintana92)"
* 7.3: [HttpClient] Suggest amphp/http-client v5 by default [WebProfilerBundle] Fix typos in routing config deprecation messages cs tweak [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass Revert "bug symfony#60564 [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass (cquintana92)" [Security] Keep roles when serializing tokens [JsonPath] Always use brackets notation with `JsonPath::key()`
* 7.4: [HttpClient] Suggest amphp/http-client v5 by default [Security] conflict with event-subscriber v8 Fix leftover [WebProfilerBundle] Fix typos in routing config deprecation messages cs tweak [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass Revert "bug symfony#60564 [FrameworkBundle] ensureKernelShutdown in tearDownAfterClass (cquintana92)" [Security] Keep roles when serializing tokens [JsonPath] Always use brackets notation with `JsonPath::key()`
This PR performs the following change: In
KernelTestCase
, the kernel is shut down after every test, as per thestatic::ensureKernelShutdown()
call in thetearDown
function. However, if one was to perform any extra code in theirtearDownAfterClass
and callgetContainer
, it would boot up a new kernel, which would then be left dangling. The main issue with that is that when the next Test class is executed, there would already be a booted kernel, so it could happen that it was pointing to dangling resources.By adding this call to
static::ensureKernelShutdown
in thetearDownAfterClass
, we can ensure that no dangling kernels are left even after the test class has finished.