File tree 4 files changed +39
-1
lines changed
main/java/com/intuit/karate
test/java/com/intuit/karate/core/retry
4 files changed +39
-1
lines changed Original file line number Diff line number Diff line change 34
34
import com .intuit .karate .core .ScenarioCall ;
35
35
import com .intuit .karate .core .ScenarioResult ;
36
36
import com .intuit .karate .core .ScenarioRuntime ;
37
+ import com .intuit .karate .core .Step ;
37
38
import com .intuit .karate .core .SyncExecutorService ;
38
39
import com .intuit .karate .core .Tags ;
39
40
import com .intuit .karate .http .HttpClientFactory ;
55
56
import java .util .concurrent .TimeUnit ;
56
57
import java .util .concurrent .atomic .AtomicBoolean ;
57
58
import java .util .concurrent .locks .ReentrantLock ;
59
+ import java .util .stream .Collectors ;
58
60
import java .util .stream .Stream ;
59
61
import org .slf4j .LoggerFactory ;
60
62
63
+ import static java .util .function .Predicate .not ;
64
+
61
65
/**
62
66
*
63
67
* @author pthomas3
@@ -341,6 +345,8 @@ public Stream<ScenarioResult> getScenarioResults() {
341
345
}
342
346
343
347
public ScenarioResult retryScenario (Scenario scenario ) {
348
+ // remove any "fake" steps that might have been added before retrying
349
+ scenario .setSteps (scenario .getSteps ().stream ().filter (not (Step ::isFake )).collect (Collectors .toList ()));
344
350
FeatureRuntime fr = FeatureRuntime .of (this , new FeatureCall (scenario .getFeature ()));
345
351
ScenarioRuntime runtime = new ScenarioRuntime (fr , scenario );
346
352
runtime .run ();
Original file line number Diff line number Diff line change @@ -223,6 +223,10 @@ public void setComments(List<String> comments) {
223
223
this .comments = comments ;
224
224
}
225
225
226
+ public boolean isFake () {
227
+ return getIndex () == -1 ;
228
+ }
229
+
226
230
@ Override
227
231
public String toString () {
228
232
String temp = prefix + " " + text ;
Original file line number Diff line number Diff line change @@ -36,6 +36,22 @@ void testParallel() {
36
36
assertFalse (sr .isFailed ());
37
37
results = results .getSuite ().updateResults (sr );
38
38
assertEquals (0 , results .getFailCount ());
39
- }
39
+ }
40
+
41
+ @ Test
42
+ void testSetup () {
43
+ System .setProperty ("CURRENT_VALUE" , "a" );
44
+ Results results = Runner .path ("classpath:com/intuit/karate/core/retry/retry-with-setup.feature" ).parallel (1 );
45
+
46
+ System .setProperty ("CURRENT_VALUE" , "b" );
47
+ for (ScenarioResult scenarioResult : results .getScenarioResults ().collect (Collectors .toList ())) {
48
+ if (scenarioResult .isFailed ()) {
49
+ ScenarioResult retryScenarioResult = results .getSuite ().retryScenario (scenarioResult .getScenario ());
50
+ results = results .getSuite ().updateResults (retryScenarioResult );
51
+ }
52
+ }
53
+
54
+ assertEquals (0 , results .getFailCount (), results .getErrorMessages ());
55
+ }
40
56
41
57
}
Original file line number Diff line number Diff line change
1
+ Feature : Retry with setup
2
+
3
+ @setup
4
+ Scenario : Setup
5
+ * def data = [{ value: 'b' }, { value: 'a' }]
6
+
7
+ Scenario Outline : Scenario
8
+ * def currentValGetter = function () { return java.lang.System.getProperty('CURRENT_VALUE' ) }
9
+ * assert currentValGetter() == value
10
+
11
+ Examples :
12
+ | karate .setup ().data |
You can’t perform that action at this time.
0 commit comments