From 1113555ed770951a8c9c2436c19df528ba0c0943 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Fri, 5 May 2017 18:04:20 +0200 Subject: [PATCH 1/4] Test bootstrap generation --- build.sbt | 3 +++ scripts/travis.sh | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/build.sbt b/build.sbt index ef39bd37a..480e93fec 100644 --- a/build.sbt +++ b/build.sbt @@ -78,6 +78,8 @@ lazy val bootstrap = project .settings( pureJava, dontPublish, + // seems not to be automatically found with sbt 0.13.16-M1 :-/ + mainClass := Some("coursier.Bootstrap"), renameMainJar("bootstrap.jar") ) @@ -261,6 +263,7 @@ lazy val coursier = project `sbt-launcher`, web, doc, + echo, `http-server`, okhttp ) diff --git a/scripts/travis.sh b/scripts/travis.sh index 6f35903b5..5345f8f86 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -176,6 +176,17 @@ publish() { sbt ++${SCALA_VERSION} publish } +testBootstrap() { + if is211; then + sbt ++${SCALA_VERSION} echo/publishLocal cli/pack + cli/target/pack/bin/coursier bootstrap -o cs-echo io.get-coursier:echo_2.11:1.0.0-SNAPSHOT + if [ "$(./cs-echo foo)" != foo ]; then + echo "Error: unexpected output from bootstrapped echo command." 1>&2 + exit 1 + fi + fi +} + # TODO Add coverage once https://github.com/scoverage/sbt-scoverage/issues/111 is fixed @@ -206,6 +217,8 @@ else else runJvmTests + testBootstrap + validateReadme checkBinaryCompatibility From ef3d8c06a5bbed4b3289812c316557cddd43ac74 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Fri, 5 May 2017 18:04:20 +0200 Subject: [PATCH 2/4] Ignore JARs of relocated dependencies --- .../main/scala/coursier/core/Definitions.scala | 1 - .../scala/coursier/maven/MavenRepository.scala | 1 + .../main/scala/coursier/maven/MavenSource.scala | 8 ++++---- .../src/main/scala/coursier/maven/Pom.scala | 4 +++- .../org.apache.commons/commons-io/1.3.2 | 2 ++ .../test/scala/coursier/test/CentralTests.scala | 16 +++++++++++++++- 6 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 tests/shared/src/test/resources/resolutions/org.apache.commons/commons-io/1.3.2 diff --git a/core/shared/src/main/scala/coursier/core/Definitions.scala b/core/shared/src/main/scala/coursier/core/Definitions.scala index eb842b623..0f5dc2d08 100644 --- a/core/shared/src/main/scala/coursier/core/Definitions.scala +++ b/core/shared/src/main/scala/coursier/core/Definitions.scala @@ -89,7 +89,6 @@ final case class Project( */ actualVersionOpt: Option[String], - // Ivy-specific // First String is configuration publications: Seq[(String, Publication)], diff --git a/core/shared/src/main/scala/coursier/maven/MavenRepository.scala b/core/shared/src/main/scala/coursier/maven/MavenRepository.scala index e01238684..6c5e4ee88 100644 --- a/core/shared/src/main/scala/coursier/maven/MavenRepository.scala +++ b/core/shared/src/main/scala/coursier/maven/MavenRepository.scala @@ -328,6 +328,7 @@ final case class MavenRepository( val prefix = s"${module.name}-${versioningValue.getOrElse(version)}" val packagingTpeMap = proj0.packagingOpt + .filter(_ != Pom.relocatedPackaging) .map { packaging => (MavenSource.typeDefaultClassifier(packaging), MavenSource.typeExtension(packaging)) -> packaging } diff --git a/core/shared/src/main/scala/coursier/maven/MavenSource.scala b/core/shared/src/main/scala/coursier/maven/MavenSource.scala index 07c3e02f3..aa790df10 100644 --- a/core/shared/src/main/scala/coursier/maven/MavenSource.scala +++ b/core/shared/src/main/scala/coursier/maven/MavenSource.scala @@ -228,13 +228,13 @@ final case class MavenSource( dependency: Dependency, project: Project, overrideClassifiers: Option[Seq[String]] - ): Seq[Artifact] = { - - if (project.publications.isEmpty) + ): Seq[Artifact] = + if (project.packagingOpt.toSeq.contains(Pom.relocatedPackaging)) + Nil + else if (project.publications.isEmpty) artifactsUnknownPublications(dependency, project, overrideClassifiers) else artifactsKnownPublications(dependency, project, overrideClassifiers) - } } object MavenSource { diff --git a/core/shared/src/main/scala/coursier/maven/Pom.scala b/core/shared/src/main/scala/coursier/maven/Pom.scala index 22f71bcc6..9c1d5fab8 100644 --- a/core/shared/src/main/scala/coursier/maven/Pom.scala +++ b/core/shared/src/main/scala/coursier/maven/Pom.scala @@ -296,7 +296,7 @@ object Pom { profiles, None, None, - packagingOpt(pom), + relocationDependencyOpt.fold(packagingOpt(pom))(_ => Some(relocatedPackaging)), None, Nil, Info( @@ -445,6 +445,8 @@ object Pom { ) } + val relocatedPackaging = s"$$relocated" + val extraAttributeSeparator = ":#@#:" val extraAttributePrefix = "+" diff --git a/tests/shared/src/test/resources/resolutions/org.apache.commons/commons-io/1.3.2 b/tests/shared/src/test/resources/resolutions/org.apache.commons/commons-io/1.3.2 new file mode 100644 index 000000000..8853c9848 --- /dev/null +++ b/tests/shared/src/test/resources/resolutions/org.apache.commons/commons-io/1.3.2 @@ -0,0 +1,2 @@ +commons-io:commons-io:1.3.2:compile +org.apache.commons:commons-io:1.3.2:compile diff --git a/tests/shared/src/test/scala/coursier/test/CentralTests.scala b/tests/shared/src/test/scala/coursier/test/CentralTests.scala index f43283819..e9ce23931 100644 --- a/tests/shared/src/test/scala/coursier/test/CentralTests.scala +++ b/tests/shared/src/test/scala/coursier/test/CentralTests.scala @@ -588,10 +588,24 @@ object CentralTests extends TestSuite { } 'relocation - { - resolutionCheck( + * - resolutionCheck( Module("bouncycastle", "bctsp-jdk14"), "138" ) + + 'ignoreRelocationJars - { + val mod = Module("org.apache.commons", "commons-io") + val ver = "1.3.2" + + val expectedUrl = "https://repo1.maven.org/maven2/commons-io/commons-io/1.3.2/commons-io-1.3.2.jar" + + * - resolutionCheck(mod, ver) + + * - withArtifacts(mod, ver, "jar", transitive = true) { artifacts => + assert(artifacts.length == 1) + assert(artifacts.head.url == expectedUrl) + } + } } } From d47c000a87834f2fecced9a532d5d18cd5d6ca26 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Fri, 5 May 2017 18:04:21 +0200 Subject: [PATCH 3/4] Only test master branch on Windows CI --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 2fc47eaf1..ab7b7a389 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -40,3 +40,6 @@ cache: - C:\Users\appveyor\.m2 - C:\Users\appveyor\.sbt - C:\Users\appveyor\.coursier +branches: + only: + - master From 9428d0343fa852d9d7be598da30e7ef1b4bebc8c Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Fri, 5 May 2017 18:35:17 +0200 Subject: [PATCH 4/4] Use more sound default cache policy in API --- cache/src/main/scala/coursier/Cache.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index 3437bee47..7e04877e7 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -906,7 +906,7 @@ object Cache { def file( artifact: Artifact, cache: File = default, - cachePolicy: CachePolicy = CachePolicy.FetchMissing, + cachePolicy: CachePolicy = CachePolicy.UpdateChanging, checksums: Seq[Option[String]] = defaultChecksums, logger: Option[Logger] = None, pool: ExecutorService = defaultPool, @@ -961,7 +961,7 @@ object Cache { def fetch( cache: File = default, - cachePolicy: CachePolicy = CachePolicy.FetchMissing, + cachePolicy: CachePolicy = CachePolicy.UpdateChanging, checksums: Seq[Option[String]] = defaultChecksums, logger: Option[Logger] = None, pool: ExecutorService = defaultPool,