mirror of https://github.com/sbt/sbt.git
copy some tests from coursier/sbt-coursier
Copying over sbt-coursier integration tests that do not depend on Coursier-specific things, but excercises sbt integration.
This commit is contained in:
parent
7658f14762
commit
24db77edc5
|
|
@ -17,6 +17,7 @@ env:
|
||||||
- SBT_CMD="scripted dependency-management/*2of4"
|
- SBT_CMD="scripted dependency-management/*2of4"
|
||||||
- SBT_CMD="scripted dependency-management/*3of4"
|
- SBT_CMD="scripted dependency-management/*3of4"
|
||||||
- SBT_CMD="scripted dependency-management/*4of4"
|
- SBT_CMD="scripted dependency-management/*4of4"
|
||||||
|
- SBT_CMD="scripted plugins/*"
|
||||||
- SBT_CMD="scripted package/* reporter/* run/* project-load/*"
|
- SBT_CMD="scripted package/* reporter/* run/* project-load/*"
|
||||||
- SBT_CMD="scripted project/*1of2"
|
- SBT_CMD="scripted project/*1of2"
|
||||||
- SBT_CMD="scripted project/*2of2"
|
- SBT_CMD="scripted project/*2of2"
|
||||||
|
|
|
||||||
|
|
@ -355,6 +355,7 @@ object Keys {
|
||||||
|
|
||||||
val useCoursier = settingKey[Boolean]("Use Coursier for dependency resolution.").withRank(BSetting)
|
val useCoursier = settingKey[Boolean]("Use Coursier for dependency resolution.").withRank(BSetting)
|
||||||
val csrCachePath = settingKey[File]("Coursier cache path").withRank(CSetting)
|
val csrCachePath = settingKey[File]("Coursier cache path").withRank(CSetting)
|
||||||
|
val csrMavenProfiles = settingKey[Set[String]]("").withRank(CSetting)
|
||||||
private[sbt] val csrConfiguration = taskKey[CoursierConfiguration]("General dependency management (Coursier) settings, such as the resolvers and options to use.").withRank(DTask)
|
private[sbt] val csrConfiguration = taskKey[CoursierConfiguration]("General dependency management (Coursier) settings, such as the resolvers and options to use.").withRank(DTask)
|
||||||
private[sbt] val csrProject = taskKey[coursier.core.Project]("")
|
private[sbt] val csrProject = taskKey[coursier.core.Project]("")
|
||||||
private[sbt] val csrResolvers = taskKey[Seq[Resolver]]("")
|
private[sbt] val csrResolvers = taskKey[Seq[Resolver]]("")
|
||||||
|
|
@ -362,7 +363,6 @@ object Keys {
|
||||||
private[sbt] val csrSbtResolvers = taskKey[Seq[Resolver]]("Resolvers used for sbt artifacts.")
|
private[sbt] val csrSbtResolvers = taskKey[Seq[Resolver]]("Resolvers used for sbt artifacts.")
|
||||||
private[sbt] val csrInterProjectDependencies = taskKey[Seq[coursier.core.Project]]("Projects the current project depends on, possibly transitively")
|
private[sbt] val csrInterProjectDependencies = taskKey[Seq[coursier.core.Project]]("Projects the current project depends on, possibly transitively")
|
||||||
private[sbt] val csrFallbackDependencies = taskKey[Seq[FallbackDependency]]("")
|
private[sbt] val csrFallbackDependencies = taskKey[Seq[FallbackDependency]]("")
|
||||||
private[sbt] val csrMavenProfiles = settingKey[Set[String]]("")
|
|
||||||
private[sbt] val csrLogger = taskKey[Option[CacheLogger]]("")
|
private[sbt] val csrLogger = taskKey[Option[CacheLogger]]("")
|
||||||
private[sbt] val csrExtraCredentials = taskKey[Seq[coursier.credentials.Credentials]]("")
|
private[sbt] val csrExtraCredentials = taskKey[Seq[coursier.credentials.Credentials]]("")
|
||||||
private[sbt] val csrPublications = taskKey[Seq[(coursier.core.Configuration, coursier.core.Publication)]]("")
|
private[sbt] val csrPublications = taskKey[Seq[(coursier.core.Configuration, coursier.core.Publication)]]("")
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
|
||||||
|
libraryDependencies += ("com.rengwuxian.materialedittext" % "library" % "2.1.4")
|
||||||
|
.exclude("com.android.support", "support-v4")
|
||||||
|
.exclude("com.android.support", "support-annotations")
|
||||||
|
.exclude("com.android.support", "appcompat-v7")
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
autoScalaLibrary := false
|
||||||
|
libraryDependencies += "com.chuusai" % "shapeless_2.12" % "2.3.2"
|
||||||
|
|
||||||
|
val checkScalaLibrary = TaskKey[Unit]("checkScalaLibrary")
|
||||||
|
|
||||||
|
checkScalaLibrary := {
|
||||||
|
val scalaLibsJars = managedClasspath
|
||||||
|
.in(Compile)
|
||||||
|
.value
|
||||||
|
.map(_.data.getName)
|
||||||
|
.filter(_.startsWith("scala-library"))
|
||||||
|
.sorted
|
||||||
|
val expectedScalaLibsJars = Seq(
|
||||||
|
"scala-library-2.12.0.jar"
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
scalaLibsJars == expectedScalaLibsJars,
|
||||||
|
s"$scalaLibsJars != $expectedScalaLibsJars"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> checkScalaLibrary
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
libraryDependencies += "org.jclouds.api" % "nova" % "1.5.9" classifier "tests"
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
import scala.util.Try
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
|
||||||
|
def classFound(clsName: String) = Try(
|
||||||
|
Thread.currentThread()
|
||||||
|
.getContextClassLoader()
|
||||||
|
.loadClass(clsName)
|
||||||
|
).toOption.nonEmpty
|
||||||
|
|
||||||
|
val name = "org.jclouds.openstack.nova.functions.ParseServerFromJsonResponseTest"
|
||||||
|
val classifierTest = classFound(name)
|
||||||
|
|
||||||
|
assert(classifierTest, s"Couldn't find $name")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> run
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
|
||||||
|
organization := "io.get-coursier.test"
|
||||||
|
name := "sbt-coursier-exclude-dependencies"
|
||||||
|
version := "0.1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
libraryDependencies += "com.github.alexarchambault" %% "argonaut-shapeless_6.1" % "1.0.0-RC1"
|
||||||
|
|
||||||
|
excludeDependencies += sbt.ExclusionRule("com.chuusai", "shapeless_2.11")
|
||||||
|
excludeDependencies += "io.argonaut" %% "argonaut"
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,32 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
import scala.util.Try
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
|
||||||
|
def classFound(clsName: String) = Try(
|
||||||
|
Thread.currentThread()
|
||||||
|
.getContextClassLoader()
|
||||||
|
.loadClass(clsName)
|
||||||
|
).toOption.nonEmpty
|
||||||
|
|
||||||
|
val shapelessFound = classFound("shapeless.HList")
|
||||||
|
val argonautFound = classFound("argonaut.Json")
|
||||||
|
val argonautShapelessFound = classFound("argonaut.derive.MkEncodeJson")
|
||||||
|
|
||||||
|
assert(
|
||||||
|
argonautShapelessFound,
|
||||||
|
"Expected to find class from argonaut-shapeless"
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
!shapelessFound,
|
||||||
|
"Expected not to find classes from shapeless"
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
!argonautFound,
|
||||||
|
"Expected not to find classes from argonaut"
|
||||||
|
)
|
||||||
|
|
||||||
|
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
$ delete output
|
||||||
|
> run
|
||||||
|
$ exists output
|
||||||
|
> publishLocal
|
||||||
|
$ exec java -jar coursier launch io.get-coursier.test:sbt-coursier-exclude-dependencies_2.11:0.1.0-SNAPSHOT
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
case class A(msg: String)
|
||||||
|
|
||||||
|
object A {
|
||||||
|
def default = A("OK")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
|
||||||
|
val msg = shapeless.Generic[A].to(A.default).head
|
||||||
|
|
||||||
|
Files.write(new File("output").toPath, msg.getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
lazy val a = project
|
||||||
|
.settings(sharedSettings)
|
||||||
|
.settings(
|
||||||
|
libraryDependencies += "com.chuusai" %% "shapeless" % "2.3.234" from "https://oss.sonatype.org/content/repositories/releases/com/chuusai/shapeless_2.11/2.3.1/shapeless_2.11-2.3.1.jar"
|
||||||
|
)
|
||||||
|
|
||||||
|
lazy val b = project
|
||||||
|
.dependsOn(a)
|
||||||
|
.settings(sharedSettings)
|
||||||
|
|
||||||
|
lazy val root = project
|
||||||
|
.in(file("."))
|
||||||
|
.aggregate(a, b)
|
||||||
|
.settings(sharedSettings)
|
||||||
|
|
||||||
|
|
||||||
|
lazy val sharedSettings = Seq(
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> b/run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
scalaVersion := "2.12.8"
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.2.5")
|
||||||
|
addSbtPlugin("org.scalameta" % "sbt-metals" % "0.4.4")
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
> metalsEnable
|
||||||
|
> bloopInstall
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
|
||||||
|
libraryDependencies += "org.apache.hadoop" % "hadoop-yarn-server-resourcemanager" % "2.7.1"
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
import org.apache.zookeeper.ZooKeeper
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
Files.write(new File("output").toPath, classOf[ZooKeeper].getSimpleName.getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
case class A(msg: String)
|
||||||
|
|
||||||
|
object A {
|
||||||
|
def default = A("OK")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
import scalaz.stream._
|
||||||
|
import scalaz.concurrent.Task
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
|
||||||
|
val pch = Process.constant((i:Int) => Task.now(())).take(3)
|
||||||
|
val count = Process.constant(1).toSource.to(pch).runLog.run.size
|
||||||
|
assert(count == 3)
|
||||||
|
|
||||||
|
Files.write(new File("output").toPath, A.default.msg.getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
|
||||||
|
lazy val a = project
|
||||||
|
.settings(sharedSettings)
|
||||||
|
.settings(
|
||||||
|
resolvers += "Scalaz Bintray Repo" at "https://dl.bintray.com/scalaz/releases"
|
||||||
|
)
|
||||||
|
|
||||||
|
lazy val b = project
|
||||||
|
.dependsOn(a)
|
||||||
|
.settings(sharedSettings)
|
||||||
|
.settings(
|
||||||
|
// resolver added in inter-project dependency only - should still be fine
|
||||||
|
libraryDependencies += "org.scalaz.stream" %% "scalaz-stream" % "0.7.1a"
|
||||||
|
)
|
||||||
|
|
||||||
|
lazy val root = project
|
||||||
|
.in(file("."))
|
||||||
|
.aggregate(a, b)
|
||||||
|
.settings(sharedSettings)
|
||||||
|
|
||||||
|
|
||||||
|
lazy val sharedSettings = Seq(
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> b/run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
object A {
|
||||||
|
|
||||||
|
def msg = "OK"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
import argonaut._, Argonaut._, ArgonautShapeless._
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
|
||||||
|
case class CC(i: Int, s: String)
|
||||||
|
|
||||||
|
val msg = CC(2, A.msg).asJson.spaces2
|
||||||
|
|
||||||
|
Files.write(new File("output").toPath, msg.getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
|
||||||
|
lazy val sharedSettings = Seq(
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Module with the same Maven coordinates as shapeless 2.3.1 */
|
||||||
|
lazy val `shapeless-mock` = project
|
||||||
|
.settings(sharedSettings)
|
||||||
|
.settings(
|
||||||
|
organization := "com.chuusai",
|
||||||
|
name := "shapeless",
|
||||||
|
version := "2.3.1"
|
||||||
|
)
|
||||||
|
|
||||||
|
lazy val a = project
|
||||||
|
.settings(sharedSettings)
|
||||||
|
.settings(
|
||||||
|
organization := "com.pany",
|
||||||
|
name := "a",
|
||||||
|
version := "0.0.1"
|
||||||
|
)
|
||||||
|
|
||||||
|
/** Transitively depends on the - real - shapeless 2.3.1 */
|
||||||
|
lazy val b = project
|
||||||
|
.dependsOn(a)
|
||||||
|
.settings(sharedSettings)
|
||||||
|
.settings(
|
||||||
|
organization := "com.pany",
|
||||||
|
name := "b",
|
||||||
|
version := "0.0.1",
|
||||||
|
libraryDependencies += "com.github.alexarchambault" %% "argonaut-shapeless_6.2" % "1.2.0-M1"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> b/run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
lazy val noPomCheck = TaskKey[Unit]("noPomCheck")
|
||||||
|
|
||||||
|
noPomCheck := {
|
||||||
|
|
||||||
|
val log = streams.value.log
|
||||||
|
|
||||||
|
val configReport = update.value
|
||||||
|
.configuration(Compile)
|
||||||
|
.getOrElse {
|
||||||
|
throw new Exception(
|
||||||
|
"compile configuration not found in update report"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
val artifacts = configReport
|
||||||
|
.modules
|
||||||
|
.flatMap(_.artifacts)
|
||||||
|
.map(_._1)
|
||||||
|
|
||||||
|
val pomArtifacts = artifacts
|
||||||
|
.filter { a =>
|
||||||
|
a.`type` == "pom" && a.classifier.isEmpty
|
||||||
|
}
|
||||||
|
|
||||||
|
for (a <- pomArtifacts)
|
||||||
|
log.error(s"Found POM artifact $a")
|
||||||
|
|
||||||
|
assert(pomArtifacts.isEmpty)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> noPomCheck
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
ThisBuild / scalaVersion := "2.11.8"
|
||||||
|
|
||||||
|
Compile / classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.Flat
|
||||||
|
libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.6.2"
|
||||||
|
csrMavenProfiles += "hadoop-2.6"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
OK
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
val p = new java.util.Properties
|
||||||
|
p.load(
|
||||||
|
Thread.currentThread()
|
||||||
|
.getContextClassLoader
|
||||||
|
.getResource("common-version-info.properties")
|
||||||
|
.openStream()
|
||||||
|
)
|
||||||
|
|
||||||
|
val hadoopVersion = p.getProperty("version")
|
||||||
|
Console.err.println(s"Found hadoop version $hadoopVersion")
|
||||||
|
|
||||||
|
assert(hadoopVersion == "2.6.0")
|
||||||
|
|
||||||
|
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
scalaOrganization := "org.typelevel"
|
||||||
|
scalaVersion := "2.11.7"
|
||||||
|
scalacOptions += "-Xexperimental"
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
val n': 2.type = 2
|
||||||
|
|
||||||
|
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
scalaVersion := "2.11.8"
|
||||||
|
|
||||||
|
libraryDependencies += "ccl.northwestern.edu" % "netlogo" % "5.3.1" % "provided" from s"https://github.com/NetLogo/NetLogo/releases/download/5.3.1/NetLogo.jar"
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
// Not using directly the NetLogo 5.x lib, which seems to depend on Scala 2.9
|
||||||
|
// Can't find a way to check that NetLogo.jar is in the classpath
|
||||||
|
// These don't work, even with fork := true:
|
||||||
|
// assert(Thread.currentThread.getContextClassLoader.getResource("org/nlogo/nvm/Task.class") != null)
|
||||||
|
// Thread.currentThread.getContextClassLoader.getResource("org/nlogo/nvm/Task.class")
|
||||||
|
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
$ delete output
|
||||||
|
> run
|
||||||
|
$ exists output
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
libraryDependencies += "org.json4s" %% "json4s-native" % "[3.3.0,3.5.0)"
|
||||||
|
|
||||||
|
|
||||||
|
lazy val actualVersionCheck = taskKey[Unit]("")
|
||||||
|
|
||||||
|
actualVersionCheck := {
|
||||||
|
|
||||||
|
val log = streams.value.log
|
||||||
|
|
||||||
|
val configReport = update.value
|
||||||
|
.configuration(Compile)
|
||||||
|
.getOrElse {
|
||||||
|
sys.error("compile configuration not found in update report")
|
||||||
|
}
|
||||||
|
|
||||||
|
val modules = configReport
|
||||||
|
.modules
|
||||||
|
.map(_.module)
|
||||||
|
|
||||||
|
assert(modules.nonEmpty)
|
||||||
|
assert(modules.exists(_.name.startsWith("json4s-native")))
|
||||||
|
|
||||||
|
val wrongModules = modules.filter { m =>
|
||||||
|
val v = m.revision
|
||||||
|
v.contains("[") || v.contains("]") || v.contains("(") || v.contains(")")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wrongModules.nonEmpty) {
|
||||||
|
log.error("Found unexpected intervals in revisions")
|
||||||
|
for (m <- wrongModules)
|
||||||
|
log.error(s" ${m.organization}:${m.name}:${m.revision}")
|
||||||
|
sys.error("Found intervals in revisions")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> actualVersionCheck
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
Copyright (c) 2015 The dotty-example-project contributors.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
3. The name of the author may not be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Cut-n-pasted from https://github.com/lampepfl/dotty-example-project/tree/a753b14e281bbaa6c69f26298913ad6feba969c7
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
scalaVersion := "0.13.0-RC1"
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# sbt-coursier scripted tests: required, as we default to sbt 1.0.3,
|
||||||
|
# but sbt-dotty requires sbt >= 1.2.7
|
||||||
|
sbt.version=1.2.7
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.3.0")
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
object Main {
|
||||||
|
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
|
||||||
|
runExample("Trait Params")(TraitParams.test)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private def runExample(name: String)(f: => Unit) = {
|
||||||
|
println(Console.MAGENTA + s"$name example:" + Console.RESET)
|
||||||
|
f
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
/**
|
||||||
|
* Trait Parameters: https://dotty.epfl.ch/docs/reference/other-new-features/trait-parameters.html
|
||||||
|
*/
|
||||||
|
object TraitParams {
|
||||||
|
|
||||||
|
trait Base(val msg: String)
|
||||||
|
class A extends Base("Hello")
|
||||||
|
class B extends Base("Dotty!")
|
||||||
|
|
||||||
|
// Union types only exist in Dotty, so there's no chance that this will accidentally be compiled with Scala 2
|
||||||
|
private def printMessages(msgs: (A | B)*) = println(msgs.map(_.msg).mkString(" "))
|
||||||
|
|
||||||
|
def test: Unit = {
|
||||||
|
|
||||||
|
printMessages(new A, new B)
|
||||||
|
|
||||||
|
// Sanity check the classpath: this won't run if the dotty jar is not present.
|
||||||
|
val x: Int => Int = z => z
|
||||||
|
x(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> run
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
scalaVersion := "2.12.2"
|
||||||
|
enablePlugins(ScalafmtPlugin)
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.15")
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> scalafmt
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
ThisBuild / scalaVersion := "2.12.8"
|
||||||
|
|
||||||
|
name := "hello"
|
||||||
|
enablePlugins(JavaAppPackaging)
|
||||||
|
|
||||||
|
lazy val check = taskKey[Unit]("")
|
||||||
|
|
||||||
|
check := {
|
||||||
|
val cmd = "target/universal/stage/bin/hello"
|
||||||
|
val cmd0 =
|
||||||
|
if (sys.props("os.name").toLowerCase(java.util.Locale.ROOT).contains("windows"))
|
||||||
|
cmd + ".bat"
|
||||||
|
else
|
||||||
|
cmd
|
||||||
|
val b = new ProcessBuilder(cmd0)
|
||||||
|
b.inheritIO()
|
||||||
|
val p = b.start()
|
||||||
|
val retCode = p.waitFor()
|
||||||
|
assert(retCode == 0, s"Command $cmd returned code $retCode")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.3")
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
$ delete output
|
||||||
|
> stage
|
||||||
|
> check
|
||||||
|
$ exists output
|
||||||
|
$ delete output
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
scalaVersion := "2.12.3"
|
||||||
|
enablePlugins(ScalaJSPlugin)
|
||||||
|
libraryDependencies += "org.scala-js" %%% "scalajs-java-time" % "0.2.2"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.19")
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> update
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
scalaVersion := "2.12.1"
|
||||||
|
scalacOptions += "-Xfatal-warnings" // required for the test
|
||||||
|
|
||||||
|
enablePlugins(ScalaUnidocPlugin)
|
||||||
|
autoAPIMappings := true
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.2")
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
/** Default instances for Scala's [[scala.concurrent.Future Future]]. */
|
||||||
|
class Foo
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> unidoc
|
||||||
|
|
@ -167,94 +167,59 @@ final class ScriptedTests(
|
||||||
import RemoteSbtCreatorKind._
|
import RemoteSbtCreatorKind._
|
||||||
val (group, name) = testName
|
val (group, name) = testName
|
||||||
s"$group/$name" match {
|
s"$group/$name" match {
|
||||||
case "actions/add-alias" => LauncherBased // sbt/Package$
|
case "actions/add-alias" => LauncherBased // sbt/Package$
|
||||||
case "actions/cross-multiproject" => LauncherBased // tbd
|
case "actions/cross-multiproject" => LauncherBased // tbd
|
||||||
case "actions/external-doc" => LauncherBased // sbt/Package$
|
case "actions/external-doc" => LauncherBased // sbt/Package$
|
||||||
case "actions/input-task" => LauncherBased // sbt/Package$
|
case "actions/input-task" => LauncherBased // sbt/Package$
|
||||||
case "actions/input-task-dyn" => LauncherBased // sbt/Package$
|
case "actions/input-task-dyn" => LauncherBased // sbt/Package$
|
||||||
case "classloader-cache/akka-actor-system" => LauncherBased // sbt/Package$
|
case "classloader-cache/akka-actor-system" => LauncherBased // sbt/Package$
|
||||||
case "classloader-cache/jni" => LauncherBased // sbt/Package$
|
case "classloader-cache/jni" => LauncherBased // sbt/Package$
|
||||||
case "classloader-cache/library-mismatch" => LauncherBased // sbt/Package$
|
case "classloader-cache/library-mismatch" => LauncherBased // sbt/Package$
|
||||||
case "classloader-cache/runtime-layers" => LauncherBased // sbt/Package$
|
case "classloader-cache/runtime-layers" => LauncherBased // sbt/Package$
|
||||||
case "classloader-cache/package-private" => LauncherBased // sbt/Package$
|
case "classloader-cache/package-private" => LauncherBased // sbt/Package$
|
||||||
case "compiler-project/dotty-compiler-plugin" => LauncherBased // sbt/Package$
|
case "compiler-project/dotty-compiler-plugin" => LauncherBased // sbt/Package$
|
||||||
case "compiler-project/run-test" => LauncherBased // sbt/Package$
|
case "compiler-project/run-test" => LauncherBased // sbt/Package$
|
||||||
case "compiler-project/src-dep-plugin" => LauncherBased // sbt/Package$
|
case "compiler-project/src-dep-plugin" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/artifact" => LauncherBased // tbd
|
case gn if gn.startsWith("dependency-management/") => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cache-classifiers" => LauncherBased // tbd
|
case gn if gn.startsWith("plugins/") => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cache-local" => LauncherBased // tbd
|
case "java/argfile" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cache-resolver" => LauncherBased // sbt/Package$
|
case "java/cross" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cache-update" => LauncherBased // tbd
|
case "java/basic" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-circular" => LauncherBased // tbd
|
case "java/varargs-main" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-classifier" => LauncherBased // tbd
|
case "package/lazy-name" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-configurations" => LauncherBased // tbd
|
case "package/manifest" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-conflicts" => LauncherBased // tbd
|
case "package/resources" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-exclude" => LauncherBased // tbd
|
case "project/Class.forName" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-force" => LauncherBased // tbd
|
case "project/binary-plugin" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-interproj" => LauncherBased // tbd
|
case "project/default-settings" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/cached-resolution-overrides" => LauncherBased // tbd
|
case "project/extra" => LauncherBased // tbd
|
||||||
case "dependency-management/chainresolver" => LauncherBased // tbd
|
case "project/flatten" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/circular-dependency" => LauncherBased // tbd
|
case "project/generated-root-no-publish" => LauncherBased // tbd
|
||||||
case "dependency-management/classifier" => LauncherBased // tbd
|
case "project/giter8-plugin" => LauncherBased // tbd
|
||||||
case "dependency-management/default-resolvers" => LauncherBased // tbd
|
case "project/lib" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/deliver-artifacts" => LauncherBased // tbd
|
case "project/scripted-plugin" => LauncherBased // tbd
|
||||||
case "dependency-management/exclude-transitive" => LauncherBased // tbd
|
case "project/scripted-skip-incompatible" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/extra" => LauncherBased // tbd
|
case "project/session-update-from-cmd" => LauncherBased // tbd
|
||||||
case "dependency-management/force" => LauncherBased // tbd
|
case "project/transitive-plugins" => LauncherBased // tbd
|
||||||
case "dependency-management/info" => LauncherBased // tbd
|
case "run/awt" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/inline-dependencies-a" => LauncherBased // tbd
|
case "run/classpath" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/ivy-settings-c" => LauncherBased // sbt/Package$
|
case "run/daemon" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/latest-local-plugin" => LauncherBased // sbt/Package$
|
case "run/daemon-exit" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/metadata-only-resolver" => LauncherBased // tbd
|
case "run/error" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/no-file-fails-publish" => LauncherBased // tbd
|
case "run/fork" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/override" => LauncherBased // tbd
|
case "run/fork-loader" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/parent-publish" => LauncherBased // sbt/Package$
|
case "run/non-local-main" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/pom-parent-pom" => LauncherBased // tbd
|
case "run/spawn" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/publish-to-maven-local-file" => LauncherBased // sbt/Package$
|
case "run/spawn-exit" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/snapshot-resolution" => LauncherBased // tbd
|
case "source-dependencies/binary" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/snapshot-local" => LauncherBased // tbd
|
case "source-dependencies/export-jars" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/test-artifact" => LauncherBased // sbt/Package$
|
case "source-dependencies/implicit-search" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/transitive-version-range" => LauncherBased // tbd
|
case "source-dependencies/java-basic" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/update-sbt-classifiers" => LauncherBased // tbd
|
case "source-dependencies/less-inter-inv" => LauncherBased // sbt/Package$
|
||||||
case "dependency-management/url" => LauncherBased // tbd
|
case "source-dependencies/less-inter-inv-java" => LauncherBased // sbt/Package$
|
||||||
case "java/argfile" => LauncherBased // sbt/Package$
|
case "source-dependencies/linearization" => LauncherBased // sbt/Package$
|
||||||
case "java/cross" => LauncherBased // sbt/Package$
|
case "source-dependencies/named" => LauncherBased // sbt/Package$
|
||||||
case "java/basic" => LauncherBased // sbt/Package$
|
case "source-dependencies/specialized" => LauncherBased // sbt/Package$
|
||||||
case "java/varargs-main" => LauncherBased // sbt/Package$
|
|
||||||
case "package/lazy-name" => LauncherBased // sbt/Package$
|
|
||||||
case "package/manifest" => LauncherBased // sbt/Package$
|
|
||||||
case "package/resources" => LauncherBased // sbt/Package$
|
|
||||||
case "project/Class.forName" => LauncherBased // sbt/Package$
|
|
||||||
case "project/binary-plugin" => LauncherBased // sbt/Package$
|
|
||||||
case "project/default-settings" => LauncherBased // sbt/Package$
|
|
||||||
case "project/extra" => LauncherBased // tbd
|
|
||||||
case "project/flatten" => LauncherBased // sbt/Package$
|
|
||||||
case "project/generated-root-no-publish" => LauncherBased // tbd
|
|
||||||
case "project/giter8-plugin" => LauncherBased // tbd
|
|
||||||
case "project/lib" => LauncherBased // sbt/Package$
|
|
||||||
case "project/scripted-plugin" => LauncherBased // tbd
|
|
||||||
case "project/scripted-skip-incompatible" => LauncherBased // sbt/Package$
|
|
||||||
case "project/session-update-from-cmd" => LauncherBased // tbd
|
|
||||||
case "project/transitive-plugins" => LauncherBased // tbd
|
|
||||||
case "run/awt" => LauncherBased // sbt/Package$
|
|
||||||
case "run/classpath" => LauncherBased // sbt/Package$
|
|
||||||
case "run/daemon" => LauncherBased // sbt/Package$
|
|
||||||
case "run/daemon-exit" => LauncherBased // sbt/Package$
|
|
||||||
case "run/error" => LauncherBased // sbt/Package$
|
|
||||||
case "run/fork" => LauncherBased // sbt/Package$
|
|
||||||
case "run/fork-loader" => LauncherBased // sbt/Package$
|
|
||||||
case "run/non-local-main" => LauncherBased // sbt/Package$
|
|
||||||
case "run/spawn" => LauncherBased // sbt/Package$
|
|
||||||
case "run/spawn-exit" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/binary" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/export-jars" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/implicit-search" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/java-basic" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/less-inter-inv" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/less-inter-inv-java" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/linearization" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/named" => LauncherBased // sbt/Package$
|
|
||||||
case "source-dependencies/specialized" => LauncherBased // sbt/Package$
|
|
||||||
case "tests/test-cross" =>
|
case "tests/test-cross" =>
|
||||||
LauncherBased // the sbt metabuild classpath leaks into the test interface classloader in older versions of sbt
|
LauncherBased // the sbt metabuild classpath leaks into the test interface classloader in older versions of sbt
|
||||||
case _ => RunFromSourceBased
|
case _ => RunFromSourceBased
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue