Skip to content

Commit fdc684e

Browse files
authored
Merge pull request #2532 from dustinsand/feat/2531-ignoreJunitNoScenariosAssertion
feat: add Karate runner argument to ignore JUnit 5 no scenarios assertion
2 parents 3f8477e + d089d81 commit fdc684e

File tree

5 files changed

+45
-14
lines changed

5 files changed

+45
-14
lines changed

karate-core/src/main/java/com/intuit/karate/Runner.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
import com.intuit.karate.http.HttpClientFactory;
3535
import com.intuit.karate.report.SuiteReports;
3636
import com.intuit.karate.resource.ResourceUtils;
37+
import org.slf4j.LoggerFactory;
38+
3739
import java.io.File;
3840
import java.util.*;
3941
import java.util.stream.Collectors;
40-
import org.slf4j.LoggerFactory;
4142

4243
/**
4344
*
@@ -112,6 +113,7 @@ public static class Builder<T extends Builder> {
112113
boolean outputCucumberJson;
113114
boolean dryRun;
114115
boolean debugMode;
116+
boolean failWhenNoScenariosFound;
115117
Map<String, String> systemProperties;
116118
Map<String, Object> callSingleCache;
117119
Map<String, ScenarioCall.Result> callOnceCache;
@@ -145,6 +147,7 @@ public synchronized Builder copy() {
145147
b.outputCucumberJson = outputCucumberJson;
146148
b.dryRun = dryRun;
147149
b.debugMode = debugMode;
150+
b.failWhenNoScenariosFound = failWhenNoScenariosFound;
148151
b.systemProperties = systemProperties;
149152
b.callSingleCache = callSingleCache;
150153
b.callOnceCache = callOnceCache;
@@ -436,6 +439,11 @@ public T debugMode(boolean value) {
436439
debugMode = value;
437440
return (T) this;
438441
}
442+
443+
public T failWhenNoScenariosFound(boolean value) {
444+
failWhenNoScenariosFound = value;
445+
return (T) this;
446+
}
439447

440448
public T callSingleCache(Map<String, Object> value) {
441449
callSingleCache = value;

karate-core/src/main/java/com/intuit/karate/Suite.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,36 +28,30 @@
2828
import com.intuit.karate.core.FeatureCall;
2929
import com.intuit.karate.core.FeatureResult;
3030
import com.intuit.karate.core.FeatureRuntime;
31-
import com.intuit.karate.driver.DriverRunner;
32-
import com.intuit.karate.report.ReportUtils;
3331
import com.intuit.karate.core.Scenario;
3432
import com.intuit.karate.core.ScenarioCall;
3533
import com.intuit.karate.core.ScenarioResult;
3634
import com.intuit.karate.core.ScenarioRuntime;
3735
import com.intuit.karate.core.Step;
3836
import com.intuit.karate.core.SyncExecutorService;
3937
import com.intuit.karate.core.Tags;
38+
import com.intuit.karate.driver.DriverRunner;
4039
import com.intuit.karate.http.HttpClientFactory;
40+
import com.intuit.karate.report.ReportUtils;
4141
import com.intuit.karate.report.SuiteReports;
4242
import com.intuit.karate.resource.Resource;
4343
import com.intuit.karate.resource.ResourceUtils;
44+
import org.slf4j.LoggerFactory;
45+
4446
import java.io.File;
45-
import java.util.ArrayList;
46-
import java.util.Collection;
47-
import java.util.Collections;
48-
import java.util.HashSet;
49-
import java.util.List;
50-
import java.util.Map;
51-
import java.util.Set;
47+
import java.util.*;
5248
import java.util.concurrent.CompletableFuture;
5349
import java.util.concurrent.ExecutorService;
5450
import java.util.concurrent.Executors;
5551
import java.util.concurrent.TimeUnit;
5652
import java.util.concurrent.atomic.AtomicBoolean;
57-
import java.util.concurrent.locks.ReentrantLock;
5853
import java.util.stream.Collectors;
5954
import java.util.stream.Stream;
60-
import org.slf4j.LoggerFactory;
6155

6256
import static java.util.function.Predicate.not;
6357

@@ -78,6 +72,7 @@ public class Suite implements Runnable {
7872
public final String tagSelector;
7973
public final boolean dryRun;
8074
public final boolean debugMode;
75+
public final boolean failWhenNoScenariosFound;
8176
public final File workingDir;
8277
public final String buildDir;
8378
public final String reportDir;
@@ -135,6 +130,7 @@ public Suite(Runner.Builder rb) {
135130
if (rb.forTempUse) {
136131
dryRun = false;
137132
debugMode = false;
133+
failWhenNoScenariosFound = false;
138134
backupReportDir = false;
139135
outputHtmlReport = false;
140136
outputCucumberJson = false;
@@ -179,6 +175,7 @@ public Suite(Runner.Builder rb) {
179175
outputJunitXml = rb.outputJunitXml;
180176
dryRun = rb.dryRun;
181177
debugMode = rb.debugMode;
178+
failWhenNoScenariosFound = rb.failWhenNoScenariosFound;
182179
classLoader = rb.classLoader;
183180
clientFactory = rb.clientFactory;
184181
env = rb.env;

karate-junit5/src/main/java/com/intuit/karate/junit5/Karate.java

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

2626
import com.intuit.karate.Runner;
2727
import com.intuit.karate.Suite;
28-
import com.intuit.karate.core.Feature;
2928
import com.intuit.karate.core.FeatureCall;
3029
import org.junit.jupiter.api.Assertions;
3130
import org.junit.jupiter.api.DynamicContainer;
@@ -68,7 +67,7 @@ public Iterator<DynamicNode> iterator() {
6867
DynamicNode node = DynamicContainer.dynamicContainer(testName, featureNode);
6968
list.add(node);
7069
}
71-
if (list.isEmpty()) {
70+
if (suite.failWhenNoScenariosFound && list.isEmpty()) {
7271
Assertions.fail("no features or scenarios found: " + this);
7372
}
7473
return list.iterator();
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package karate;
2+
3+
import com.intuit.karate.junit5.Karate;
4+
5+
class NoFeatureNoScenarioTest {
6+
7+
@Karate.Test
8+
Karate testHasScenariosWithFailWhenNoScenariosFound() {
9+
return Karate.run("noFeatureNoScenario")
10+
.tags("@smoke")
11+
.failWhenNoScenariosFound(true)
12+
.relativeTo(getClass());
13+
}
14+
15+
@Karate.Test
16+
Karate testNoScenarios() {
17+
return Karate.run("noFeatureNoScenario")
18+
.tags("@tagnotexist")
19+
.failWhenNoScenariosFound(false)
20+
.relativeTo(getClass());
21+
}
22+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Feature: ignoreJunitNoScenariosAssertion argument for Karate runner
2+
3+
@smoke
4+
Scenario: smoke
5+
* print 'smoke'

0 commit comments

Comments
 (0)