Skip to content

Commit 0fdcbca

Browse files
authored
Upgrade to support 4.0.1 core version (#12)
1 parent 279717a commit 0fdcbca

File tree

18 files changed

+228
-107
lines changed

18 files changed

+228
-107
lines changed

examples/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.cucumber</groupId>
66
<artifactId>cucumber-jvm-scala</artifactId>
7-
<version>2.4.0-SNAPSHOT</version>
7+
<version>4.0.1-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>scala-examples</artifactId>

examples/src/test/resources/cucumber/examples/scalacalculator/basic_arithmetic.feature

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ Feature: Basic Arithmetic
33

44
Scenario: Adding
55
# Try to change one of the values below to provoke a failure
6-
When I add 4 and 5
7-
Then the result is 9
6+
When I add 4.0 and 5.0
7+
Then the result is 9.0

examples/src/test/scala/cucumber/examples/scalacalculator/RpnCalculatorStepDefinitions.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ class RpnCalculatorStepDefinitions extends ScalaDsl with EN {
88

99
val calc = new RpnCalculator
1010

11-
When("""^I add (\d+) and (\d+)$"""){ (arg1: Double, arg2: Double) =>
11+
When("""I add {double} and {double}"""){ (arg1: Double, arg2: Double) =>
1212
calc push arg1
1313
calc push arg2
1414
calc push "+"
1515
}
1616

17-
Then("^the result is (\\d+)$") { expected: Double =>
17+
Then("the result is {double}") { expected: Double =>
1818
assertEquals(expected, calc.value, 0.001)
1919
}
2020

examples/src/test/scala/cucumber/examples/scalacalculator/RunCukesTest.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cucumber.examples.scalacalculator
22

3+
import cucumber.api.CucumberOptions
34
import org.junit.runner.RunWith
45
import cucumber.api.junit.Cucumber
56

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>io.cucumber</groupId>
44
<artifactId>cucumber-jvm-scala</artifactId>
5-
<version>2.4.0-SNAPSHOT</version>
5+
<version>4.0.1-SNAPSHOT</version>
66
<packaging>pom</packaging>
77
<name>Cucumber-JVM: Scala</name>
88
<url>http://cucumber.io/</url>
@@ -25,7 +25,7 @@
2525

2626
<scala-maven-plugin.version>3.2.2</scala-maven-plugin.version>
2727

28-
<cucumber.version>2.4.0</cucumber.version>
28+
<cucumber.version>4.0.1</cucumber.version>
2929
<gherkin.version>5.1.0</gherkin.version>
3030
<groovy.version>2.4.12</groovy.version>
3131
<junit.version>4.12</junit.version>

scala/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.cucumber</groupId>
66
<artifactId>cucumber-jvm-scala</artifactId>
7-
<version>2.4.0-SNAPSHOT</version>
7+
<version>4.0.1-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>cucumber-scala-aggregator</artifactId>

scala/scala_2.11/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.cucumber</groupId>
66
<artifactId>cucumber-scala-aggregator</artifactId>
7-
<version>2.4.0-SNAPSHOT</version>
7+
<version>4.0.1-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>cucumber-scala_2.11</artifactId>

scala/scala_2.12/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.cucumber</groupId>
66
<artifactId>cucumber-scala-aggregator</artifactId>
7-
<version>2.4.0-SNAPSHOT</version>
7+
<version>4.0.1-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>cucumber-scala_2.12</artifactId>

scala/sources/src/main/scala/cucumber/api/scala/ScalaDsl.scala

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import java.lang.reflect.{ParameterizedType, Type}
55
import cucumber.api.Scenario
66
import cucumber.runtime.{HookDefinition, StepDefinition}
77
import cucumber.runtime.scala.{ScalaHookDefinition, ScalaStepDefinition}
8+
import io.cucumber.stepexpression.TypeRegistry
89

910
import scala.collection.mutable.ArrayBuffer
1011

@@ -16,13 +17,21 @@ trait ScalaDsl {
1617
self =>
1718
import scala.language.implicitConversions
1819

19-
20-
private[cucumber] val stepDefinitions = new ArrayBuffer[StepDefinition]
20+
private val stepDefinitions = new ArrayBuffer[StepDefinition]
2121

2222
private[cucumber] val beforeHooks = new ArrayBuffer[HookDefinition]
2323

24+
private[cucumber] val beforeStepHooks = new ArrayBuffer[HookDefinition]
25+
2426
private[cucumber] val afterHooks = new ArrayBuffer[HookDefinition]
2527

28+
private[cucumber] val afterStepHooks = new ArrayBuffer[HookDefinition]
29+
30+
private[cucumber] def getStepDefs(typeRegistry: TypeRegistry): ArrayBuffer[StepDefinition]={
31+
stepDefinitions.foreach(d=>d.asInstanceOf[ScalaStepDefinition].typeRegistry = typeRegistry)
32+
stepDefinitions
33+
}
34+
2635
def Before(f: Scenario => Unit) {
2736
Before()(f)
2837
}
@@ -35,6 +44,18 @@ trait ScalaDsl {
3544
beforeHooks += new ScalaHookDefinition(f, order, tags)
3645
}
3746

47+
def BeforeStep(f: Scenario => Unit) {
48+
BeforeStep()(f)
49+
}
50+
51+
def BeforeStep(tags: String*)(f: Scenario => Unit) {
52+
BeforeStep(Int.MaxValue, tags: _*)(f)
53+
}
54+
55+
def BeforeStep(order: Int, tags: String*)(f: Scenario => Unit) {
56+
beforeStepHooks += new ScalaHookDefinition(f, order, tags)
57+
}
58+
3859
def After(f: Scenario => Unit) {
3960
After()(f)
4061
}
@@ -47,6 +68,19 @@ trait ScalaDsl {
4768
afterHooks += new ScalaHookDefinition(f, order, tags)
4869
}
4970

71+
def AfterStep(f: Scenario => Unit) {
72+
AfterStep()(f)
73+
}
74+
75+
def AfterStep(tags: String*)(f: Scenario => Unit) {
76+
AfterStep(Int.MaxValue, tags: _*)(f)
77+
}
78+
79+
def AfterStep(order: Int, tags: String*)(f: Scenario => Unit) {
80+
afterStepHooks += new ScalaHookDefinition(f, order, tags)
81+
}
82+
83+
5084
final class Step(name: String) {
5185
def apply(regex: String): StepBody = new StepBody(name, regex)
5286
}

scala/sources/src/main/scala/cucumber/runtime/scala/ScalaBackend.scala

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package cucumber.runtime.scala
22

33
import java.util.{List => JList}
4+
45
import gherkin.pickles.PickleStep
56
import java.lang.reflect.Modifier
7+
68
import cucumber.runtime.snippets.SnippetGenerator
79
import cucumber.runtime.snippets.FunctionNameGenerator
810
import cucumber.api.scala.ScalaDsl
@@ -11,20 +13,26 @@ import cucumber.runtime.io.ResourceLoaderClassFinder
1113
import cucumber.runtime.io.ResourceLoader
1214
import cucumber.runtime.io.MultiLoader
1315
import cucumber.runtime.Backend
14-
import cucumber.runtime.UnreportedStepExecutor
1516
import cucumber.runtime.Glue
17+
import io.cucumber.stepexpression.TypeRegistry
18+
1619
import scala.collection.JavaConverters._
1720

18-
class ScalaBackend(resourceLoader:ResourceLoader) extends Backend {
19-
private var snippetGenerator = new SnippetGenerator(new ScalaSnippetGenerator())
21+
class ScalaBackend(resourceLoader:ResourceLoader, typeRegistry: TypeRegistry) extends Backend {
22+
private val snippetGenerator = new SnippetGenerator(new ScalaSnippetGenerator(), typeRegistry.parameterTypeRegistry())
2023
private var instances:Seq[ScalaDsl] = Nil
2124

22-
def getStepDefinitions = instances.flatMap(_.stepDefinitions)
25+
26+
def getStepDefinitions = instances.flatMap(_.getStepDefs(typeRegistry))
2327

2428
def getBeforeHooks = instances.flatMap(_.beforeHooks)
2529

2630
def getAfterHooks = instances.flatMap(_.afterHooks)
2731

32+
def getAfterStepHooks = instances.flatMap(_.afterStepHooks)
33+
34+
def getBeforeStepHooks = instances.flatMap(_.beforeStepHooks)
35+
2836
def disposeWorld() {
2937
instances = Nil
3038
}
@@ -61,14 +69,15 @@ class ScalaBackend(resourceLoader:ResourceLoader) extends Backend {
6169
instField.setAccessible(true)
6270
instField.get(null).asInstanceOf[ScalaDsl]
6371
}
64-
val clsInstances = (clsClasses map {_.newInstance()})
72+
val clsInstances = clsClasses map {_.newInstance()}
6573

6674
instances = objInstances ++ clsInstances
6775

6876
getStepDefinitions map {glue.addStepDefinition(_)}
6977
getBeforeHooks map {glue.addBeforeHook(_)}
7078
getAfterHooks map {glue.addAfterHook(_)}
79+
getAfterStepHooks map {glue.addAfterStepHook(_)}
80+
getBeforeStepHooks map {glue.addBeforeStepHook(_)}
7181
}
7282

73-
def setUnreportedStepExecutor(executor:UnreportedStepExecutor) {}
7483
}

0 commit comments

Comments
 (0)