Skip to content

Commit 79e7d62

Browse files
committed
Completed the cucumber-jvm version of the plugin
Support different cucumber-jvm versions for scala 2.9 and 2.10 Updated the single module test project
1 parent 69e97a9 commit 79e7d62

File tree

13 files changed

+26
-152
lines changed

13 files changed

+26
-152
lines changed

build.sbt

-5
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,5 @@ sbtPlugin := true
1010

1111
resolvers += "sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
1212

13-
libraryDependencies ++= Seq(
14-
"info.cukes" % "cucumber-scala" % "1.0.9" % "test",
15-
"org.scalatest" %% "scalatest" % "1.7.2" % "test"
16-
)
17-
1813
publishTo := Some(Resolver.file("Local Repo", file((Path.userHome / ".m2" / "repository").toString)))
1914

src/main/scala/templemore/xsbt/cucumber/Cucumber.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ case class Cucumber(classpath: List[File],
1818
private val jvmArgs = "-classpath" :: makeClasspath(classpath) ::
1919
("-Xmx%s" format maxMemory) :: ("-XX:MaxPermSize=%s" format maxPermGen) :: Nil
2020

21-
def cuke(featuresDir: File, requirePath: File, options: List[String] = List(),
21+
def cuke(featuresDir: File, basePackage: String, options: List[String] = List(),
2222
tags: List[String] = List(), names: List[String] = List()): Int = {
2323

24-
val cucumberParams = ("--glue" :: requirePath.getPath :: Nil) ++
24+
val cucumberParams = ("--glue" :: basePackage :: Nil) ++
2525
options ++ makeOptionsList(tags, "--tags") ++ makeOptionsList(names, "--name") ++
2626
(featuresDir.getPath :: Nil)
2727

src/main/scala/templemore/xsbt/cucumber/CucumberDependencies.scala

-13
This file was deleted.

src/main/scala/templemore/xsbt/cucumber/CucumberIntegration.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ trait CucumberIntegration {
5050
cucumberOptions.beforeFunc()
5151
val cucumber = Cucumber(cucumberSettings.classpath, cucumberSettings.outputStrategy,
5252
Some(cucumberSettings.maxMemory), Some(cucumberSettings.maxPermGen))
53-
val result = cucumber.cuke(cucumberOptions.featuresDir, cucumberOptions.requiredPath,
53+
val result = cucumber.cuke(cucumberOptions.featuresDir, cucumberOptions.basePackage,
5454
cucumberOptions.options, tagsFromArgs(args), namesFromArgs(args))
5555
cucumberOptions.afterFunc()
5656
result

src/main/scala/templemore/xsbt/cucumber/CucumberOptions.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import java.io.File
66
* @author Chris Turner
77
*/
88
case class CucumberOptions(featuresDir: File,
9-
requiredPath: File,
9+
basePackage: String,
1010
options: List[String],
1111
beforeFunc: () => Unit,
1212
afterFunc: () => Unit) {

src/main/scala/templemore/xsbt/cucumber/CucumberPlugin.scala

+19-11
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,22 @@ import Project.Initialize
77
/**
88
* @author Chris Turner
99
*/
10-
object CucumberPlugin extends Plugin with CucumberIntegration with CucumberDependencies {
10+
object CucumberPlugin extends Plugin with CucumberIntegration {
11+
12+
private val CucumberVersionForScala2_9 = "1.0.9"
13+
private val CucumberVersionForScala2_10 = "1.0.10"
1114

1215
type LifecycleCallback = () => Unit
1316

1417
val cucumber = InputKey[Int]("cucumber")
1518
val cucumberTestSettings = TaskKey[CucumberSettings]("cucumber-settings")
1619
val cucumberOptions = TaskKey[CucumberOptions]("cucumber-options")
1720

18-
val cucumberVersion = SettingKey[String]("cucumber-version")
1921
val cucumberMaxMemory = SettingKey[String]("cucumber-max-memory")
2022
val cucumberMaxPermGen = SettingKey[String]("cucumber-max-perm-gen")
2123

2224
val cucumberFeaturesDir = SettingKey[File]("cucumber-features-directory")
25+
val cucumberStepsBasePackage = SettingKey[String]("cucumber-steps-base-package")
2326
val cucumberExtraOptions = SettingKey[Seq[String]]("cucumber-extra-options")
2427
val cucumberMode = SettingKey[CucumberMode]("cucumber-mode")
2528
val cucumberHtmlReportFile = SettingKey[File]("cucumber-html-report")
@@ -30,25 +33,30 @@ object CucumberPlugin extends Plugin with CucumberIntegration with CucumberDepen
3033
(argTask, cucumberTestSettings, cucumberOptions, streams) map(testWithCucumber)
3134

3235
protected def cucumberSettingsTask: Initialize[Task[CucumberSettings]] =
33-
(cucumberVersion, cucumberMaxMemory, cucumberMaxPermGen, fullClasspath in Test, streams) map {
34-
(v, mm, mpg, cp, s) => {
35-
CucumberSettings(v, mm, mpg, cp.toList.map(_.data), LoggedOutput(s.log))
36+
(cucumberMaxMemory, cucumberMaxPermGen, fullClasspath in Test, streams) map {
37+
(mm, mpg, cp, s) => {
38+
CucumberSettings(mm, mpg, cp.toList.map(_.data), LoggedOutput(s.log))
3639
}
3740
}
3841

3942
protected def cucumberOptionsTask: Initialize[Task[CucumberOptions]] =
40-
(cucumberFeaturesDir, classDirectory in Test, cucumberExtraOptions,
43+
(cucumberFeaturesDir, cucumberStepsBasePackage, cucumberExtraOptions,
4144
cucumberMode, cucumberHtmlReportFile, cucumberBefore, cucumberAfter) map {
42-
(fd, cd, o, m, htmlRF, bf, af) => {
43-
CucumberOptions(fd, cd, optionsForMode(m, htmlRF) ++ o, bf, af)
45+
(fd, bp, o, m, htmlRF, bf, af) => {
46+
CucumberOptions(fd, bp, optionsForMode(m, htmlRF) ++ o, bf, af)
4447
}
4548
}
4649

4750
private def defaultBefore() = {}
4851
private def defaultAfter() = {}
4952

53+
private def cucumberVersion(scalaVersion: String) =
54+
if ( scalaVersion.startsWith("2.10") ) CucumberVersionForScala2_10 else CucumberVersionForScala2_9
55+
5056
val cucumberSettings = Seq(
51-
libraryDependencies ++= cucumberDependencies,
57+
libraryDependencies <+= scalaVersion { sv =>
58+
"info.cukes" % "cucumber-scala" % cucumberVersion(sv) % "test"
59+
},
5260

5361
cucumber <<= inputTask(cucumberTask),
5462
cucumberTestSettings <<= cucumberSettingsTask,
@@ -58,9 +66,9 @@ object CucumberPlugin extends Plugin with CucumberIntegration with CucumberDepen
5866

5967
cucumberMaxMemory := "256M",
6068
cucumberMaxPermGen := "64M",
61-
cucumberVersion := "1.0.9",
6269

63-
cucumberFeaturesDir <<= (baseDirectory) { _ / "features" },
70+
cucumberFeaturesDir <<= (baseDirectory) { _ / "src" / "test" / "features" },
71+
cucumberStepsBasePackage := "",
6472
cucumberHtmlReportFile <<= (target) { _ / "cucumber-report" / "cucumber.html" },
6573
cucumberExtraOptions := List[String](),
6674

src/main/scala/templemore/xsbt/cucumber/CucumberSettings.scala

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import sbt.OutputStrategy
66
/**
77
* @author Chris Turner
88
*/
9-
case class CucumberSettings(cucumberVersion: String,
10-
maxMemory: String,
9+
case class CucumberSettings(maxMemory: String,
1110
maxPermGen: String,
1211
classpath: List[File],
1312
outputStrategy: OutputStrategy)

testProjects/multiModuleTestProject/jar-project/jar-project.iml

-30
This file was deleted.

testProjects/multiModuleTestProject/multiModuleTestProject.iml

-29
This file was deleted.

testProjects/multiModuleTestProject/war-project/war-project.iml

-21
This file was deleted.

testProjects/testProject/build.sbt

+2
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ libraryDependencies ++= Seq(
1111
)
1212

1313
seq(cucumberSettings : _*)
14+
15+
cucumberStepsBasePackage := "test"

testProjects/testProject/testProject.iml

-37
This file was deleted.

0 commit comments

Comments
 (0)