From 15185d9004a3ca784da60064aa964c50dd35f276 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 9 Aug 2014 21:23:07 -0400 Subject: [PATCH] Minimizing scripted repro --- .../build.sbt | 34 ++++++------------- .../changes/BadCommon.scala | 0 .../changes/GoodCommon.scala | 0 .../common/src/main/scala/Common.scala | 0 .../dependent/src/main/scala/User.scala | 0 .../test | 18 ++-------- 6 files changed, 12 insertions(+), 40 deletions(-) rename sbt/src/sbt-test/dependency-management/{pull-remote-snapshot-over-local => snapshot-resolution}/build.sbt (65%) rename sbt/src/sbt-test/dependency-management/{pull-remote-snapshot-over-local => snapshot-resolution}/changes/BadCommon.scala (100%) rename sbt/src/sbt-test/dependency-management/{pull-remote-snapshot-over-local => snapshot-resolution}/changes/GoodCommon.scala (100%) rename sbt/src/sbt-test/dependency-management/{pull-remote-snapshot-over-local => snapshot-resolution}/common/src/main/scala/Common.scala (100%) rename sbt/src/sbt-test/dependency-management/{pull-remote-snapshot-over-local => snapshot-resolution}/dependent/src/main/scala/User.scala (100%) rename sbt/src/sbt-test/dependency-management/{pull-remote-snapshot-over-local => snapshot-resolution}/test (61%) diff --git a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/build.sbt b/sbt/src/sbt-test/dependency-management/snapshot-resolution/build.sbt similarity index 65% rename from sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/build.sbt rename to sbt/src/sbt-test/dependency-management/snapshot-resolution/build.sbt index 7201d4a7b..e245b0eb9 100644 --- a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/build.sbt +++ b/sbt/src/sbt-test/dependency-management/snapshot-resolution/build.sbt @@ -1,11 +1,15 @@ +def customIvyPaths: Seq[Def.Setting[_]] = Seq( + ivyPaths := new IvyPaths((baseDirectory in ThisBuild).value, Some((baseDirectory in ThisBuild).value / "ivy-cache")) +) + lazy val sharedResolver = Resolver.defaultShared.nonlocal() //MavenRepository("example-shared-repo", "file:///tmp/shared-maven-repo-bad-example") //Resolver.file("example-shared-repo", repoDir)(Resolver.defaultPatterns) -lazy val common = ( - project - .settings( +lazy val common = project. + settings(customIvyPaths: _*). + settings( organization := "com.badexample", name := "badexample", version := "1.0-SNAPSHOT", @@ -22,33 +26,15 @@ lazy val common = ( case _ => true }) ) -) -lazy val dependent = ( - project - .settings( +lazy val dependent = project. + settings(customIvyPaths: _*). + settings( // Ignore the inter-project resolver, so we force to look remotely. resolvers += sharedResolver, fullResolvers := fullResolvers.value.filterNot(_==projectResolver.value), libraryDependencies += "com.badexample" % "badexample" % "1.0-SNAPSHOT" ) -) - -TaskKey[Unit]("cleanLocalCache") := { - val ivyHome = file(sys.props.get("ivy.home") orElse sys.props.get("sbt.ivy.home") match { - case Some(home) => home - case None => s"${sys.props("user.home")}/.ivy2" - }) - val ivyCache = ivyHome / "cache" - val ivyShared = ivyHome / "shared" - val ivyLocal = ivyHome / "local" - def deleteDirContents(dir: String)(base: File): Unit = { - val toDelete = base / dir - streams.value.log.info(s"Deleting: ${toDelete.getAbsolutePath}") - IO.delete(toDelete) - } - Seq(ivyCache, ivyShared, ivyLocal).map(deleteDirContents("com.badexample")) -} TaskKey[Unit]("dumpResolvers") := { streams.value.log.info(s" -- dependent/fullResolvers -- ") diff --git a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/changes/BadCommon.scala b/sbt/src/sbt-test/dependency-management/snapshot-resolution/changes/BadCommon.scala similarity index 100% rename from sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/changes/BadCommon.scala rename to sbt/src/sbt-test/dependency-management/snapshot-resolution/changes/BadCommon.scala diff --git a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/changes/GoodCommon.scala b/sbt/src/sbt-test/dependency-management/snapshot-resolution/changes/GoodCommon.scala similarity index 100% rename from sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/changes/GoodCommon.scala rename to sbt/src/sbt-test/dependency-management/snapshot-resolution/changes/GoodCommon.scala diff --git a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/common/src/main/scala/Common.scala b/sbt/src/sbt-test/dependency-management/snapshot-resolution/common/src/main/scala/Common.scala similarity index 100% rename from sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/common/src/main/scala/Common.scala rename to sbt/src/sbt-test/dependency-management/snapshot-resolution/common/src/main/scala/Common.scala diff --git a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/dependent/src/main/scala/User.scala b/sbt/src/sbt-test/dependency-management/snapshot-resolution/dependent/src/main/scala/User.scala similarity index 100% rename from sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/dependent/src/main/scala/User.scala rename to sbt/src/sbt-test/dependency-management/snapshot-resolution/dependent/src/main/scala/User.scala diff --git a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/test b/sbt/src/sbt-test/dependency-management/snapshot-resolution/test similarity index 61% rename from sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/test rename to sbt/src/sbt-test/dependency-management/snapshot-resolution/test index e0118f75f..bdb70578c 100644 --- a/sbt/src/sbt-test/dependency-management/pull-remote-snapshot-over-local/test +++ b/sbt/src/sbt-test/dependency-management/snapshot-resolution/test @@ -1,6 +1,3 @@ -# First clean any previous test state -> cleanLocalCache - # Validate that a bad dependency fails the compile $ copy-file changes/BadCommon.scala common/src/main/scala/Common.scala > common/publish @@ -11,21 +8,10 @@ $ copy-file changes/BadCommon.scala common/src/main/scala/Common.scala # Push new good change to a DIFFERENT repository. $ copy-file changes/GoodCommon.scala common/src/main/scala/Common.scala +# Ensure timestamp change +$ sleep 1000 > common/publishLocal -# Force the update task to look for the new -SNAPSHOT. > dependent/update - - -$ copy-file changes/BadCommon.scala common/src/main/scala/Common.scala -> common/publish -> dependent/update - - -$ copy-file changes/GoodCommon.scala common/src/main/scala/Common.scala -> common/publishLocal -> dependent/update - - # This should compile now, because Ivy should look at each repository for the most up-to-date file. > dependent/compile