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:
Eugene Yokota 2019-04-22 00:16:41 -04:00
parent 7658f14762
commit 24db77edc5
70 changed files with 570 additions and 89 deletions

View File

@ -17,6 +17,7 @@ env:
- SBT_CMD="scripted dependency-management/*2of4"
- SBT_CMD="scripted dependency-management/*3of4"
- SBT_CMD="scripted dependency-management/*4of4"
- SBT_CMD="scripted plugins/*"
- SBT_CMD="scripted package/* reporter/* run/* project-load/*"
- SBT_CMD="scripted project/*1of2"
- SBT_CMD="scripted project/*2of2"

View File

@ -355,6 +355,7 @@ object Keys {
val useCoursier = settingKey[Boolean]("Use Coursier for dependency resolution.").withRank(BSetting)
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 csrProject = taskKey[coursier.core.Project]("")
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 csrInterProjectDependencies = taskKey[Seq[coursier.core.Project]]("Projects the current project depends on, possibly transitively")
private[sbt] val csrFallbackDependencies = taskKey[Seq[FallbackDependency]]("")
private[sbt] val csrMavenProfiles = settingKey[Set[String]]("")
private[sbt] val csrLogger = taskKey[Option[CacheLogger]]("")
private[sbt] val csrExtraCredentials = taskKey[Seq[coursier.credentials.Credentials]]("")
private[sbt] val csrPublications = taskKey[Seq[(coursier.core.Configuration, coursier.core.Publication)]]("")

View File

@ -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")

View File

@ -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"))
}

View File

@ -0,0 +1,3 @@
$ delete output
> run
$ exists output

View File

@ -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"
)
}

View File

@ -0,0 +1 @@
> checkScalaLibrary

View File

@ -0,0 +1,2 @@
scalaVersion := "2.11.8"
libraryDependencies += "org.jclouds.api" % "nova" % "1.5.9" classifier "tests"

View File

@ -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")
}

View File

@ -0,0 +1 @@
> run

View File

@ -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"

View File

@ -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"))
}

View File

@ -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

View File

@ -0,0 +1,6 @@
case class A(msg: String)
object A {
def default = A("OK")
}

View File

@ -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"))
}

View File

@ -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"
)

View File

@ -0,0 +1,3 @@
$ delete output
> b/run
$ exists output

View File

@ -0,0 +1 @@
scalaVersion := "2.12.8"

View File

@ -0,0 +1,2 @@
addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.2.5")
addSbtPlugin("org.scalameta" % "sbt-metals" % "0.4.4")

View File

@ -0,0 +1,2 @@
> metalsEnable
> bloopInstall

View File

@ -0,0 +1,3 @@
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.hadoop" % "hadoop-yarn-server-resourcemanager" % "2.7.1"

View File

@ -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"))
}

View File

@ -0,0 +1,3 @@
$ delete output
> run
$ exists output

View File

@ -0,0 +1,6 @@
case class A(msg: String)
object A {
def default = A("OK")
}

View File

@ -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"))
}

View File

@ -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"
)

View File

@ -0,0 +1,3 @@
$ delete output
> b/run
$ exists output

View File

@ -0,0 +1,6 @@
object A {
def msg = "OK"
}

View File

@ -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"))
}

View File

@ -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"
)

View File

@ -0,0 +1,3 @@
$ delete output
> b/run
$ exists output

View File

@ -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)
}

View File

@ -0,0 +1 @@
> noPomCheck

View File

@ -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"

View File

@ -0,0 +1 @@
OK

View File

@ -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"))
}

View File

@ -0,0 +1,3 @@
$ delete output
> run
$ exists output

View File

@ -0,0 +1,3 @@
scalaOrganization := "org.typelevel"
scalaVersion := "2.11.7"
scalacOptions += "-Xexperimental"

View File

@ -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"))
}

View File

@ -0,0 +1,3 @@
$ delete output
> run
$ exists output

View File

@ -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"

View File

@ -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"))
}

View File

@ -0,0 +1,3 @@
$ delete output
> run
$ exists output

View File

@ -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")
}
}

View File

@ -0,0 +1 @@
> actualVersionCheck

View File

@ -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.

View File

@ -0,0 +1 @@
Cut-n-pasted from https://github.com/lampepfl/dotty-example-project/tree/a753b14e281bbaa6c69f26298913ad6feba969c7

View File

@ -0,0 +1 @@
scalaVersion := "0.13.0-RC1"

View File

@ -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

View File

@ -0,0 +1 @@
addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.3.0")

View File

@ -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()
}
}

View File

@ -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)
}
}

View File

@ -0,0 +1 @@
> run

View File

@ -0,0 +1,2 @@
scalaVersion := "2.12.2"
enablePlugins(ScalafmtPlugin)

View File

@ -0,0 +1 @@
addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.15")

View File

@ -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"))
}

View File

@ -0,0 +1 @@
> scalafmt

View File

@ -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")
}

View File

@ -0,0 +1 @@
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.3")

View File

@ -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"))
}

View File

@ -0,0 +1,5 @@
$ delete output
> stage
> check
$ exists output
$ delete output

View File

@ -0,0 +1,3 @@
scalaVersion := "2.12.3"
enablePlugins(ScalaJSPlugin)
libraryDependencies += "org.scala-js" %%% "scalajs-java-time" % "0.2.2"

View File

@ -0,0 +1 @@
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.19")

View File

@ -0,0 +1 @@
> update

View File

@ -0,0 +1,5 @@
scalaVersion := "2.12.1"
scalacOptions += "-Xfatal-warnings" // required for the test
enablePlugins(ScalaUnidocPlugin)
autoAPIMappings := true

View File

@ -0,0 +1 @@
addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.2")

View File

@ -0,0 +1,3 @@
/** Default instances for Scala's [[scala.concurrent.Future Future]]. */
class Foo

View File

@ -0,0 +1 @@
> unidoc

View File

@ -167,94 +167,59 @@ final class ScriptedTests(
import RemoteSbtCreatorKind._
val (group, name) = testName
s"$group/$name" match {
case "actions/add-alias" => LauncherBased // sbt/Package$
case "actions/cross-multiproject" => LauncherBased // tbd
case "actions/external-doc" => LauncherBased // sbt/Package$
case "actions/input-task" => LauncherBased // sbt/Package$
case "actions/input-task-dyn" => LauncherBased // sbt/Package$
case "classloader-cache/akka-actor-system" => LauncherBased // sbt/Package$
case "classloader-cache/jni" => LauncherBased // sbt/Package$
case "classloader-cache/library-mismatch" => LauncherBased // sbt/Package$
case "classloader-cache/runtime-layers" => LauncherBased // sbt/Package$
case "classloader-cache/package-private" => LauncherBased // sbt/Package$
case "compiler-project/dotty-compiler-plugin" => LauncherBased // sbt/Package$
case "compiler-project/run-test" => LauncherBased // sbt/Package$
case "compiler-project/src-dep-plugin" => LauncherBased // sbt/Package$
case "dependency-management/artifact" => LauncherBased // tbd
case "dependency-management/cache-classifiers" => LauncherBased // tbd
case "dependency-management/cache-local" => LauncherBased // tbd
case "dependency-management/cache-resolver" => LauncherBased // sbt/Package$
case "dependency-management/cache-update" => LauncherBased // tbd
case "dependency-management/cached-resolution-circular" => LauncherBased // tbd
case "dependency-management/cached-resolution-classifier" => LauncherBased // tbd
case "dependency-management/cached-resolution-configurations" => LauncherBased // tbd
case "dependency-management/cached-resolution-conflicts" => LauncherBased // tbd
case "dependency-management/cached-resolution-exclude" => LauncherBased // tbd
case "dependency-management/cached-resolution-force" => LauncherBased // tbd
case "dependency-management/cached-resolution-interproj" => LauncherBased // tbd
case "dependency-management/cached-resolution-overrides" => LauncherBased // tbd
case "dependency-management/chainresolver" => LauncherBased // tbd
case "dependency-management/circular-dependency" => LauncherBased // tbd
case "dependency-management/classifier" => LauncherBased // tbd
case "dependency-management/default-resolvers" => LauncherBased // tbd
case "dependency-management/deliver-artifacts" => LauncherBased // tbd
case "dependency-management/exclude-transitive" => LauncherBased // tbd
case "dependency-management/extra" => LauncherBased // tbd
case "dependency-management/force" => LauncherBased // tbd
case "dependency-management/info" => LauncherBased // tbd
case "dependency-management/inline-dependencies-a" => LauncherBased // tbd
case "dependency-management/ivy-settings-c" => LauncherBased // sbt/Package$
case "dependency-management/latest-local-plugin" => LauncherBased // sbt/Package$
case "dependency-management/metadata-only-resolver" => LauncherBased // tbd
case "dependency-management/no-file-fails-publish" => LauncherBased // tbd
case "dependency-management/override" => LauncherBased // tbd
case "dependency-management/parent-publish" => LauncherBased // sbt/Package$
case "dependency-management/pom-parent-pom" => LauncherBased // tbd
case "dependency-management/publish-to-maven-local-file" => LauncherBased // sbt/Package$
case "dependency-management/snapshot-resolution" => LauncherBased // tbd
case "dependency-management/snapshot-local" => LauncherBased // tbd
case "dependency-management/test-artifact" => LauncherBased // sbt/Package$
case "dependency-management/transitive-version-range" => LauncherBased // tbd
case "dependency-management/update-sbt-classifiers" => LauncherBased // tbd
case "dependency-management/url" => LauncherBased // tbd
case "java/argfile" => LauncherBased // sbt/Package$
case "java/cross" => LauncherBased // sbt/Package$
case "java/basic" => 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 "actions/add-alias" => LauncherBased // sbt/Package$
case "actions/cross-multiproject" => LauncherBased // tbd
case "actions/external-doc" => LauncherBased // sbt/Package$
case "actions/input-task" => LauncherBased // sbt/Package$
case "actions/input-task-dyn" => LauncherBased // sbt/Package$
case "classloader-cache/akka-actor-system" => LauncherBased // sbt/Package$
case "classloader-cache/jni" => LauncherBased // sbt/Package$
case "classloader-cache/library-mismatch" => LauncherBased // sbt/Package$
case "classloader-cache/runtime-layers" => LauncherBased // sbt/Package$
case "classloader-cache/package-private" => LauncherBased // sbt/Package$
case "compiler-project/dotty-compiler-plugin" => LauncherBased // sbt/Package$
case "compiler-project/run-test" => LauncherBased // sbt/Package$
case "compiler-project/src-dep-plugin" => LauncherBased // sbt/Package$
case gn if gn.startsWith("dependency-management/") => LauncherBased // sbt/Package$
case gn if gn.startsWith("plugins/") => LauncherBased // sbt/Package$
case "java/argfile" => LauncherBased // sbt/Package$
case "java/cross" => LauncherBased // sbt/Package$
case "java/basic" => 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" =>
LauncherBased // the sbt metabuild classpath leaks into the test interface classloader in older versions of sbt
case _ => RunFromSourceBased