From 240396dfe41385c81e476a1e5c5c3113b634c273 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Fri, 1 Sep 2017 11:07:04 -0700 Subject: Include test dependencies in integration tests --- project/build.properties | 2 +- .../xyz.driver.sbt/IntegrationTestPackaging.scala | 99 ++++++++++++---------- src/main/scala/xyz.driver.sbt/SbtSettings.scala | 11 +-- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/project/build.properties b/project/build.properties index 4c003f6..3507256 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1,4 +1,4 @@ #Activator-generated Properties #Wed Jul 06 16:08:49 PDT 2016 template.uuid=a675a7df-bee3-48df-9eaa-688d99e5814e -sbt.version=0.13.8 +sbt.version=0.13.16 diff --git a/src/main/scala/xyz.driver.sbt/IntegrationTestPackaging.scala b/src/main/scala/xyz.driver.sbt/IntegrationTestPackaging.scala index a5a16bc..4a6b4be 100644 --- a/src/main/scala/xyz.driver.sbt/IntegrationTestPackaging.scala +++ b/src/main/scala/xyz.driver.sbt/IntegrationTestPackaging.scala @@ -11,6 +11,7 @@ import com.typesafe.sbt.packager.docker.DockerPlugin.autoImport.Docker import com.typesafe.sbt.packager.universal._ import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport._ import sbt._ +import sbt.plugins._ import sbt.Keys._ object IntegrationTestPackaging extends AutoPlugin { @@ -19,7 +20,7 @@ object IntegrationTestPackaging extends AutoPlugin { override def trigger = AllRequirements object autoImport { - val IntegrationTest = config("it") extend (Test) // make test classes available + lazy val IntegrationTest = config("it") extend (Test) // make test classes available } import autoImport._ @@ -31,56 +32,64 @@ object IntegrationTestPackaging extends AutoPlugin { } } - override def projectSettings = Seq( - mappings in Universal ++= { - val cp: Seq[(File, String)] = (dependencyClasspath in IntegrationTest).value - .map(_.data.toPath) - .flatMap(list) - .map { - case (file, location) => - file.toFile -> ("lib-it/" + location) - } + private def configurationSettings = + inConfig(IntegrationTest)(Defaults.configSettings) ++ + inConfig(IntegrationTest)(Defaults.testSettings) ++ Seq( + ivyConfigurations := overrideConfigs(IntegrationTest)(ivyConfigurations.value) + ) - val tests: Seq[(File, String)] = list((packageBin in IntegrationTest).value.toPath) - .map { - case (file, location) => - file.toFile -> ("lib-it/" + location) - } + override def projectSettings = + configurationSettings ++ + Seq( + mappings in Universal ++= { + val cp: Seq[(File, String)] = (dependencyClasspath in IntegrationTest).value + .map(_.data.toPath) + .flatMap(list) + .map { + case (file, location) => + file.toFile -> ("lib-it/" + location) + } - val script = { - def libs(mappings: Seq[(File, String)]): String = - mappings + val tests: Seq[(File, String)] = list((packageBin in IntegrationTest).value.toPath) .map { - case (_, location) => - s"$$bin_dir/../$location" + case (file, location) => + file.toFile -> ("lib-it/" + location) } - .mkString(":") - s"""|#!/bin/bash - |bin_dir="$$(dirname "$$(readlink -f "$$0")")" - |exec java \\ - | -cp "${libs(tests ++ cp)}" \\ - | org.scalatest.tools.Runner \\ - | -o \\ - | -R "${libs(tests)}" - |""".stripMargin - } - val scriptFile = (resourceManaged in IntegrationTest).value / "runit" - IO.write(scriptFile, script) - scriptFile.setExecutable(true) + val script = { + def libs(mappings: Seq[(File, String)]): String = + mappings + .map { + case (_, location) => + s"$$bin_dir/../$location" + } + .mkString(":") + s"""|#!/bin/bash + |bin_dir="$$(dirname "$$(readlink -f "$$0")")" + |exec java \\ + | -cp "${libs(tests ++ cp)}" \\ + | org.scalatest.tools.Runner \\ + | -o \\ + | -R "${libs(tests)}" + |""".stripMargin + } + + val scriptFile = (resourceManaged in IntegrationTest).value / "runit" + IO.write(scriptFile, script) + scriptFile.setExecutable(true) - cp ++ tests ++ Seq(scriptFile -> s"bin/${normalizedName.value}-it") - }, - dockerCommands in Docker := { - (dockerCommands in Docker).value ++ Seq( - ExecCmd("RUN", "mkdir", "-p", "/test"), - ExecCmd("RUN", - "ln", - "-s", - s"${(defaultLinuxInstallLocation in Docker).value}/bin/${normalizedName.value}-it", - "/test/run_integration_test.sh") + cp ++ tests ++ Seq(scriptFile -> s"bin/${normalizedName.value}-it") + }, + dockerCommands in Docker := { + (dockerCommands in Docker).value ++ Seq( + ExecCmd("RUN", "mkdir", "-p", "/test"), + ExecCmd("RUN", + "ln", + "-s", + s"${(defaultLinuxInstallLocation in Docker).value}/bin/${normalizedName.value}-it", + "/test/run_integration_test.sh") + ) + } ) - } - ) } diff --git a/src/main/scala/xyz.driver.sbt/SbtSettings.scala b/src/main/scala/xyz.driver.sbt/SbtSettings.scala index ca92f5f..380e985 100644 --- a/src/main/scala/xyz.driver.sbt/SbtSettings.scala +++ b/src/main/scala/xyz.driver.sbt/SbtSettings.scala @@ -244,15 +244,6 @@ object SbtSettings extends AutoPlugin { ) } - def integrationTestingConfiguration: Project = { - project - .configs(IntegrationTest) - .settings( - Defaults.itSettings ++ Seq( - parallelExecution in IntegrationTest := false - )) - } - def packagingConfiguration: Project = { project .settings( // for assembly plugin @@ -380,7 +371,7 @@ object SbtSettings extends AutoPlugin { ) override def trigger: PluginTrigger = allRequirements - override def projectSettings: Seq[Setting[_]] = Defaults.coreDefaultSettings ++ Seq( + override def projectSettings: Seq[Setting[_]] = Seq( organization := "xyz.driver", crossScalaVersions := List("2.11.11", "2.12.3"), scalaVersion := crossScalaVersions.value.head, -- cgit v1.2.3