Skip to content

Commit 287bf9b

Browse files
committed
Fail if no features are found. Closes cucumber#163
1 parent 894cf1c commit 287bf9b

File tree

5 files changed

+32
-14
lines changed

5 files changed

+32
-14
lines changed

History.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## In Git
22

3+
* [Core] Fail if no features are found ([#163](https://github.com/cucumber/cucumber-jvm/issues/163) Aslak Hellesøy)
34
* [Core] Fail if duplicate features are detected ([#165](https://github.com/cucumber/cucumber-jvm/issues/165) Aslak Hellesøy)
45

56
## [1.0.0.RC14](https://github.com/cucumber/cucumber-jvm/compare/v1.0.0.RC13...v1.0.0.RC14)

core/src/main/java/cucumber/runtime/model/CucumberFeature.java

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cucumber.io.Resource;
44
import cucumber.io.ResourceLoader;
5+
import cucumber.runtime.CucumberException;
56
import cucumber.runtime.FeatureBuilder;
67
import gherkin.I18n;
78
import gherkin.formatter.model.Background;
@@ -32,6 +33,9 @@ public static List<CucumberFeature> load(ResourceLoader resourceLoader, List<Str
3233
builder.parse(resource, filters);
3334
}
3435
}
36+
if(cucumberFeatures.isEmpty()) {
37+
throw new CucumberException(String.format("No features found at %s", featurePaths));
38+
}
3539
return cucumberFeatures;
3640
}
3741

core/src/test/java/cucumber/formatter/HTMLFormatterTest.java

+1-11
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,11 @@
1616
import static java.util.Arrays.asList;
1717
import static java.util.Collections.emptyList;
1818
import static org.junit.Assert.assertTrue;
19-
import static org.junit.Assert.assertEquals;
2019
import static org.junit.Assert.fail;
2120
import static org.mockito.Mockito.mock;
2221

2322
public class HTMLFormatterTest {
2423

25-
@Test
26-
public void noFeaturesProduceEmptyReport() throws IOException {
27-
final List<String> noFeatures = emptyList();
28-
final File report = createFormatterJsReport(noFeatures);
29-
30-
assertEquals(0, report.length());
31-
}
32-
3324
@Test
3425
public void oneFeatureProducesValidJavascript() throws IOException {
3526
final File report = createFormatterJsReport(asList("cucumber/formatter/HTMLFormatterTest.feature"));
@@ -46,8 +37,7 @@ public void oneFeatureProducesValidJavascript() throws IOException {
4637

4738
private File createFormatterJsReport(final List<String> featurePaths) throws IOException {
4839
final File outputDir = runFeaturesWithFormatter(featurePaths);
49-
final File report = new File(outputDir, "report.js");
50-
return report;
40+
return new File(outputDir, "report.js");
5141
}
5242

5343
private File runFeaturesWithFormatter(final List<String> featurePaths) throws IOException {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package cucumber.runtime.model;
2+
3+
import cucumber.io.Resource;
4+
import cucumber.io.ResourceLoader;
5+
import cucumber.runtime.CucumberException;
6+
import org.junit.Test;
7+
8+
import java.util.Collections;
9+
10+
import static java.util.Arrays.asList;
11+
import static java.util.Collections.emptyList;
12+
import static org.mockito.Matchers.anyString;
13+
import static org.mockito.Mockito.mock;
14+
import static org.mockito.Mockito.when;
15+
16+
public class CucumberFeatureTest {
17+
@Test(expected = CucumberException.class)
18+
public void fails_if_no_features_are_found() {
19+
ResourceLoader resourceLoader = mock(ResourceLoader.class);
20+
when(resourceLoader.resources(anyString(), anyString())).thenReturn(Collections.<Resource>emptyList());
21+
CucumberFeature.load(resourceLoader, asList("does/not/exit"), emptyList());
22+
}
23+
}

junit/src/test/java/cucumber/junit/CucumberTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cucumber.junit;
22

3+
import cucumber.runtime.CucumberException;
34
import org.junit.After;
45
import org.junit.Before;
56
import org.junit.Test;
@@ -43,10 +44,9 @@ public void finds_features_based_on_explicit_root_package() throws IOException,
4344
assertEquals("Feature: In cucumber.junit", cucumber.getChildren().get(0).getName());
4445
}
4546

46-
@Test
47+
@Test(expected = CucumberException.class)
4748
public void finds_no_features_when_explicit_package_has_nothnig() throws IOException, InitializationError {
48-
Cucumber cucumber = new Cucumber(ExplicitPackageWithNoFeatures.class);
49-
assertEquals(0, cucumber.getChildren().size());
49+
new Cucumber(ExplicitPackageWithNoFeatures.class);
5050
}
5151

5252
private class ImplicitPackage {

0 commit comments

Comments
 (0)