Skip to content

Commit d9fce9e

Browse files
committed
Introduce discoveryRequest() and executionRequest() aliases in builders
Prior to this commit, LauncherDiscoveryRequestBuilder.request() and LauncherExecutionRequestBuilder.request() could not both be used via static imports in the same Java source file, since the names conflict. To address that and improve the programming model, this commit introduces discoveryRequest() and executionRequest() aliases in those builders, respectively. Closes #4865
1 parent 005daab commit d9fce9e

File tree

6 files changed

+101
-43
lines changed

6 files changed

+101
-43
lines changed

documentation/src/docs/asciidoc/link-attributes.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ endif::[]
6868
:LauncherDiscoveryRequest: {javadoc-root}/org.junit.platform.launcher/org/junit/platform/launcher/LauncherDiscoveryRequest.html[LauncherDiscoveryRequest]
6969
:LauncherDiscoveryRequestBuilder: {javadoc-root}/org.junit.platform.launcher/org/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder.html[LauncherDiscoveryRequestBuilder]
7070
:LauncherExecutionRequest: {javadoc-root}/org.junit.platform.launcher/org/junit/platform/launcher/LauncherExecutionRequest.html[LauncherExecutionRequest]
71+
:LauncherExecutionRequestBuilder: {javadoc-root}/org.junit.platform.launcher/org/junit/platform/launcher/core/LauncherExecutionRequestBuilder.html[LauncherExecutionRequestBuilder]
7172
:LauncherFactory: {javadoc-root}/org.junit.platform.launcher/org/junit/platform/launcher/core/LauncherFactory.html[LauncherFactory]
7273
:LauncherInterceptor: {javadoc-root}/org.junit.platform.launcher/org/junit/platform/launcher/LauncherInterceptor.html[LauncherInterceptor]
7374
:LauncherSession: {javadoc-root}/org.junit.platform.launcher/org/junit/platform/launcher/LauncherSession.html[LauncherSession]

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ guidance on upgrading from JUnit 5.x.y to 6.0.0.
3636
[[release-notes-6.0.0-RC2-junit-platform-new-features-and-improvements]]
3737
==== New Features and Improvements
3838

39+
* New `discoveryRequest()` method in `{LauncherDiscoveryRequestBuilder}`, which is an
40+
alias for the existing `request()` method and is intended to be used via a `static`
41+
import.
42+
* New `executionRequest(...)` methods in `{LauncherExecutionRequestBuilder}`, which are
43+
aliases for the existing `request(...)` methods and are intended to be used via a
44+
`static` import.
3945
* New `selectClasses(...)` and `selectClassesByName(...)` utility methods have been
4046
introduced in `{DiscoverySelectors}` to simplify use cases where one needs to select
4147
multiple individual test classes for the `Launcher` or `EngineTestKit`.

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@
5151
* import static org.junit.platform.engine.discovery.ClassNameFilter.*;
5252
* import static org.junit.platform.launcher.EngineFilter.*;
5353
* import static org.junit.platform.launcher.TagFilter.*;
54+
* import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.discoveryRequest;
5455
*
5556
* // ...
5657
*
57-
* LauncherDiscoveryRequestBuilder.request()
58+
* discoveryRequest()
5859
* .selectors(
5960
* selectPackage("org.example.user"),
6061
* selectClass("org.example.payment.PaymentTests"),
@@ -122,11 +123,28 @@ public final class LauncherDiscoveryRequestBuilder {
122123
* Create a new {@code LauncherDiscoveryRequestBuilder}.
123124
*
124125
* @return a new builder
126+
* @see #discoveryRequest()
125127
*/
126128
public static LauncherDiscoveryRequestBuilder request() {
127129
return new LauncherDiscoveryRequestBuilder();
128130
}
129131

132+
/**
133+
* Create a new {@code LauncherDiscoveryRequestBuilder}.
134+
*
135+
* <p>This method is an <em>alias</em> for {@link #request()} and is intended
136+
* to be used when statically imported &mdash; for example, via:
137+
* {@code import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.discoveryRequest;}
138+
*
139+
* @return a new builder
140+
* @since 6.0
141+
* @see #request()
142+
*/
143+
@API(status = STABLE, since = "6.0")
144+
public static LauncherDiscoveryRequestBuilder discoveryRequest() {
145+
return request();
146+
}
147+
130148
private LauncherDiscoveryRequestBuilder() {
131149
}
132150

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/LauncherExecutionRequestBuilder.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,23 +41,55 @@ public final class LauncherExecutionRequestBuilder {
4141
* {@link LauncherDiscoveryRequest}.
4242
*
4343
* @return a new builder
44+
* @see #executionRequest(LauncherDiscoveryRequest)
4445
*/
4546
public static LauncherExecutionRequestBuilder request(LauncherDiscoveryRequest discoveryRequest) {
4647
Preconditions.notNull(discoveryRequest, "LauncherDiscoveryRequest must not be null");
4748
return new LauncherExecutionRequestBuilder(discoveryRequest, null);
4849
}
4950

51+
/**
52+
* Create a new {@code LauncherExecutionRequestBuilder} from the supplied
53+
* {@link LauncherDiscoveryRequest}.
54+
*
55+
* <p>This method is an <em>alias</em> for {@link #request(LauncherDiscoveryRequest)}
56+
* and is intended to be used when statically imported &mdash; for example, via:
57+
* {@code import static org.junit.platform.launcher.core.LauncherExecutionRequestBuilder.executionRequest;}
58+
*
59+
* @return a new builder
60+
* @see #request(LauncherDiscoveryRequest)
61+
*/
62+
public static LauncherExecutionRequestBuilder executionRequest(LauncherDiscoveryRequest discoveryRequest) {
63+
return request(discoveryRequest);
64+
}
65+
5066
/**
5167
* Create a new {@code LauncherExecutionRequestBuilder} from the supplied
5268
* {@link TestPlan}.
5369
*
5470
* @return a new builder
71+
* @see #executionRequest(TestPlan)
5572
*/
5673
public static LauncherExecutionRequestBuilder request(TestPlan testPlan) {
5774
Preconditions.notNull(testPlan, "TestPlan must not be null");
5875
return new LauncherExecutionRequestBuilder(null, testPlan);
5976
}
6077

78+
/**
79+
* Create a new {@code LauncherExecutionRequestBuilder} from the supplied
80+
* {@link TestPlan}.
81+
*
82+
* <p>This method is an <em>alias</em> for {@link #request(TestPlan)}
83+
* and is intended to be used when statically imported &mdash; for example, via:
84+
* {@code import static org.junit.platform.launcher.core.LauncherExecutionRequestBuilder.executionRequest;}
85+
*
86+
* @return a new builder
87+
* @see #request(TestPlan)
88+
*/
89+
public static LauncherExecutionRequestBuilder executionRequest(TestPlan testPlan) {
90+
return request(testPlan);
91+
}
92+
6193
private final @Nullable LauncherDiscoveryRequest discoveryRequest;
6294
private final @Nullable TestPlan testPlan;
6395
private final Collection<TestExecutionListener> executionListeners = new ArrayList<>();

platform-tests/src/test/java/org/junit/platform/launcher/core/LauncherDiscoveryRequestBuilderTests.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectUniqueId;
2222
import static org.junit.platform.launcher.EngineFilter.includeEngines;
2323
import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.DEFAULT_DISCOVERY_LISTENER_CONFIGURATION_PROPERTY_NAME;
24-
import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.request;
24+
import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.discoveryRequest;
2525
import static org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners.abortOnFailure;
2626
import static org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners.logging;
2727

@@ -56,7 +56,7 @@ class DiscoverySelectionTests {
5656
@Test
5757
void modulesAreStoredInDiscoveryRequest() {
5858
// @formatter:off
59-
var discoveryRequest = request()
59+
var discoveryRequest = LauncherDiscoveryRequestBuilder.request()
6060
.selectors(
6161
selectModule("java.base")
6262
).build();
@@ -70,7 +70,7 @@ void modulesAreStoredInDiscoveryRequest() {
7070
@Test
7171
void packagesAreStoredInDiscoveryRequest() {
7272
// @formatter:off
73-
var discoveryRequest = request()
73+
var discoveryRequest = discoveryRequest()
7474
.selectors(
7575
selectPackage("org.junit.platform.engine")
7676
).build();
@@ -84,7 +84,7 @@ void packagesAreStoredInDiscoveryRequest() {
8484
@Test
8585
void classesAreStoredInDiscoveryRequest() {
8686
// @formatter:off
87-
var discoveryRequest = request()
87+
var discoveryRequest = discoveryRequest()
8888
.selectors(
8989
selectClass(LauncherDiscoveryRequestBuilderTests.class.getName()),
9090
selectClass(SampleTestClass.class)
@@ -101,7 +101,7 @@ void classesAreStoredInDiscoveryRequest() {
101101
@Test
102102
void methodsByFullyQualifiedNameAreStoredInDiscoveryRequest() {
103103
// @formatter:off
104-
var discoveryRequest = request()
104+
var discoveryRequest = discoveryRequest()
105105
.selectors(selectMethod(fullyQualifiedMethodName()))
106106
.build();
107107
// @formatter:on
@@ -120,7 +120,7 @@ void methodsByNameAreStoredInDiscoveryRequest() throws Exception {
120120
var testMethod = testClass.getDeclaredMethod("test");
121121

122122
// @formatter:off
123-
var discoveryRequest = request()
123+
var discoveryRequest = discoveryRequest()
124124
.selectors(selectMethod(SampleTestClass.class.getName(), "test"))
125125
.build();
126126
// @formatter:on
@@ -139,7 +139,7 @@ void methodsByClassAreStoredInDiscoveryRequest() throws Exception {
139139
var testMethod = testClass.getDeclaredMethod("test");
140140

141141
// @formatter:off
142-
var discoveryRequest = (DefaultDiscoveryRequest) request()
142+
var discoveryRequest = (DefaultDiscoveryRequest) discoveryRequest()
143143
.selectors(
144144
selectMethod(testClass, "test")
145145
).build();
@@ -159,7 +159,7 @@ void uniqueIdsAreStoredInDiscoveryRequest() {
159159
var id2 = UniqueId.forEngine("engine").append("foo", "id2");
160160

161161
// @formatter:off
162-
var discoveryRequest = request()
162+
var discoveryRequest = discoveryRequest()
163163
.selectors(
164164
selectUniqueId(id1),
165165
selectUniqueId(id2)
@@ -183,7 +183,7 @@ void engineFiltersAreStoredInDiscoveryRequest() {
183183
TestEngine engine3 = new TestEngineStub("engine3");
184184

185185
// @formatter:off
186-
var discoveryRequest = request()
186+
var discoveryRequest = discoveryRequest()
187187
.filters(includeEngines(engine1.getId(), engine2.getId()))
188188
.build();
189189
// @formatter:on
@@ -201,7 +201,7 @@ void discoveryFiltersAreStoredInDiscoveryRequest() {
201201
var filter1 = new DiscoveryFilterStub<>("filter1");
202202
var filter2 = new DiscoveryFilterStub<>("filter2");
203203
// @formatter:off
204-
var discoveryRequest = request()
204+
var discoveryRequest = discoveryRequest()
205205
.filters(filter1, filter2)
206206
.build();
207207
// @formatter:on
@@ -215,7 +215,7 @@ void postDiscoveryFiltersAreStoredInDiscoveryRequest() {
215215
var postFilter1 = new PostDiscoveryFilterStub("postFilter1");
216216
var postFilter2 = new PostDiscoveryFilterStub("postFilter2");
217217
// @formatter:off
218-
var discoveryRequest = request()
218+
var discoveryRequest = discoveryRequest()
219219
.filters(postFilter1, postFilter2)
220220
.build();
221221
// @formatter:on
@@ -227,7 +227,7 @@ void postDiscoveryFiltersAreStoredInDiscoveryRequest() {
227227
@Test
228228
void exceptionForIllegalFilterClass() {
229229
Exception exception = assertThrows(PreconditionViolationException.class,
230-
() -> request().filters(o -> excluded("reason")));
230+
() -> discoveryRequest().filters(o -> excluded("reason")));
231231

232232
assertThat(exception).hasMessageStartingWith("Filter");
233233
assertThat(exception).hasMessageEndingWith(
@@ -240,7 +240,7 @@ class DiscoveryConfigurationParameterTests {
240240

241241
@Test
242242
void withoutConfigurationParametersSet_NoConfigurationParametersAreStoredInDiscoveryRequest() {
243-
var discoveryRequest = request().build();
243+
var discoveryRequest = discoveryRequest().build();
244244

245245
var configParams = discoveryRequest.getConfigurationParameters();
246246
assertThat(configParams.get("key")).isNotPresent();
@@ -249,7 +249,7 @@ void withoutConfigurationParametersSet_NoConfigurationParametersAreStoredInDisco
249249
@Test
250250
void configurationParameterAddedDirectly_isStoredInDiscoveryRequest() {
251251
// @formatter:off
252-
var discoveryRequest = request()
252+
var discoveryRequest = discoveryRequest()
253253
.configurationParameter("key", "value")
254254
.build();
255255
// @formatter:on
@@ -261,7 +261,7 @@ void configurationParameterAddedDirectly_isStoredInDiscoveryRequest() {
261261
@Test
262262
void configurationParameterAddedDirectlyTwice_overridesPreviousValueInDiscoveryRequest() {
263263
// @formatter:off
264-
var discoveryRequest = request()
264+
var discoveryRequest = discoveryRequest()
265265
.configurationParameter("key", "value")
266266
.configurationParameter("key", "value-new")
267267
.build();
@@ -274,7 +274,7 @@ void configurationParameterAddedDirectlyTwice_overridesPreviousValueInDiscoveryR
274274
@Test
275275
void multipleConfigurationParametersAddedDirectly_areStoredInDiscoveryRequest() {
276276
// @formatter:off
277-
var discoveryRequest = request()
277+
var discoveryRequest = discoveryRequest()
278278
.configurationParameter("key1", "value1")
279279
.configurationParameter("key2", "value2")
280280
.build();
@@ -288,7 +288,7 @@ void multipleConfigurationParametersAddedDirectly_areStoredInDiscoveryRequest()
288288
@Test
289289
void configurationParameterAddedByMap_isStoredInDiscoveryRequest() {
290290
// @formatter:off
291-
var discoveryRequest = request()
291+
var discoveryRequest = discoveryRequest()
292292
.configurationParameters(Map.of("key", "value"))
293293
.build();
294294
// @formatter:on
@@ -304,7 +304,7 @@ void multipleConfigurationParametersAddedByMap_areStoredInDiscoveryRequest() {
304304
configurationParams.put("key2", "value2");
305305

306306
// @formatter:off
307-
var discoveryRequest = request()
307+
var discoveryRequest = discoveryRequest()
308308
.configurationParameters(configurationParams)
309309
.build();
310310
// @formatter:on
@@ -317,7 +317,7 @@ void multipleConfigurationParametersAddedByMap_areStoredInDiscoveryRequest() {
317317
@Test
318318
void configurationParametersResource_areStoredInDiscoveryRequest() {
319319
// @formatter:off
320-
var discoveryRequest = request()
320+
var discoveryRequest = discoveryRequest()
321321
.configurationParametersResources("config-test.properties")
322322
.build();
323323
// @formatter:on
@@ -331,7 +331,7 @@ void configurationParametersResource_areStoredInDiscoveryRequest() {
331331
@Test
332332
void configurationParametersResource_explicitConfigParametersOverrideResource() {
333333
// @formatter:off
334-
var discoveryRequest = request()
334+
var discoveryRequest = discoveryRequest()
335335
.configurationParametersResources("config-test.properties")
336336
.configurationParameter("com.example.prop.first", "first value override")
337337
.build();
@@ -345,7 +345,7 @@ void configurationParametersResource_explicitConfigParametersOverrideResource()
345345
@Test
346346
void configurationParametersResource_lastDeclaredResourceFileWins() {
347347
// @formatter:off
348-
var discoveryRequest = request()
348+
var discoveryRequest = discoveryRequest()
349349
.configurationParametersResources("config-test.properties")
350350
.configurationParametersResources("config-test-override.properties")
351351
.build();
@@ -362,14 +362,14 @@ class DiscoveryListenerTests {
362362

363363
@Test
364364
void usesAbortOnFailureByDefault() {
365-
var request = request().build();
365+
var request = discoveryRequest().build();
366366

367367
assertThat(request.getDiscoveryListener()).isEqualTo(abortOnFailure());
368368
}
369369

370370
@Test
371371
void onlyAddsAbortOnFailureOnce() {
372-
var request = request() //
372+
var request = discoveryRequest() //
373373
.listeners(abortOnFailure()) //
374374
.configurationParameter(DEFAULT_DISCOVERY_LISTENER_CONFIGURATION_PROPERTY_NAME, "abortOnFailure") //
375375
.build();
@@ -379,7 +379,7 @@ void onlyAddsAbortOnFailureOnce() {
379379

380380
@Test
381381
void onlyAddsLoggingOnce() {
382-
var request = request() //
382+
var request = discoveryRequest() //
383383
.listeners(logging()) //
384384
.configurationParameter(DEFAULT_DISCOVERY_LISTENER_CONFIGURATION_PROPERTY_NAME, "logging") //
385385
.build();
@@ -389,7 +389,7 @@ void onlyAddsLoggingOnce() {
389389

390390
@Test
391391
void createsCompositeForMultipleListeners() {
392-
var request = request() //
392+
var request = discoveryRequest() //
393393
.listeners(logging(), abortOnFailure()) //
394394
.build();
395395

0 commit comments

Comments
 (0)