Skip to content

Commit eaf5ae9

Browse files
authored
Allow Stream<? extends TestTemplateInvocationContext> return types (#4750)
For consistency with `ClassTemplateInvocationContextProvider` and to make implementations simpler, this commit changes the return type of the `provideTestTemplateInvocationContexts(ExtensionContext)` method of the `TestTemplateInvocationContextProvider` interface to allow more concrete `Streams` to be returned. This change is source compatible, meaning implementations will still compile when declaring `Stream<TestTemplateInvocationContext>` as method return type. To check for binary compatibility, I used Pioneer's `RetryingTestExtension` with a 6.0.0-SNAPSHOT that included this change. The extension kept working. Nevertheless, I included this change as potentially breaking in the release notes. Resolves #3577.
1 parent a3d2a2b commit eaf5ae9

File tree

7 files changed

+14
-16
lines changed

7 files changed

+14
-16
lines changed

documentation/src/docs/asciidoc/release-notes/release-notes-6.0.0-M2.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ repository on GitHub.
6161
[[release-notes-6.0.0-M2-junit-jupiter-deprecations-and-breaking-changes]]
6262
==== Deprecations and Breaking Changes
6363

64-
* ❓
64+
* Change return type of `provideTestTemplateInvocationContexts(ExtensionContext)` method
65+
of the `TestTemplateInvocationContextProvider` interface from
66+
`Stream<TestTemplateInvocationContext>` to
67+
`Stream<? extends TestTemplateInvocationContext>`.
6568

6669
[[release-notes-6.0.0-M2-junit-jupiter-new-features-and-improvements]]
6770
==== New Features and Improvements

junit-jupiter-api/src/main/java/org/junit/jupiter/api/extension/TestTemplateInvocationContextProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public interface TestTemplateInvocationContextProvider extends Extension {
9191
* @see #supportsTestTemplate
9292
* @see ExtensionContext
9393
*/
94-
Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context);
94+
Stream<? extends TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context);
9595

9696
/**
9797
* Signal that this provider may provide zero

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/RepeatedTestExtension.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import org.junit.jupiter.api.RepeatedTest;
2222
import org.junit.jupiter.api.extension.ExtensionContext;
23-
import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
2423
import org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider;
2524
import org.junit.platform.commons.util.Preconditions;
2625

@@ -38,7 +37,7 @@ public boolean supportsTestTemplate(ExtensionContext context) {
3837
}
3938

4039
@Override
41-
public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) {
40+
public Stream<RepeatedTestInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) {
4241
Method testMethod = context.getRequiredTestMethod();
4342
String displayName = context.getDisplayName();
4443
RepeatedTest repeatedTest = findAnnotation(testMethod, RepeatedTest.class).get();

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,12 @@
2828
import java.util.function.Predicate;
2929

3030
import org.junit.jupiter.api.TestInstance;
31-
import org.junit.jupiter.api.extension.ClassTemplateInvocationContext;
3231
import org.junit.jupiter.params.provider.Arguments;
3332
import org.junit.platform.commons.JUnitException;
3433
import org.junit.platform.commons.support.HierarchyTraversalMode;
3534
import org.junit.platform.commons.util.ReflectionUtils;
3635

37-
class ParameterizedClassContext implements ParameterizedDeclarationContext<ClassTemplateInvocationContext> {
36+
class ParameterizedClassContext implements ParameterizedDeclarationContext<ParameterizedClassInvocationContext> {
3837

3938
private final Class<?> testClass;
4039
private final ParameterizedClass annotation;
@@ -124,7 +123,7 @@ public ResolverFacade getResolverFacade() {
124123
}
125124

126125
@Override
127-
public ClassTemplateInvocationContext createInvocationContext(ParameterizedInvocationNameFormatter formatter,
126+
public ParameterizedClassInvocationContext createInvocationContext(ParameterizedInvocationNameFormatter formatter,
128127
Arguments arguments, int invocationIndex) {
129128
return new ParameterizedClassInvocationContext(this, formatter, arguments, invocationIndex);
130129
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.stream.Stream;
2222

2323
import org.junit.jupiter.api.TestInstance;
24-
import org.junit.jupiter.api.extension.ClassTemplateInvocationContext;
2524
import org.junit.jupiter.api.extension.ClassTemplateInvocationContextProvider;
2625
import org.junit.jupiter.api.extension.ExtensionContext;
2726
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
@@ -35,7 +34,7 @@
3534
/**
3635
* @since 5.13
3736
*/
38-
class ParameterizedClassExtension extends ParameterizedInvocationContextProvider<ClassTemplateInvocationContext>
37+
class ParameterizedClassExtension extends ParameterizedInvocationContextProvider<ParameterizedClassInvocationContext>
3938
implements ClassTemplateInvocationContextProvider, ParameterResolver {
4039

4140
private static final String DECLARATION_CONTEXT_KEY = "context";
@@ -70,7 +69,7 @@ public boolean supportsClassTemplate(ExtensionContext extensionContext) {
7069
}
7170

7271
@Override
73-
public Stream<? extends ClassTemplateInvocationContext> provideClassTemplateInvocationContexts(
72+
public Stream<ParameterizedClassInvocationContext> provideClassTemplateInvocationContexts(
7473
ExtensionContext extensionContext) {
7574

7675
return provideInvocationContexts(extensionContext, getDeclarationContext(extensionContext));

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import java.lang.reflect.Method;
1414

15-
import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
1615
import org.junit.jupiter.params.provider.Arguments;
1716
import org.junit.platform.commons.util.Preconditions;
1817

@@ -22,7 +21,7 @@
2221
*
2322
* @since 5.3
2423
*/
25-
class ParameterizedTestContext implements ParameterizedDeclarationContext<TestTemplateInvocationContext> {
24+
class ParameterizedTestContext implements ParameterizedDeclarationContext<ParameterizedTestInvocationContext> {
2625

2726
private final Class<?> testClass;
2827
private final Method method;
@@ -77,7 +76,7 @@ public ResolverFacade getResolverFacade() {
7776
}
7877

7978
@Override
80-
public TestTemplateInvocationContext createInvocationContext(ParameterizedInvocationNameFormatter formatter,
79+
public ParameterizedTestInvocationContext createInvocationContext(ParameterizedInvocationNameFormatter formatter,
8180
Arguments arguments, int invocationIndex) {
8281
return new ParameterizedTestInvocationContext(this, formatter, arguments, invocationIndex);
8382
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,12 @@
1818

1919
import org.junit.jupiter.api.extension.ExtensionContext;
2020
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
21-
import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
2221
import org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider;
2322

2423
/**
2524
* @since 5.0
2625
*/
27-
class ParameterizedTestExtension extends ParameterizedInvocationContextProvider<TestTemplateInvocationContext>
26+
class ParameterizedTestExtension extends ParameterizedInvocationContextProvider<ParameterizedTestInvocationContext>
2827
implements TestTemplateInvocationContextProvider {
2928

3029
static final String DECLARATION_CONTEXT_KEY = "context";
@@ -45,7 +44,7 @@ public boolean supportsTestTemplate(ExtensionContext context) {
4544
}
4645

4746
@Override
48-
public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(
47+
public Stream<ParameterizedTestInvocationContext> provideTestTemplateInvocationContexts(
4948
ExtensionContext extensionContext) {
5049

5150
return provideInvocationContexts(extensionContext, getDeclarationContext(extensionContext));

0 commit comments

Comments
 (0)