mirror of https://github.com/sbt/sbt.git
Merge pull request #8024 from unkarjedy/fix-8022-updateSbtClassifiers
[2.x] fix updateSbtClassifiers task
This commit is contained in:
commit
8d80bf5c39
|
|
@ -163,7 +163,7 @@ suite with `sbt testOnly`
|
||||||
Scripted integration tests reside in `sbt-app/src/sbt-test` and are
|
Scripted integration tests reside in `sbt-app/src/sbt-test` and are
|
||||||
written using the same testing infrastructure sbt plugin authors can
|
written using the same testing infrastructure sbt plugin authors can
|
||||||
use to test their own plugins with sbt. You can read more about this
|
use to test their own plugins with sbt. You can read more about this
|
||||||
style of tests [here](https://www.scala-sbt.org/1.0/docs/Testing-sbt-plugins).
|
style of tests [here](https://www.scala-sbt.org/1.x/docs/Testing-sbt-plugins).
|
||||||
|
|
||||||
You can run the integration tests with the `sbt scripted` sbt
|
You can run the integration tests with the `sbt scripted` sbt
|
||||||
command. To run a single test, such as the test in
|
command. To run a single test, such as the test in
|
||||||
|
|
|
||||||
|
|
@ -3714,17 +3714,21 @@ object Classpaths {
|
||||||
val ref = thisProjectRef.value
|
val ref = thisProjectRef.value
|
||||||
val unit = loadedBuild.value.units(ref.build).unit
|
val unit = loadedBuild.value.units(ref.build).unit
|
||||||
val converter = unit.converter
|
val converter = unit.converter
|
||||||
val pluginClasspath = unit.plugins.fullClasspath.toVector
|
val pluginClasspath = unit.plugins.pluginData.dependencyClasspath.toVector
|
||||||
|
// Exclude directories: an approximation to whether they've been published
|
||||||
|
// Note: it might be a redundant legacy from sbt 0.13/1.x times where the classpath contained directories
|
||||||
|
// but it's left jsut in case
|
||||||
val pluginJars = pluginClasspath.filter: x =>
|
val pluginJars = pluginClasspath.filter: x =>
|
||||||
!Files.isDirectory(converter.toPath(x.data))
|
!Files.isDirectory(converter.toPath(x.data))
|
||||||
// exclude directories: an approximation to whether they've been published
|
|
||||||
val pluginIDs: Vector[ModuleID] = pluginJars.flatMap(_.get(moduleIDStr).map: str =>
|
val pluginIDs: Vector[ModuleID] = pluginJars.flatMap(_.get(moduleIDStr).map: str =>
|
||||||
moduleIdJsonKeyFormat.read(str))
|
moduleIdJsonKeyFormat.read(str))
|
||||||
|
|
||||||
|
val dependencies = sbtDependency.value +: pluginIDs
|
||||||
GetClassifiersModule(
|
GetClassifiersModule(
|
||||||
projectID.value,
|
projectID.value,
|
||||||
// TODO: Should it be sbt's scalaModuleInfo?
|
// TODO: Should it be sbt's scalaModuleInfo?
|
||||||
scalaModuleInfo.value,
|
scalaModuleInfo.value,
|
||||||
sbtDependency.value +: pluginIDs,
|
dependencies,
|
||||||
// sbt is now on Maven Central, so this has changed from sbt 0.13.
|
// sbt is now on Maven Central, so this has changed from sbt 0.13.
|
||||||
Vector(Configurations.Default) ++ Configurations.default,
|
Vector(Configurations.Default) ++ Configurations.default,
|
||||||
classifiers.toVector
|
classifiers.toVector
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
ThisBuild / scalaVersion := "2.11.12"
|
|
||||||
|
|
||||||
ivyConfiguration := {
|
ivyConfiguration := {
|
||||||
throw new RuntimeException("updateSbtClassifiers should use updateSbtClassifiers / ivyConfiguration")
|
throw new RuntimeException("updateSbtClassifiers should use updateSbtClassifiers / ivyConfiguration")
|
||||||
}
|
}
|
||||||
|
|
@ -8,5 +6,87 @@ dependencyResolution := {
|
||||||
throw new RuntimeException("updateSbtClassifiers should use updateSbtClassifiers / dependencyResolution")
|
throw new RuntimeException("updateSbtClassifiers should use updateSbtClassifiers / dependencyResolution")
|
||||||
}
|
}
|
||||||
|
|
||||||
scalaOrganization := "doesnt.exist"
|
lazy val root = (project in file("."))
|
||||||
|
.settings(
|
||||||
|
scalaVersion := "2.11.12",
|
||||||
|
scalaOrganization := "doesnt.exist",
|
||||||
|
name := "myProjectName",
|
||||||
|
|
||||||
|
TaskKey[Unit]("checkModuleIdsInUpdateSbtClassifiers") := {
|
||||||
|
val updateReport = updateSbtClassifiers.value
|
||||||
|
val moduleReports = updateReport.configurations.find(_.configuration.name == "default").get.modules
|
||||||
|
|
||||||
|
// Calling "distinct" as there are different entries for sources and javadoc classifiers with same module
|
||||||
|
val moduleIds = moduleReports.map(_.module).distinct
|
||||||
|
val moduleIdsShort = moduleIds.map(m => s"${m.organization}:${m.name}")
|
||||||
|
|
||||||
|
val expectedModuleIds = Seq(
|
||||||
|
"com.eed3si9n:gigahorse-apache-http_3",
|
||||||
|
"com.eed3si9n:gigahorse-core_3",
|
||||||
|
"com.eed3si9n:shaded-apache-httpasyncclient",
|
||||||
|
"com.eed3si9n:shaded-jawn-parser_3",
|
||||||
|
"com.eed3si9n:shaded-scalajson_3",
|
||||||
|
"com.eed3si9n:sjson-new-core_3",
|
||||||
|
"com.eed3si9n:sjson-new-murmurhash_3",
|
||||||
|
"com.eed3si9n:sjson-new-scalajson_3",
|
||||||
|
"com.github.ben-manes.caffeine:caffeine",
|
||||||
|
"com.github.mwiede:jsch",
|
||||||
|
"com.google.errorprone:error_prone_annotations",
|
||||||
|
"com.lmax:disruptor",
|
||||||
|
"com.swoval:file-tree-views",
|
||||||
|
"com.typesafe:config",
|
||||||
|
"com.typesafe:ssl-config-core_3",
|
||||||
|
"net.java.dev.jna:jna",
|
||||||
|
"net.java.dev.jna:jna-platform",
|
||||||
|
"net.openhft:zero-allocation-hashing",
|
||||||
|
"org.apache.logging.log4j:log4j-api",
|
||||||
|
"org.apache.logging.log4j:log4j-core",
|
||||||
|
"org.apache.logging.log4j:log4j-slf4j-impl",
|
||||||
|
"org.checkerframework:checker-qual",
|
||||||
|
"org.fusesource.jansi:jansi",
|
||||||
|
"org.jline:jline-builtins",
|
||||||
|
"org.jline:jline-native",
|
||||||
|
"org.jline:jline-reader",
|
||||||
|
"org.jline:jline-style",
|
||||||
|
"org.jline:jline-terminal",
|
||||||
|
"org.jline:jline-terminal-jni",
|
||||||
|
"org.reactivestreams:reactive-streams",
|
||||||
|
"org.scala-lang.modules:scala-asm",
|
||||||
|
"org.scala-lang.modules:scala-parallel-collections_3",
|
||||||
|
"org.scala-lang.modules:scala-parser-combinators_3",
|
||||||
|
"org.scala-lang.modules:scala-xml_3",
|
||||||
|
"org.scala-lang:scala-library",
|
||||||
|
"org.scala-lang:scala-reflect",
|
||||||
|
"org.scala-lang:scala3-compiler_3",
|
||||||
|
"org.scala-lang:scala3-interfaces",
|
||||||
|
"org.scala-lang:scala3-library_3",
|
||||||
|
"org.scala-lang:tasty-core_3",
|
||||||
|
"org.scala-sbt.ipcsocket:ipcsocket",
|
||||||
|
"org.scala-sbt.ivy:ivy",
|
||||||
|
"org.scala-sbt.jline:jline",
|
||||||
|
"org.scala-sbt:compiler-interface",
|
||||||
|
"org.scala-sbt:io_3",
|
||||||
|
"org.scala-sbt:launcher-interface",
|
||||||
|
"org.scala-sbt:sbinary_3",
|
||||||
|
"org.scala-sbt:template-resolver",
|
||||||
|
"org.scala-sbt:test-interface",
|
||||||
|
"org.scala-sbt:zinc-apiinfo_3",
|
||||||
|
"org.scala-sbt:zinc-classfile_3",
|
||||||
|
"org.scala-sbt:zinc-classpath_3",
|
||||||
|
"org.scala-sbt:zinc-compile-core_3",
|
||||||
|
"org.scala-sbt:zinc-core_3",
|
||||||
|
"org.scala-sbt:zinc-persist_3",
|
||||||
|
"org.scala-sbt:zinc_3",
|
||||||
|
"org.slf4j:slf4j-api",
|
||||||
|
)
|
||||||
|
def assertCollectionsEqual(message: String, expected: Seq[String], actual: Seq[String]): Unit =
|
||||||
|
// using the new line for a more readable comparison failure output
|
||||||
|
org.junit.Assert.assertEquals(message: String, expected.mkString("\n"), actual.mkString("\n"))
|
||||||
|
|
||||||
|
assertCollectionsEqual(
|
||||||
|
"Unexpected module ids in updateSbtClassifiers",
|
||||||
|
expectedModuleIds.sorted,
|
||||||
|
moduleIdsShort.sorted,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
> updateSbtClassifiers
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
// The library surves two purposes:
|
||||||
|
// 1. add some non-standard library to the meta-build classpath to later check that it's included into updateSbtClassifiers
|
||||||
|
// 2. use assertions from junit in custom assertion in `build.sbt` of current scripted test
|
||||||
|
libraryDependencies += "junit" % "junit" % "4.13.2"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
> updateSbtClassifiers
|
||||||
|
|
||||||
|
# see assertion definition in build.sbt
|
||||||
|
> checkModuleIdsInUpdateSbtClassifiers
|
||||||
Loading…
Reference in New Issue