Skip to content

Commit 25f7d56

Browse files
lgringoGregory Fernandez
andauthored
[JUnit Platform] Support feature files with space in filename (#2521)
Co-authored-by: Gregory Fernandez <[email protected]>
1 parent 367861a commit 25f7d56

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
2929
- [TestNG] Remove spurious Optional\[<Feature Name>] from test name ([#2488](https://github.com/cucumber/cucumber-jvm/pull/2488) M.P. Korstanje)
3030
* [BOM] Add missing dependencies to bill of materials ([#2496](https://github.com/cucumber/cucumber-jvm/pull/2496) M.P. Korstanje)
3131
* [Spring] Start and stop test context once per scenario ([#2517](https://github.com/cucumber/cucumber-jvm/pull/2517) M.P. Korstanje)
32+
* [JUnit Platform] Feature files with space in filename generate Illegal Character ([#2521](https://github.com/cucumber/cucumber-jvm/pull/2521) G. Fernandez)
3233

3334
## [7.2.3] (2022-01-13)
3435

junit-platform-engine/src/main/java/io/cucumber/junit/platform/engine/FeatureOrigin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static FeatureOrigin fromUri(URI uri) {
3131
if (!uri.getSchemeSpecificPart().startsWith("/")) {
3232
// ClasspathResourceSource.from expects all resources to start
3333
// with a forward slash
34-
uri = URI.create(CLASSPATH_SCHEME_PREFIX + "/" + uri.getSchemeSpecificPart());
34+
uri = URI.create(CLASSPATH_SCHEME_PREFIX + "/" + uri.getRawSchemeSpecificPart());
3535
}
3636
ClasspathResourceSource source = ClasspathResourceSource.from(uri);
3737
return new ClasspathFeatureOrigin(source);

junit-platform-engine/src/test/java/io/cucumber/junit/platform/engine/DiscoverySelectorResolverTest.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,14 @@ void resolveRequestWithClasspathResourceSelector() {
7878
assertEquals(1, testDescriptor.getChildren().size());
7979
}
8080

81+
@Test
82+
void resolveRequestWithClasspathResourceSelectorAndWithSpaceInFilename() {
83+
DiscoverySelector resource = selectClasspathResource("io/cucumber/junit/platform/engine/with space.feature");
84+
EngineDiscoveryRequest discoveryRequest = new SelectorRequest(resource);
85+
resolver.resolveSelectors(discoveryRequest, testDescriptor);
86+
assertEquals(1, testDescriptor.getChildren().size());
87+
}
88+
8189
@Test
8290
void resolveRequestWithClasspathResourceSelectorAndFilePosition() {
8391
String feature = "io/cucumber/junit/platform/engine/rule.feature";
@@ -120,7 +128,7 @@ void resolveRequestWithClasspathRootSelector() {
120128
DiscoverySelector resource = selectClasspathRoots(singleton(classpathRoot)).get(0);
121129
EngineDiscoveryRequest discoveryRequest = new SelectorRequest(resource);
122130
resolver.resolveSelectors(discoveryRequest, testDescriptor);
123-
assertEquals(6, testDescriptor.getChildren().size());
131+
assertEquals(7, testDescriptor.getChildren().size());
124132
}
125133

126134
@Test
@@ -256,15 +264,15 @@ void resolveRequestWithDirectorySelector() {
256264
DiscoverySelector resource = selectDirectory("src/test/resources/io/cucumber/junit/platform/engine");
257265
EngineDiscoveryRequest discoveryRequest = new SelectorRequest(resource);
258266
resolver.resolveSelectors(discoveryRequest, testDescriptor);
259-
assertEquals(5, testDescriptor.getChildren().size());
267+
assertEquals(6, testDescriptor.getChildren().size());
260268
}
261269

262270
@Test
263271
void resolveRequestWithPackageSelector() {
264272
DiscoverySelector resource = selectPackage("io.cucumber.junit.platform.engine");
265273
EngineDiscoveryRequest discoveryRequest = new SelectorRequest(resource);
266274
resolver.resolveSelectors(discoveryRequest, testDescriptor);
267-
assertEquals(5, testDescriptor.getChildren().size());
275+
assertEquals(6, testDescriptor.getChildren().size());
268276
}
269277

270278
@Test
@@ -397,7 +405,7 @@ void resolveRequestWithClassSelector() {
397405
DiscoverySelector resource = selectClass(RunCucumberTest.class);
398406
EngineDiscoveryRequest discoveryRequest = new SelectorRequest(resource);
399407
resolver.resolveSelectors(discoveryRequest, testDescriptor);
400-
assertEquals(5, testDescriptor.getChildren().size());
408+
assertEquals(6, testDescriptor.getChildren().size());
401409
}
402410

403411
@Test
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Feature: A feature with a single scenario inside a file with space in filename
2+
3+
Scenario: A single scenario
4+
Given a single scenario
5+
When it is executed
6+
Then nothing else happens

0 commit comments

Comments
 (0)