From 69ffdeb553023d9c551379dd18ba0175d1b54f71 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Mon, 5 Jun 2017 18:57:26 +0200 Subject: [PATCH] Don't return duplicated artifacts from Ivy repos --- appveyor.yml | 2 +- .../scala/coursier/ivy/IvyRepository.scala | 2 +- scripts/travis.sh | 2 +- .../scala/coursier/test/IvyLocalTests.scala | 23 ++++++++++++++++--- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 2c5375ac4..3fbb7aa6d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -22,7 +22,7 @@ install: Set-Location -Path .. } build_script: - - sbt ++2.11.11 clean compile coreJVM/publishLocal + - sbt ++2.11.11 clean compile coreJVM/publishLocal cli/publishLocal - sbt ++2.12.1 http-server/publishLocal - sbt ++2.10.6 clean compile - sbt ++2.12.1 coreJVM/publishLocal cache/publishLocal extra/publishLocal # to make the scripted sbt 1.0 tests happy diff --git a/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala b/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala index 6b0324a89..41e207000 100644 --- a/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala +++ b/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala @@ -88,7 +88,7 @@ final case class IvyRepository( } } - val retainedWithUrl = retained.flatMap { p => + val retainedWithUrl = retained.distinct.flatMap { p => pattern.substituteVariables(variables( dependency.module, Some(project.actualVersion), diff --git a/scripts/travis.sh b/scripts/travis.sh index 7d017215c..8cbd2ed6a 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -30,7 +30,7 @@ launchProxyRepos() { integrationTestsRequirements() { # Required for ~/.ivy2/local repo tests - sbt ++2.11.11 coreJVM/publishLocal + sbt ++2.11.11 coreJVM/publishLocal cli/publishLocal sbt ++2.12.1 http-server/publishLocal diff --git a/tests/jvm/src/it/scala/coursier/test/IvyLocalTests.scala b/tests/jvm/src/it/scala/coursier/test/IvyLocalTests.scala index b035a1363..827cf5878 100644 --- a/tests/jvm/src/it/scala/coursier/test/IvyLocalTests.scala +++ b/tests/jvm/src/it/scala/coursier/test/IvyLocalTests.scala @@ -10,20 +10,37 @@ import utest._ object IvyLocalTests extends TestSuite { val tests = TestSuite{ - 'coursier{ + 'coursier { val module = Module("io.get-coursier", "coursier_2.11") val version = coursier.util.Properties.version val extraRepo = Some(Cache.ivy2Local) // Assuming this module (and the sub-projects it depends on) is published locally - * - CentralTests.resolutionCheck( + 'resolution - CentralTests.resolutionCheck( module, version, extraRepo ) + 'uniqueArtifacts - async { - * - async { + val res = await(CentralTests.resolve( + Set(Dependency(Module("io.get-coursier", "coursier-cli_2.11"), version, transitive = false)), + extraRepo = extraRepo + )) + + val artifacts = res.dependencyClassifiersArtifacts(Seq("standalone")) + .map(_._2) + .filter(a => a.`type` == "jar" && !a.isOptional) + .map(_.url) + .groupBy(s => s) + + assert(artifacts.nonEmpty) + assert(artifacts.forall(_._2.length == 1)) + } + + + 'javadocSources - async { val res = await(CentralTests.resolve( Set(Dependency(module, version)), extraRepo = extraRepo