Skip to content

Commit e234dba

Browse files
committed
Updated plugin to support correct output for html, junit and json
Modified multi-module test project to use new plugin version
1 parent 79e7d62 commit e234dba

File tree

11 files changed

+39
-33
lines changed

11 files changed

+39
-33
lines changed

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

+13-8
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,19 @@ import std.TaskStreams
88
*/
99
trait CucumberIntegration {
1010

11-
protected def optionsForMode(mode: CucumberMode,
12-
htmlReportFile: File) = {
13-
htmlReportFile.getParentFile.mkdirs()
14-
mode match {
15-
case Developer => List[String]("--format", "pretty")
16-
case HtmlReport => List[String]("--format", "html", "--out", htmlReportFile.getPath)
17-
case _ => List[String]("--format", "pretty")
18-
}
11+
protected def optionsForReporting(htmlReportDir: Option[File],
12+
jsonReportFile: Option[File],
13+
junitReportFile: Option[File]): List[String] = {
14+
(Some("--format" :: "pretty" :: Nil) ::
15+
(htmlReportDir map { dir =>
16+
dir.mkdirs()
17+
"--format" :: "html:%s".format(dir.getPath) :: Nil }) ::
18+
(jsonReportFile map { file =>
19+
file.getParentFile.mkdirs()
20+
"--format" :: "json-pretty:%s".format(file.getPath) :: Nil }) ::
21+
(junitReportFile map { file =>
22+
file.getParentFile.mkdirs()
23+
"--format" :: "junit:%s".format(file.getPath) :: Nil }) :: Nil).flatten.flatten
1924
}
2025

2126
protected def testWithCucumber(args: Seq[String],

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

-10
This file was deleted.

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

+13-8
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@ object CucumberPlugin extends Plugin with CucumberIntegration {
2424
val cucumberFeaturesDir = SettingKey[File]("cucumber-features-directory")
2525
val cucumberStepsBasePackage = SettingKey[String]("cucumber-steps-base-package")
2626
val cucumberExtraOptions = SettingKey[Seq[String]]("cucumber-extra-options")
27-
val cucumberMode = SettingKey[CucumberMode]("cucumber-mode")
28-
val cucumberHtmlReportFile = SettingKey[File]("cucumber-html-report")
27+
28+
val cucumberHtmlReportDir = SettingKey[Option[File]]("cucumber-html-report")
29+
val cucumberJsonReportFile = SettingKey[Option[File]]("cucumber-json-report")
30+
val cucumberJunitReportFile = SettingKey[Option[File]]("cucumber-junit-report")
31+
2932
val cucumberBefore = SettingKey[LifecycleCallback]("cucumber-before")
3033
val cucumberAfter = SettingKey[LifecycleCallback]("cucumber-after")
3134

@@ -41,9 +44,10 @@ object CucumberPlugin extends Plugin with CucumberIntegration {
4144

4245
protected def cucumberOptionsTask: Initialize[Task[CucumberOptions]] =
4346
(cucumberFeaturesDir, cucumberStepsBasePackage, cucumberExtraOptions,
44-
cucumberMode, cucumberHtmlReportFile, cucumberBefore, cucumberAfter) map {
45-
(fd, bp, o, m, htmlRF, bf, af) => {
46-
CucumberOptions(fd, bp, optionsForMode(m, htmlRF) ++ o, bf, af)
47+
cucumberHtmlReportDir, cucumberJsonReportFile, cucumberJunitReportFile,
48+
cucumberBefore, cucumberAfter) map {
49+
(fd, bp, o, htmlRD, jsonRF, junitRF, bf, af) => {
50+
CucumberOptions(fd, bp, optionsForReporting(htmlRD, jsonRF, junitRF) ++ o, bf, af)
4751
}
4852
}
4953

@@ -62,16 +66,17 @@ object CucumberPlugin extends Plugin with CucumberIntegration {
6266
cucumberTestSettings <<= cucumberSettingsTask,
6367
cucumberOptions <<= cucumberOptionsTask,
6468

65-
cucumberMode := Normal,
66-
6769
cucumberMaxMemory := "256M",
6870
cucumberMaxPermGen := "64M",
6971

7072
cucumberFeaturesDir <<= (baseDirectory) { _ / "src" / "test" / "features" },
7173
cucumberStepsBasePackage := "",
72-
cucumberHtmlReportFile <<= (target) { _ / "cucumber-report" / "cucumber.html" },
7374
cucumberExtraOptions := List[String](),
7475

76+
cucumberHtmlReportDir := None,
77+
cucumberJsonReportFile := None,
78+
cucumberJunitReportFile := None,
79+
7580
cucumberBefore := defaultBefore,
7681
cucumberAfter := defaultAfter
7782
)

testProjects/multiModuleTestProject/jar-project/src/test/scala/test/CucumberJarSteps.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package test
22

3-
import cuke4duke.{EN, ScalaDsl}
3+
import cucumber.runtime.{EN, ScalaDsl}
44
import org.scalatest.matchers.ShouldMatchers
55

66
class CucumberJarSteps extends ScalaDsl with EN with ShouldMatchers {

testProjects/multiModuleTestProject/project/Build.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import templemore.xsbt.cucumber.CucumberPlugin
44

55
object BuildSettings {
66
val buildOrganization = "templemore"
7-
val buildScalaVersion = "2.9.1"
8-
val buildVersion = "0.4.1"
7+
val buildScalaVersion = "2.9.2"
8+
val buildVersion = "0.5.0"
99

1010
val buildSettings = Defaults.defaultSettings ++
1111
Seq (organization := buildOrganization,
@@ -16,7 +16,7 @@ object BuildSettings {
1616

1717
object Dependencies {
1818

19-
val scalaTest = "org.scalatest" %% "scalatest" % "1.6.1" % "test"
19+
val scalaTest = "org.scalatest" %% "scalatest" % "1.7.2" % "test"
2020

2121
val testDeps = Seq(scalaTest)
2222
}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
sbt.version=0.11.2
1+
sbt.version=0.11.3
22

Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
resolvers += Resolver.file("Local Repo", file((Path.userHome / ".m2" / "repository").toString))
22

3-
addSbtPlugin("templemore" % "xsbt-cucumber-plugin" % "0.4.1")
3+
addSbtPlugin("templemore" % "xsbt-cucumber-plugin" % "0.5.0")

testProjects/multiModuleTestProject/war-project/src/test/scala/test/CucumberWarSteps.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package test
22

3-
import cuke4duke.{EN, ScalaDsl}
3+
import cucumber.runtime.{EN, ScalaDsl}
44
import org.scalatest.matchers.ShouldMatchers
55

66
class CucumberWarSteps extends ScalaDsl with EN with ShouldMatchers {

testProjects/testProject/build.sbt

+6
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,9 @@ libraryDependencies ++= Seq(
1313
seq(cucumberSettings : _*)
1414

1515
cucumberStepsBasePackage := "test"
16+
17+
cucumberHtmlReportDir <<= (target) { d => Some(d / "cucumber-report") }
18+
19+
cucumberJsonReportFile <<= (target) { f => Some(f / "cucumber.json") }
20+
21+
cucumberJunitReportFile <<= (target) { f => Some(f / "cucumber-junit.xml") }

0 commit comments

Comments
 (0)