Replace scopes with Ivy-like configuration

This commit is contained in:
Alexandre Archambault
2015-12-30 01:34:32 +01:00
parent d3cd484c15
commit e4dfc862b4
13 changed files with 241 additions and 247 deletions
@@ -44,7 +44,8 @@ object CentralTests extends TestSuite {
def resolutionCheck(
module: Module,
version: String,
extraRepo: Option[Repository] = None
extraRepo: Option[Repository] = None,
configuration: String = ""
) =
async {
val expected =
@@ -54,7 +55,7 @@ object CentralTests extends TestSuite {
.split('\n')
.toSeq
val dep = Dependency(module, version)
val dep = Dependency(module, version, configuration = configuration)
val res = await(resolve(Set(dep), extraRepo = extraRepo))
val result = res
@@ -138,6 +139,7 @@ object CentralTests extends TestSuite {
resolutionCheck(
Module("com.github.fommil", "java-logging"),
"1.2-SNAPSHOT",
configuration = "runtime",
extraRepo = Some(MavenRepository("https://oss.sonatype.org/content/repositories/public/"))
)
}
@@ -21,7 +21,7 @@ object PomParsingTests extends TestSuite {
</dependency>
"""
val expected = \/-(Dependency(Module("comp", "lib"), "2.1", attributes = Attributes(classifier = "extra")))
val expected = \/-("" -> Dependency(Module("comp", "lib"), "2.1", attributes = Attributes(classifier = "extra")))
val result = Pom.dependency(xmlParse(depNode).right.get)
@@ -90,7 +90,7 @@ object PomParsingTests extends TestSuite {
None,
Profile.Activation(Nil),
Seq(
Dependency(Module("comp", "lib"), "0.2")),
"" -> Dependency(Module("comp", "lib"), "0.2")),
Nil,
Map.empty
))
@@ -122,7 +122,7 @@ object PomParsingTests extends TestSuite {
Profile.Activation(Nil),
Nil,
Seq(
Dependency(Module("comp", "lib"), "0.2", scope = Scope.Test)),
"test" -> Dependency(Module("comp", "lib"), "0.2")),
Map.empty
))
@@ -2,6 +2,7 @@ package coursier
package test
import coursier.core.Repository
import coursier.maven.MavenRepository
import utest._
import scala.async.Async.{ async, await }
@@ -27,69 +28,68 @@ object ResolutionTests extends TestSuite {
Project(Module("acme", "config"), "1.3.0"),
Project(Module("acme", "play"), "2.4.0", Seq(
Dependency(Module("acme", "play-json"), "2.4.0"))),
"" -> Dependency(Module("acme", "play-json"), "2.4.0"))),
Project(Module("acme", "play-json"), "2.4.0"),
Project(Module("acme", "play"), "2.4.1",
dependencies = Seq(
Dependency(Module("acme", "play-json"), "${playJsonVersion}"),
Dependency(Module("${project.groupId}", "${configName}"), "1.3.0")),
"" -> Dependency(Module("acme", "play-json"), "${playJsonVersion}"),
"" -> Dependency(Module("${project.groupId}", "${configName}"), "1.3.0")),
properties = Map(
"playJsonVersion" -> "2.4.0",
"configName" -> "config")),
Project(Module("acme", "play-extra-no-config"), "2.4.1",
Seq(
Dependency(Module("acme", "play"), "2.4.1",
"" -> Dependency(Module("acme", "play"), "2.4.1",
exclusions = Set(("acme", "config"))))),
Project(Module("acme", "play-extra-no-config-no"), "2.4.1",
Seq(
Dependency(Module("acme", "play"), "2.4.1",
"" -> Dependency(Module("acme", "play"), "2.4.1",
exclusions = Set(("*", "config"))))),
Project(Module("hudsucker", "mail"), "10.0",
Seq(
Dependency(Module("${project.groupId}", "test-util"), "${project.version}",
scope = Scope.Test))),
"test" -> Dependency(Module("${project.groupId}", "test-util"), "${project.version}"))),
Project(Module("hudsucker", "test-util"), "10.0"),
Project(Module("se.ikea", "parent"), "18.0",
dependencyManagement = Seq(
Dependency(Module("acme", "play"), "2.4.0",
"" -> Dependency(Module("acme", "play"), "2.4.0",
exclusions = Set(("acme", "play-json"))))),
Project(Module("se.ikea", "billy"), "18.0",
dependencies = Seq(
Dependency(Module("acme", "play"), "")),
"" -> Dependency(Module("acme", "play"), "")),
parent = Some(Module("se.ikea", "parent"), "18.0")),
Project(Module("org.gnome", "parent"), "7.0",
Seq(
Dependency(Module("org.gnu", "glib"), "13.4"))),
"" -> Dependency(Module("org.gnu", "glib"), "13.4"))),
Project(Module("org.gnome", "panel-legacy"), "7.0",
dependencies = Seq(
Dependency(Module("org.gnome", "desktop"), "${project.version}")),
"" -> Dependency(Module("org.gnome", "desktop"), "${project.version}")),
parent = Some(Module("org.gnome", "parent"), "7.0")),
Project(Module("gov.nsa", "secure-pgp"), "10.0",
Seq(
Dependency(Module("gov.nsa", "crypto"), "536.89"))),
"" -> Dependency(Module("gov.nsa", "crypto"), "536.89"))),
Project(Module("com.mailapp", "mail-client"), "2.1",
dependencies = Seq(
Dependency(Module("gov.nsa", "secure-pgp"), "10.0",
"" -> Dependency(Module("gov.nsa", "secure-pgp"), "10.0",
exclusions = Set(("*", "${crypto.name}")))),
properties = Map("crypto.name" -> "crypto", "dummy" -> "2")),
Project(Module("com.thoughtworks.paranamer", "paranamer-parent"), "2.6",
dependencies = Seq(
Dependency(Module("junit", "junit"), "")),
"" -> Dependency(Module("junit", "junit"), "")),
dependencyManagement = Seq(
Dependency(Module("junit", "junit"), "4.11", scope = Scope.Test))),
"test" -> Dependency(Module("junit", "junit"), "4.11"))),
Project(Module("com.thoughtworks.paranamer", "paranamer"), "2.6",
parent = Some(Module("com.thoughtworks.paranamer", "paranamer-parent"), "2.6")),
@@ -97,33 +97,33 @@ object ResolutionTests extends TestSuite {
Project(Module("com.github.dummy", "libb"), "0.3.3",
profiles = Seq(
Profile("default", activeByDefault = Some(true), dependencies = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
"" -> Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
Project(Module("com.github.dummy", "libb"), "0.4.2",
dependencies = Seq(
Dependency(Module("org.scalaverification", "scala-verification"), "1.12.4")),
"" -> Dependency(Module("org.scalaverification", "scala-verification"), "1.12.4")),
profiles = Seq(
Profile("default", activeByDefault = Some(true), dependencies = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"),
Dependency(Module("org.scalaverification", "scala-verification"), "1.12.4", scope = Scope.Test))))),
"" -> Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"),
"test" -> Dependency(Module("org.scalaverification", "scala-verification"), "1.12.4"))))),
Project(Module("com.github.dummy", "libb"), "0.5.3",
properties = Map("special" -> "true"),
profiles = Seq(
Profile("default", activation = Profile.Activation(properties = Seq("special" -> None)), dependencies = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
"" -> Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
Project(Module("com.github.dummy", "libb"), "0.5.4",
properties = Map("special" -> "true"),
profiles = Seq(
Profile("default", activation = Profile.Activation(properties = Seq("special" -> Some("true"))), dependencies = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
"" -> Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
Project(Module("com.github.dummy", "libb"), "0.5.5",
properties = Map("special" -> "true"),
profiles = Seq(
Profile("default", activation = Profile.Activation(properties = Seq("special" -> Some("!false"))), dependencies = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
"" -> Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
Project(Module("com.github.dummy", "libb-parent"), "0.5.6",
properties = Map("special" -> "true")),
@@ -133,39 +133,39 @@ object ResolutionTests extends TestSuite {
properties = Map("special" -> "true"),
profiles = Seq(
Profile("default", activation = Profile.Activation(properties = Seq("special" -> Some("!false"))), dependencies = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
"" -> Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))))),
Project(Module("an-org", "a-name"), "1.0"),
Project(Module("an-org", "a-name"), "1.2"),
Project(Module("an-org", "a-lib"), "1.0",
Seq(Dependency(Module("an-org", "a-name"), "1.0"))),
Seq("" -> Dependency(Module("an-org", "a-name"), "1.0"))),
Project(Module("an-org", "a-lib"), "1.1"),
Project(Module("an-org", "a-lib"), "1.2",
Seq(Dependency(Module("an-org", "a-name"), "1.2"))),
Seq("" -> Dependency(Module("an-org", "a-name"), "1.2"))),
Project(Module("an-org", "another-lib"), "1.0",
Seq(Dependency(Module("an-org", "a-name"), "1.0"))),
Seq("" -> Dependency(Module("an-org", "a-name"), "1.0"))),
// Must bring transitively an-org:a-name, as an optional dependency
Project(Module("an-org", "an-app"), "1.0",
Seq(
Dependency(Module("an-org", "a-lib"), "1.0", exclusions = Set(("an-org", "a-name"))),
Dependency(Module("an-org", "another-lib"), "1.0", optional = true))),
"" -> Dependency(Module("an-org", "a-lib"), "1.0", exclusions = Set(("an-org", "a-name"))),
"" -> Dependency(Module("an-org", "another-lib"), "1.0", optional = true))),
Project(Module("an-org", "an-app"), "1.1",
Seq(
Dependency(Module("an-org", "a-lib"), "1.1"))),
"" -> Dependency(Module("an-org", "a-lib"), "1.1"))),
Project(Module("an-org", "an-app"), "1.2",
Seq(
Dependency(Module("an-org", "a-lib"), "1.2")))
"" -> Dependency(Module("an-org", "a-lib"), "1.2")))
)
val projectsMap = projects.map(p => p.moduleVersion -> p).toMap
val projectsMap = projects.map(p => p.moduleVersion -> p.copy(configurations = MavenRepository.defaultConfigurations)).toMap
val testRepository = new TestRepository(projectsMap)
val repositories = Seq[Repository](
@@ -308,8 +308,7 @@ object ResolutionTests extends TestSuite {
async {
val dep = Dependency(Module("hudsucker", "mail"), "10.0")
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None)
val expected = Resolution(
@@ -331,8 +330,7 @@ object ResolutionTests extends TestSuite {
exclusions = Set(("acme", "play-json")))
)
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None, projectCache = Map.empty)
val expected = Resolution(
@@ -350,8 +348,7 @@ object ResolutionTests extends TestSuite {
Dependency(Module("org.gnu", "glib"), "13.4"),
Dependency(Module("org.gnome", "desktop"), "7.0"))
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -368,8 +365,7 @@ object ResolutionTests extends TestSuite {
val trDeps = Seq(
Dependency(Module("gov.nsa", "secure-pgp"), "10.0", exclusions = Set(("*", "crypto"))))
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -384,8 +380,7 @@ object ResolutionTests extends TestSuite {
async {
val dep = Dependency(Module("com.thoughtworks.paranamer", "paranamer"), "2.6")
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -402,8 +397,7 @@ object ResolutionTests extends TestSuite {
val trDeps = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -422,8 +416,7 @@ object ResolutionTests extends TestSuite {
val trDeps = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -444,8 +437,7 @@ object ResolutionTests extends TestSuite {
val trDeps = Seq(
Dependency(Module("org.escalier", "librairie-standard"), "2.11.6"))
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
Set(dep)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -466,7 +458,7 @@ object ResolutionTests extends TestSuite {
Dependency(Module("an-org", "a-name"), "1.0", optional = true))
val res = await(resolve0(
Set(dep),
filter = Some(_.scope == Scope.Compile)
filter = Some(_ => true)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -489,7 +481,7 @@ object ResolutionTests extends TestSuite {
Dependency(Module("an-org", "a-name"), "1.0", optional = true))
val res = await(resolve0(
deps,
filter = Some(_.scope == Scope.Compile)
filter = Some(_ => true)
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -511,8 +503,7 @@ object ResolutionTests extends TestSuite {
val res = await(resolve0(
deps,
forceVersions = depOverrides,
filter = Some(_.scope == Scope.Compile)
forceVersions = depOverrides
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -536,8 +527,7 @@ object ResolutionTests extends TestSuite {
val res = await(resolve0(
deps,
forceVersions = depOverrides,
filter = Some(_.scope == Scope.Compile)
forceVersions = depOverrides
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -563,8 +553,7 @@ object ResolutionTests extends TestSuite {
val res = await(resolve0(
deps,
forceVersions = depOverrides,
filter = Some(_.scope == Scope.Compile)
forceVersions = depOverrides
)).copy(filter = None, projectCache = Map.empty, errorCache = Map.empty)
val expected = Resolution(
@@ -585,9 +574,9 @@ object ResolutionTests extends TestSuite {
'propertySubstitution{
val res =
core.Resolution.withProperties(
Seq(Dependency(Module("a-company", "a-name"), "${a.property}")),
Seq("" -> Dependency(Module("a-company", "a-name"), "${a.property}")),
Map("a.property" -> "a-version"))
val expected = Seq(Dependency(Module("a-company", "a-name"), "a-version"))
val expected = Seq("" -> Dependency(Module("a-company", "a-name"), "a-version"))
assert(res == expected)
}
@@ -3,7 +3,7 @@ package coursier
package object test {
implicit class DependencyOps(val underlying: Dependency) extends AnyVal {
def withCompileScope: Dependency = underlying.copy(scope = Scope.Compile)
def withCompileScope: Dependency = underlying.copy(configuration = "compile")
}
object Profile {
@@ -16,8 +16,8 @@ package object test {
def apply(id: String,
activeByDefault: Option[Boolean] = None,
activation: Activation = Activation(),
dependencies: Seq[Dependency] = Nil,
dependencyManagement: Seq[Dependency] = Nil,
dependencies: Seq[(String, Dependency)] = Nil,
dependencyManagement: Seq[(String, Dependency)] = Nil,
properties: Map[String, String] = Map.empty) =
core.Profile(id, activeByDefault, activation, dependencies, dependencyManagement, properties)
}
@@ -25,13 +25,15 @@ package object test {
object Project {
def apply(module: Module,
version: String,
dependencies: Seq[Dependency] = Seq.empty,
dependencies: Seq[(String, Dependency)] = Seq.empty,
parent: Option[ModuleVersion] = None,
dependencyManagement: Seq[Dependency] = Seq.empty,
dependencyManagement: Seq[(String, Dependency)] = Seq.empty,
configurations: Map[String, Seq[String]] = Map.empty,
properties: Map[String, String] = Map.empty,
profiles: Seq[Profile] = Seq.empty,
versions: Option[core.Versions] = None,
snapshotVersioning: Option[core.SnapshotVersioning] = None): Project =
core.Project(module, version, dependencies, parent, dependencyManagement, properties, profiles, versions, snapshotVersioning)
snapshotVersioning: Option[core.SnapshotVersioning] = None
): Project =
core.Project(module, version, dependencies, parent, dependencyManagement, configurations, properties, profiles, versions, snapshotVersioning)
}
}