Skip to content

Commit

Permalink
Fix #1067: Add a simple CrossProject mechanism
Browse files Browse the repository at this point in the history
  • Loading branch information
gzm0 committed Dec 2, 2014
1 parent b8d404a commit 7de2d50
Show file tree
Hide file tree
Showing 6 changed files with 497 additions and 39 deletions.
63 changes: 25 additions & 38 deletions sbt-plugin-test/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -44,57 +44,44 @@ lazy val jetty9 = project.settings(baseSettings: _*).
Jetty9Test.runSetting
)

val testFrameworkSettings = Seq(
name := "Dummy cross JS/JVM test framework",
unmanagedSourceDirectories in Compile +=
baseDirectory.value / ".." / "src" / "main" / "scala"
)

lazy val testFrameworkJS = project.in(file("testFramework/.js")).
enablePlugins(ScalaJSPlugin).
lazy val testFramework = crossProject.crossType(CrossType.Pure).
settings(versionSettings: _*).
settings(testFrameworkSettings: _*).
settings(
settings(name := "Dummy cross JS/JVM test framework").
jsSettings(
libraryDependencies +=
"org.scala-js" %% "scalajs-test-interface" % scalaJSVersion
)

lazy val testFrameworkJVM = project.in(file("testFramework/.jvm")).
settings(versionSettings: _*).
settings(testFrameworkSettings: _*).
settings(
).
jvmSettings(
libraryDependencies ++= Seq(
"org.scala-sbt" % "test-interface" % "1.0",
"org.scala-js" %% "scalajs-stubs" % scalaJSVersion % "provided"
)
)

val multiTestSettings = Seq(
testFrameworks ++= Seq(
TestFramework("sbttest.framework.DummyFramework"),
TestFramework("inexistent.Foo", "another.strange.Bar")
),
unmanagedSourceDirectories in Compile +=
baseDirectory.value / ".." / "shared" / "src" / "main" / "scala",
unmanagedSourceDirectories in Test +=
baseDirectory.value / ".." / "shared" / "src" / "test" / "scala"
)

lazy val multiTestJS = project.in(file("multiTest/js")).
enablePlugins(ScalaJSPlugin).
settings(baseSettings: _*).
settings(multiTestSettings: _*).
settings(name := "Multi test framework test JS").
dependsOn(testFrameworkJS % "test")
lazy val testFrameworkJS = testFramework.js
lazy val testFrameworkJVM = testFramework.jvm

lazy val multiTestJVM = project.in(file("multiTest/jvm")).
settings(versionSettings: _*).
settings(multiTestSettings: _*).
lazy val multiTest = crossProject.
settings(
testFrameworks ++= Seq(
TestFramework("sbttest.framework.DummyFramework"),
TestFramework("inexistent.Foo", "another.strange.Bar")
)
).
jsSettings(baseSettings: _*).
jsSettings(
name := "Multi test framework test JS"
).
jvmSettings(versionSettings: _*).
jvmSettings(
name := "Multi test framework test JVM",
libraryDependencies += "com.novocode" % "junit-interface" % "0.9" % "test"
libraryDependencies +=
"com.novocode" % "junit-interface" % "0.9" % "test"
).
dependsOn(testFrameworkJVM % "test")
dependsOn(testFramework % "test")

lazy val multiTestJS = multiTest.js
lazy val multiTestJVM = multiTest.jvm

// Test %%% macro - #1331
val unusedSettings = Seq(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ object ScalaJSPlugin extends AutoPlugin {
*/
val autoImport = AutoImport

object AutoImport extends impl.DependencyBuilders {
object AutoImport extends impl.DependencyBuilders
with cross.CrossProjectExtra {
import KeyRanks._

// Some constants
Expand All @@ -51,6 +52,9 @@ object ScalaJSPlugin extends AutoPlugin {
val FastOptStage = Stage.FastOpt
val FullOptStage = Stage.FullOpt

// CrossType
val CrossType = cross.CrossType

// Factory methods for JSEnvs

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* __ *\
** ________ ___ / / ___ __ ____ Scala.js sbt plugin **
** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
** /____/\___/_/ |_/____/_/ | |__/ /____/ **
** |/____/ **
\* */


package org.scalajs.sbtplugin.cross

import sbt._

final class CrossClasspathDependency(
val project: CrossProject,
val configuration: Option[String]
) {
def jvm: ClasspathDependency = ClasspathDependency(project.jvm, configuration)
def js: ClasspathDependency = ClasspathDependency(project.js, configuration)
}

object CrossClasspathDependency {
final class Constructor(crossProject: CrossProject) {
def %(conf: Configuration): CrossClasspathDependency = %(conf.name)

def %(conf: String): CrossClasspathDependency =
new CrossClasspathDependency(crossProject, Some(conf))
}
}

0 comments on commit 7de2d50

Please sign in to comment.