Skip to content

Commit f9c45c2

Browse files
committed
Merge branch 'develop'
2 parents e1b2d85 + 4c1b8db commit f9c45c2

File tree

12 files changed

+61
-29
lines changed

12 files changed

+61
-29
lines changed

TODO.markdown

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## To Do List ##
2+
3+
### Testing ###
4+
5+
* Unit test for templemore.jruby.Cucumber class
6+
* Component test for xsbt.cucumber.CucumberIntegration
7+

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name := "xsbt-cucumber-plugin"
22

3-
version := "0.1"
3+
version := "0.2"
44

55
organization := "templemore"
66

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.10.0
1+
sbt.version=0.10.1

src/main/scala/templemore/jruby/GemInstaller.scala

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,17 @@ import java.io.File
88
/**
99
* @author Chris Turner
1010
*/
11-
case class Gem(name: String, version: Option[String], source: Option[String]) {
11+
case class Gem(name: String,
12+
version: Option[String],
13+
source: Option[String],
14+
classifier: Option[String] = None) {
1215

1316
override def toString = version match {
1417
case None => name
15-
case Some(v) => "%s-%s" format(name, v)
18+
case Some(v) => classifier match {
19+
case None => "%s-%s" format(name, v)
20+
case Some(c) => "%s-%s-%s" format(name, v, c)
21+
}
1622
}
1723

1824
def toArgs = (name :: versionArgs) ++ sourceArgs
@@ -28,11 +34,11 @@ case class Gem(name: String, version: Option[String], source: Option[String]) {
2834
}
2935
}
3036

31-
case class GemInstaller(jRubyHome: File,
32-
gemDir: File,
33-
classpath: List[File],
34-
outputStrategy: OutputStrategy) extends JRuby {
35-
gemDir.mkdirs()
37+
class GemInstaller(val jRubyHome: File,
38+
val gemDir: File,
39+
val classpath: List[File],
40+
val outputStrategy: OutputStrategy) extends JRuby {
41+
IO.createDirectory(gemDir)
3642

3743
protected val javaOpts = List[String]()
3844

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ trait CucumberIntegration {
4848
gemSettings: GemSettings,
4949
log: Logger) = {
5050
log.info("Installing any missing Gems...")
51-
val gemInstaller = GemInstaller(jRubySettings.jRubyHome, jRubySettings.gemDir,
52-
jRubySettings.classpath, jRubySettings.outputStrategy)
51+
val gemInstaller = new GemInstaller(jRubySettings.jRubyHome, jRubySettings.gemDir,
52+
jRubySettings.classpath, jRubySettings.outputStrategy)
5353
gemSettings.gems.foreach(gemInstaller.installGem(_, gemSettings.forceReload))
5454
}
5555

src/test/scala/templemore/jruby/GemInstallerSpec.scala

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,42 @@ class GemInstallerSpec extends FlatSpec with MustMatchers with BeforeAndAfterEac
1414
private val jRubyHome = new File(System.getProperty("user.dir"), "target")
1515
private val gemDir = new File(jRubyHome, "gems")
1616
private val jRubyJar = new File(System.getProperty("user.home")) / ".ivy2" / "cache" / "org.jruby" / "jruby-complete" / "jars" / "jruby-complete-1.6.1.jar"
17-
private val cucumberVersion = "1.0.0"
17+
18+
private val gemName = "json"
19+
private val gemVersion = "1.5.3"
1820

1921
override def beforeEach() {
20-
if ( gemDir.exists ) deleteAllFiles(gemDir)
21-
else gemDir.mkdirs()
22+
IO.delete(gemDir)
23+
IO.createDirectory(gemDir)
2224
}
2325

26+
"A gem installer" should "install the test gem" in {
27+
installTestGem()
28+
gemDirectory.exists() must be(true)
29+
}
2430

25-
"A gem installer" should "install the cucumber gem" in {
26-
val installer = new GemInstaller(jRubyHome, gemDir,
27-
List(jRubyJar),
28-
StdoutOutput)
29-
installer.installGem(Gem("cucumber", Some(cucumberVersion), Some("http://rubygems.org/")))
31+
it should "not install the test gem if it is already present" in {
32+
installTestGem()
33+
val timestamp = gemFile.lastModified()
34+
installTestGem()
35+
gemFile.lastModified() must be(timestamp)
36+
}
3037

31-
new File(gemDir, "gems/cucumber-" + cucumberVersion).exists() must be(true)
38+
it should "force install the test gem even if it is already present" in {
39+
installTestGem()
40+
val timestamp = gemFile.lastModified()
41+
installTestGem(true)
42+
gemFile.lastModified() must not be(timestamp)
3243
}
3344

34-
private def deleteAllFiles(dir: File): Unit = dir.listFiles.foreach { f =>
35-
if ( f.isDirectory ) deleteAllFiles(f)
36-
f.delete()
45+
private def gemDirectory = gemDir / "gems" / "%s-%s-java".format(gemName, gemVersion)
46+
private def gemFile = gemDirectory / "lib" / "json.rb"
47+
48+
private def installTestGem(force: Boolean = false) {
49+
val installer = new GemInstaller(jRubyHome, gemDir,
50+
List(jRubyJar),
51+
StdoutOutput)
52+
val gem = Gem(gemName, Some(gemVersion), Some("http://rubygems.org/"), Some("java"))
53+
installer.installGem(gem, force)
3754
}
3855
}

testProjects/multiModuleTestProject/project/Build.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import templemore.xsbt.cucumber.CucumberPlugin
55
object BuildSettings {
66
val buildOrganization = "templemore"
77
val buildScalaVersion = "2.9.0-1"
8-
val buildVersion = "0.1"
8+
val buildVersion = "0.2"
99

1010
val buildSettings = Defaults.defaultSettings ++
1111
Seq (organization := buildOrganization,
@@ -34,4 +34,4 @@ object TestProjectBuild extends Build {
3434

3535
lazy val warProject = Project ("war-project", file ("war-project"),
3636
settings = buildSettings ++ Seq (libraryDependencies ++= testDeps)) dependsOn (jarProject)
37-
}
37+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sbt.version=0.10.1
2+
Lines changed: 1 addition & 1 deletion
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-
libraryDependencies += "templemore" %% "xsbt-cucumber-plugin" % "0.1"
3+
libraryDependencies += "templemore" %% "xsbt-cucumber-plugin" % "0.2"

testProjects/testProject/build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name := "test-project"
22

3-
version := "0.1"
3+
version := "0.2"
44

55
organization := "templemore"
66

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.10.0
1+
sbt.version=0.10.1
Lines changed: 1 addition & 1 deletion
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-
libraryDependencies += "templemore" %% "xsbt-cucumber-plugin" % "0.1"
3+
libraryDependencies += "templemore" %% "xsbt-cucumber-plugin" % "0.2"

0 commit comments

Comments
 (0)