Skip to content

Commit 8f8b694

Browse files
committed
Close all arguments, not just consumed ones
1 parent 1293376 commit 8f8b694

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

documentation/src/docs/asciidoc/release-notes/release-notes-5.13.0-M1.adoc

+5-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ repository on GitHub.
3535
[[release-notes-5.13.0-M1-junit-jupiter-bug-fixes]]
3636
==== Bug Fixes
3737

38-
* ❓
38+
* If `@ParameterizedTest(autoCloseArguments = true)`, all arguments returned by the used
39+
`ArgumentsProvider` implementations are now closed even if the test method declares
40+
fewer parameters.
41+
* `AutoCloseable` arguments returned by an `ArgumentsProvider` are now closed even if they
42+
are wrapped with `Named`.
3943

4044
[[release-notes-5.13.0-M1-junit-jupiter-deprecations-and-breaking-changes]]
4145
==== Deprecations and Breaking Changes

junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestParameterResolver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public void afterTestExecution(ExtensionContext context) {
9595
Store store = context.getStore(NAMESPACE);
9696
AtomicInteger argumentIndex = new AtomicInteger();
9797

98-
Arrays.stream(this.arguments.getConsumedPayloads()) //
98+
Arrays.stream(this.arguments.getAllPayloads()) //
9999
.filter(AutoCloseable.class::isInstance) //
100100
.map(AutoCloseable.class::cast) //
101101
.map(CloseableArgument::new) //

jupiter-tests/src/test/java/org/junit/jupiter/params/ParameterizedTestIntegrationTests.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import static org.assertj.core.api.Assertions.assertThat;
1515
import static org.assertj.core.api.Assertions.within;
1616
import static org.junit.jupiter.api.Assertions.assertEquals;
17-
import static org.junit.jupiter.api.Assertions.assertFalse;
1817
import static org.junit.jupiter.api.Assertions.assertNotNull;
1918
import static org.junit.jupiter.api.Assertions.assertTrue;
2019
import static org.junit.jupiter.api.Assertions.fail;
@@ -127,8 +126,9 @@ class ParameterizedTestIntegrationTests {
127126
private final Locale originalLocale = Locale.getDefault(Locale.Category.FORMAT);
128127

129128
@AfterEach
130-
void restoreLocale() {
129+
void reset() {
131130
Locale.setDefault(Locale.Category.FORMAT, originalLocale);
131+
AutoCloseableArgument.closeCounter = 0;
132132
}
133133

134134
@ParameterizedTest
@@ -1310,7 +1310,7 @@ void closeAutoCloseableArgumentsAfterTest() {
13101310
results.allEvents().assertThatEvents() //
13111311
.haveExactly(1, event(test(), finishedSuccessfully()));
13121312

1313-
assertTrue(AutoCloseableArgument.isClosed);
1313+
assertEquals(2, AutoCloseableArgument.closeCounter);
13141314
}
13151315

13161316
@Test
@@ -1441,7 +1441,7 @@ void testWithIgnoreLeadingAndTrailingWhitespaceSetToTrueForCsvFileSource(String
14411441
@ParameterizedTest
14421442
@ArgumentsSource(AutoCloseableArgumentProvider.class)
14431443
void testWithAutoCloseableArgument(AutoCloseableArgument autoCloseable) {
1444-
assertFalse(AutoCloseableArgument.isClosed);
1444+
assertEquals(0, AutoCloseableArgument.closeCounter);
14451445
}
14461446

14471447
@ParameterizedTest
@@ -2521,17 +2521,17 @@ private static class AutoCloseableArgumentProvider implements ArgumentsProvider
25212521

25222522
@Override
25232523
public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
2524-
return Stream.of(arguments(new AutoCloseableArgument()));
2524+
return Stream.of(arguments(new AutoCloseableArgument(), Named.of("unused", new AutoCloseableArgument())));
25252525
}
25262526
}
25272527

25282528
static class AutoCloseableArgument implements AutoCloseable {
25292529

2530-
static boolean isClosed = false;
2530+
static int closeCounter = 0;
25312531

25322532
@Override
25332533
public void close() {
2534-
isClosed = true;
2534+
closeCounter++;
25352535
}
25362536
}
25372537

0 commit comments

Comments
 (0)