|
1 | 1 | package io.cucumber.junit.platform.engine;
|
2 | 2 |
|
| 3 | +import io.cucumber.core.gherkin.Feature; |
| 4 | +import io.cucumber.core.gherkin.Pickle; |
3 | 5 | import io.cucumber.core.logging.LogRecordListener;
|
4 | 6 | import io.cucumber.junit.platform.engine.NodeDescriptor.PickleDescriptor;
|
5 | 7 | import io.cucumber.junit.platform.engine.nofeatures.NoFeatures;
|
|
23 | 25 | import java.nio.file.Paths;
|
24 | 26 | import java.util.ArrayList;
|
25 | 27 | import java.util.Arrays;
|
| 28 | +import java.util.Collection; |
26 | 29 | import java.util.Collections;
|
27 | 30 | import java.util.HashMap;
|
28 | 31 | import java.util.HashSet;
|
|
33 | 36 | import java.util.logging.Level;
|
34 | 37 | import java.util.logging.LogRecord;
|
35 | 38 | import java.util.stream.Collectors;
|
| 39 | +import java.util.stream.Stream; |
36 | 40 |
|
37 | 41 | import static io.cucumber.junit.platform.engine.Constants.FEATURES_PROPERTY_NAME;
|
38 | 42 | import static java.util.Collections.singleton;
|
@@ -382,15 +386,54 @@ void resolveRequestWithMultipleUniqueIdSelector() {
|
382 | 386 | .collect(toSet()));
|
383 | 387 | }
|
384 | 388 |
|
| 389 | + @Test |
| 390 | + void resolveRequestWithMultipleUniqueIdSelectorFromTheSameFeature() { |
| 391 | + Set<UniqueId> selectors = new HashSet<>(); |
| 392 | + |
| 393 | + DiscoverySelector resource = selectDirectory( |
| 394 | + "src/test/resources/io/cucumber/junit/platform/engine/feature-with-outline.feature"); |
| 395 | + selectAllPickles(resource).forEach(selectors::add); |
| 396 | + |
| 397 | + EngineDiscoveryRequest discoveryRequest = new SelectorRequest( |
| 398 | + selectors.stream() |
| 399 | + .map(DiscoverySelectors::selectUniqueId) |
| 400 | + .collect(Collectors.toList())); |
| 401 | + |
| 402 | + resolver.resolveSelectors(discoveryRequest, testDescriptor); |
| 403 | + |
| 404 | + Set<String> pickleIdsFromFeature = testDescriptor.getDescendants() |
| 405 | + .stream() |
| 406 | + .filter(FeatureDescriptor.class::isInstance) |
| 407 | + .map(FeatureDescriptor.class::cast) |
| 408 | + .map(FeatureDescriptor::getFeature) |
| 409 | + .map(Feature::getPickles) |
| 410 | + .flatMap(Collection::stream) |
| 411 | + .map(Pickle::getId) |
| 412 | + .collect(toSet()); |
| 413 | + |
| 414 | + Set<String> pickleIdsFromPickles = testDescriptor.getDescendants() |
| 415 | + .stream() |
| 416 | + .filter(PickleDescriptor.class::isInstance) |
| 417 | + .map(PickleDescriptor.class::cast) |
| 418 | + .map(PickleDescriptor::getPickle) |
| 419 | + .map(Pickle::getId) |
| 420 | + .collect(toSet()); |
| 421 | + |
| 422 | + assertEquals(pickleIdsFromFeature, pickleIdsFromPickles); |
| 423 | + } |
| 424 | + |
385 | 425 | private Optional<UniqueId> selectSomePickle(DiscoverySelector resource) {
|
| 426 | + return selectAllPickles(resource).findFirst(); |
| 427 | + } |
| 428 | + |
| 429 | + private Stream<UniqueId> selectAllPickles(DiscoverySelector resource) { |
386 | 430 | EngineDiscoveryRequest discoveryRequest = new SelectorRequest(resource);
|
387 | 431 | resolver.resolveSelectors(discoveryRequest, testDescriptor);
|
388 | 432 | Set<? extends TestDescriptor> descendants = testDescriptor.getDescendants();
|
389 | 433 | resetTestDescriptor();
|
390 | 434 | return descendants.stream()
|
391 | 435 | .filter(PickleDescriptor.class::isInstance)
|
392 |
| - .map(TestDescriptor::getUniqueId) |
393 |
| - .findFirst(); |
| 436 | + .map(TestDescriptor::getUniqueId); |
394 | 437 | }
|
395 | 438 |
|
396 | 439 | @Test
|
|
0 commit comments