Skip to content

Commit

Permalink
Reset junit test's extension failed state for each test class
Browse files Browse the repository at this point in the history
Fix Quarkus TestExtensions to avoid mistakenly transferring the failed
state of one test class to the other.

Closes #37809
  • Loading branch information
zakkak committed Jan 10, 2024
1 parent 53f95bb commit 86bb694
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,14 @@ private QuarkusTestExtensionState ensureStarted(ExtensionContext extensionContex
QuarkusTestExtensionState state = getState(extensionContext);
Class<? extends QuarkusTestProfile> selectedProfile = findProfile(testClass);
boolean wrongProfile = !Objects.equals(selectedProfile, quarkusTestProfile);
// we reset the failed state if we changed test class
boolean resetFailedState = !Objects.equals(extensionContext.getRequiredTestClass(), currentJUnitTestClass);
if (resetFailedState && state != null) {
state.setTestFailed(null);
currentJUnitTestClass = extensionContext.getRequiredTestClass();
}
// we reload the test resources if we changed test class and if we had or will have per-test test resources
boolean reloadTestResources = !Objects.equals(extensionContext.getRequiredTestClass(), currentJUnitTestClass)
boolean reloadTestResources = resetFailedState
&& (hasPerTestResources || QuarkusTestExtension.hasPerTestResources(extensionContext));
if ((state == null && !failedBoot) || wrongProfile || reloadTestResources) {
if (wrongProfile || reloadTestResources) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -586,10 +586,15 @@ private QuarkusTestExtensionState ensureStarted(ExtensionContext extensionContex
QuarkusTestExtensionState state = getState(extensionContext);
Class<? extends QuarkusTestProfile> selectedProfile = getQuarkusTestProfile(extensionContext);
boolean wrongProfile = !Objects.equals(selectedProfile, quarkusTestProfile);
// we reset the failed state if we changed test class and the new test class is not a nested class
boolean resetFailedState = !Objects.equals(extensionContext.getRequiredTestClass(), currentJUnitTestClass)
&& !isNested(currentJUnitTestClass, extensionContext.getRequiredTestClass());
if (resetFailedState && state != null) {
state.setTestFailed(null);
currentJUnitTestClass = extensionContext.getRequiredTestClass();
}
// we reload the test resources if we changed test class and the new test class is not a nested class, and if we had or will have per-test test resources
boolean reloadTestResources = !Objects.equals(extensionContext.getRequiredTestClass(), currentJUnitTestClass)
&& !isNested(currentJUnitTestClass, extensionContext.getRequiredTestClass())
&& (hasPerTestResources || hasPerTestResources(extensionContext));
boolean reloadTestResources = resetFailedState && (hasPerTestResources || hasPerTestResources(extensionContext));
if ((state == null && !failedBoot) || wrongProfile || reloadTestResources) {
if (wrongProfile || reloadTestResources) {
if (state != null) {
Expand Down

0 comments on commit 86bb694

Please sign in to comment.