From 6715ab59170b7a87a8265f385241af5712ac8217 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Fri, 15 Apr 2011 19:52:45 -0400 Subject: [PATCH] continuing work on dependency-management tests --- .../artifact/project/ArtifactTest.scala | 27 +++++++------ .../dependency-management/artifact/test | 11 +++-- .../classifier/build.sbt | 3 ++ .../classifier/project/build.properties | 2 - .../classifier/project/build/Test.scala | 7 ---- .../configurations/build.sbt | 10 +++++ .../changes/ivy/TestPublish.sbt | 11 +++++ .../changes/ivy/TestPublish.scala | 7 ---- .../configurations/changes/ivy/TestUse.sbt | 17 ++++++++ .../configurations/changes/ivy/TestUse.scala | 11 ----- .../configurations/changes/maven/TestUse.sbt | 15 +++++++ .../changes/maven/TestUse.scala | 10 ----- .../configurations/project/build.properties | 3 -- .../project/build/TestPublish.scala | 7 ---- .../dependency-management/configurations/test | 33 +++++---------- .../project/TestProject.scala | 28 +++++++++++++ .../project/build.properties | 2 - .../project/build/src/TestProject.scala | 26 ------------ .../exclude-transitive/test | 8 ++-- .../extra/DefineColor.sbt | 15 +++++++ .../extra/changes/UseColor.sbt | 17 ++++++++ .../extra/changes/UseColor.scala | 13 ------ .../dependency-management/extra/changes/color | 1 - .../extra/project/build.properties | 3 -- .../extra/project/build/DefineColor.scala | 10 ----- .../sbt-test/dependency-management/extra/test | 6 +-- .../info/project/InfoTest.scala | 40 +++++++++++++++++++ .../info/project/build.properties | 3 -- .../info/project/build/InfoTest.scala | 34 ---------------- .../sbt-test/dependency-management/info/test | 6 +-- sbt/src/sbt-test/tests/specs-compat/build.sbt | 1 + sbt/src/sbt-test/tests/specs-compat/test | 6 +-- 32 files changed, 195 insertions(+), 198 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/classifier/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/classifier/project/build.properties delete mode 100644 sbt/src/sbt-test/dependency-management/classifier/project/build/Test.scala create mode 100644 sbt/src/sbt-test/dependency-management/configurations/build.sbt create mode 100644 sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.scala create mode 100644 sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.scala create mode 100644 sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.scala delete mode 100644 sbt/src/sbt-test/dependency-management/configurations/project/build.properties delete mode 100644 sbt/src/sbt-test/dependency-management/configurations/project/build/TestPublish.scala create mode 100644 sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala delete mode 100644 sbt/src/sbt-test/dependency-management/exclude-transitive/project/build.properties delete mode 100644 sbt/src/sbt-test/dependency-management/exclude-transitive/project/build/src/TestProject.scala create mode 100644 sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt create mode 100644 sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/extra/changes/UseColor.scala delete mode 100644 sbt/src/sbt-test/dependency-management/extra/changes/color delete mode 100644 sbt/src/sbt-test/dependency-management/extra/project/build.properties delete mode 100644 sbt/src/sbt-test/dependency-management/extra/project/build/DefineColor.scala create mode 100644 sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala delete mode 100644 sbt/src/sbt-test/dependency-management/info/project/build.properties delete mode 100644 sbt/src/sbt-test/dependency-management/info/project/build/InfoTest.scala create mode 100644 sbt/src/sbt-test/tests/specs-compat/build.sbt diff --git a/sbt/src/sbt-test/dependency-management/artifact/project/ArtifactTest.scala b/sbt/src/sbt-test/dependency-management/artifact/project/ArtifactTest.scala index c4cceac49..397ef934a 100644 --- a/sbt/src/sbt-test/dependency-management/artifact/project/ArtifactTest.scala +++ b/sbt/src/sbt-test/dependency-management/artifact/project/ArtifactTest.scala @@ -5,18 +5,19 @@ object ArtifactTest extends Build { lazy val projects = Seq(root) lazy val root = Project("root", file(".")) settings( - ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t))), + ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), publishTo := Some(Resolver.file("Test Publish Repo", file("test-repo"))), resolvers <<= (resolvers, publishTo)(_ ++ _.toList), - jarName in Compile := ArtifactName(base := artifactID, version = vers, tpe = classifier, ext = ext, cross = "", config = ""), - projectID := (if(retrieve) retrieveID else publishedID), - artifacts := artifact :: Nil - libraryDependencies ++= (if(retrieve) publishedID :: Nil else Nil), - // needed to add a jar with a different extension to the classpath - classpathFilter := "*." + ext, - check <<= checkTask + projectID <<= baseDirectory { base => (if(base / "retrieve" exists) retrieveID else publishedID) }, + artifact in (Compile, packageBin) := mainArtifact, + libraryDependencies <<= (libraryDependencies, baseDirectory) { (deps, base) => deps ++ (if(base / "retrieve" exists) publishedID :: Nil else Nil) }, + // needed to add a jar with a different type to the managed classpath + classpathTypes := Set(tpe), + check <<= checkTask(dependencyClasspath), + checkFull <<= checkTask(fullClasspath) ) + lazy val checkFull = TaskKey[Unit]("check-full") lazy val check = TaskKey[Unit]("check") // define strings for defining the artifact @@ -27,16 +28,16 @@ object ArtifactTest extends Build def vers = "1.1" def org = "test" - def artifact = Artifact(artifactID, tpe, ext, classifier) + def mainArtifact = Artifact(artifactID, tpe, ext, classifier) // define the IDs to use for publishing and retrieving - def publishedID = org % artifactID % vers artifacts(artifact) + def publishedID = org % artifactID % vers artifacts(mainArtifact) def retrieveID = org % "test-retrieve" % "2.0" // check that the test class is on the compile classpath, either because it was compiled or because it was properly retrieved - def checkTask = (fullClasspath in Compile, scalaInstance) map { (cp, si) => - val loader = classpath.ClasspathUtilities.toLoader(cp.files, si.loader) - try { Class.forName("test.Test", false, loader) } + def checkTask(classpath: TaskKey[Classpath]) = (classpath in Compile, scalaInstance) map { (cp, si) => + val loader = sbt.classpath.ClasspathUtilities.toLoader(cp.files, si.loader) + try { Class.forName("test.Test", false, loader); () } catch { case _: ClassNotFoundException | _: NoClassDefFoundError => error("Dependency not retrieved properly") } } } diff --git a/sbt/src/sbt-test/dependency-management/artifact/test b/sbt/src/sbt-test/dependency-management/artifact/test index 2e317d56f..65b6db19b 100644 --- a/sbt/src/sbt-test/dependency-management/artifact/test +++ b/sbt/src/sbt-test/dependency-management/artifact/test @@ -1,13 +1,11 @@ # verify that check fails when test class is not present -> check -# compile and jar test class -> package -# verify that check succeeds -> check +# verify that check-full succeeds +> check-full # publish test jar to test repository ->publish +> publish # delete test jar and verify check fails again > clean @@ -15,6 +13,7 @@ # tell project definition to switch to retrieve mode $ touch retrieve +> reload + # verify that artifact with extension, type, and classifier can be retreieved -> update > check \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/classifier/build.sbt b/sbt/src/sbt-test/dependency-management/classifier/build.sbt new file mode 100644 index 000000000..ab96c9fb0 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/classifier/build.sbt @@ -0,0 +1,3 @@ +ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))) + +libraryDependencies += "org.testng" % "testng" % "5.7" classifier "jdk15" diff --git a/sbt/src/sbt-test/dependency-management/classifier/project/build.properties b/sbt/src/sbt-test/dependency-management/classifier/project/build.properties deleted file mode 100644 index 0f796df80..000000000 --- a/sbt/src/sbt-test/dependency-management/classifier/project/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -project.name=Test Classifier -project.version=1.0 \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/classifier/project/build/Test.scala b/sbt/src/sbt-test/dependency-management/classifier/project/build/Test.scala deleted file mode 100644 index 9cf18923a..000000000 --- a/sbt/src/sbt-test/dependency-management/classifier/project/build/Test.scala +++ /dev/null @@ -1,7 +0,0 @@ -import sbt._ - -class Test(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - val testng = "org.testng" % "testng" % "5.7" classifier "jdk15" -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/configurations/build.sbt b/sbt/src/sbt-test/dependency-management/configurations/build.sbt new file mode 100644 index 000000000..ae702547f --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/configurations/build.sbt @@ -0,0 +1,10 @@ +// the default, but make it explicit +publishMavenStyle := true + +publishTo <<= baseDirectory(bd => Some( Resolver.file("test-repo", bd / "repo") ) ) + +name := "test" + +organization := "org.example" + +version := "1.0" diff --git a/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.sbt b/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.sbt new file mode 100644 index 000000000..9f1fc169b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.sbt @@ -0,0 +1,11 @@ +publishMavenStyle := false + +publishTo <<= baseDirectory { base => + Some( Resolver.file("test-repo", base / "repo")(Patterns(false, Resolver.mavenStyleBasePattern)) ) +} + +name := "test-ivy" + +organization := "org.example" + +version := "1.0" diff --git a/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.scala b/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.scala deleted file mode 100644 index 934644b00..000000000 --- a/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestPublish.scala +++ /dev/null @@ -1,7 +0,0 @@ -import sbt._ - -class TestPublish(info: ProjectInfo) extends DefaultProject(info) -{ - override def managedStyle = ManagedStyle.Ivy - val publishTo = Resolver.file("test-repo", path("repo").asFile)(Patterns(false, Resolver.mavenStyleBasePattern)) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.sbt b/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.sbt new file mode 100644 index 000000000..a29853df8 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.sbt @@ -0,0 +1,17 @@ +publishMavenStyle := false + +resolvers <<= baseDirectory { base => + Resolver.file("test-repo", base / "repo")(Patterns(false, Resolver.mavenStyleBasePattern)) :: Nil +} + +libraryDependencies ++= Seq( + "org.example" %% "test-ivy" % "1.0", + "org.example" %% "test-ivy" % "1.0" % "test", + "org.example" %% "test-ivy" % "1.0" % "runtime" +) + +name := "test-ivy-use" + +organization := "test" + +version := "1.0" diff --git a/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.scala b/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.scala deleted file mode 100644 index e8f3445ba..000000000 --- a/sbt/src/sbt-test/dependency-management/configurations/changes/ivy/TestUse.scala +++ /dev/null @@ -1,11 +0,0 @@ - -import sbt._ - -class TestUse(info: ProjectInfo) extends DefaultProject(info) -{ - override def managedStyle = ManagedStyle.Ivy - val testLocal = Resolver.file("test-repo", path("repo").asFile)(Patterns(false, Resolver.mavenStyleBasePattern)) - val mavenC = "org.example" %% "test-ivy" % "1.0" - val mavenT = "org.example" %% "test-ivy" % "1.0" % "test" - val mavenR = "org.example" %% "test-ivy" % "1.0" % "runtime" -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.sbt b/sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.sbt new file mode 100644 index 000000000..5acddca8b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.sbt @@ -0,0 +1,15 @@ +resolvers <<= baseDirectory { base => + Resolver.file("test-repo", base / "repo") :: Nil +} + +libraryDependencies ++= Seq( + "org.example" %% "test" % "1.0", + "org.example" %% "test" % "1.0" % "test", + "org.example" %% "test" % "1.0" % "runtime" +) + +name := "test-use" + +organization := "test" + +version := "1.0" diff --git a/sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.scala b/sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.scala deleted file mode 100644 index db2bea94f..000000000 --- a/sbt/src/sbt-test/dependency-management/configurations/changes/maven/TestUse.scala +++ /dev/null @@ -1,10 +0,0 @@ - -import sbt._ - -class TestUse(info: ProjectInfo) extends DefaultProject(info) -{ - val testLocal = Resolver.file("test-repo", path("repo").asFile) - val mavenC = "org.example" %% "test" % "1.0" - val mavenT = "org.example" %% "test" % "1.0" % "test" - val mavenR = "org.example" %% "test" % "1.0" % "runtime" -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/configurations/project/build.properties b/sbt/src/sbt-test/dependency-management/configurations/project/build.properties deleted file mode 100644 index f38a35c95..000000000 --- a/sbt/src/sbt-test/dependency-management/configurations/project/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -project.name=test -project.organization=org.example -project.version=1.0 \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/configurations/project/build/TestPublish.scala b/sbt/src/sbt-test/dependency-management/configurations/project/build/TestPublish.scala deleted file mode 100644 index 62c0b1c8a..000000000 --- a/sbt/src/sbt-test/dependency-management/configurations/project/build/TestPublish.scala +++ /dev/null @@ -1,7 +0,0 @@ -import sbt._ - -class TestPublish(info: ProjectInfo) extends DefaultProject(info) -{ - override def managedStyle = ManagedStyle.Maven // the default, but make it explicit - val publishTo = Resolver.file("test-repo", path("repo").asFile) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/configurations/test b/sbt/src/sbt-test/dependency-management/configurations/test index 8d3a67f5b..029ffbda2 100644 --- a/sbt/src/sbt-test/dependency-management/configurations/test +++ b/sbt/src/sbt-test/dependency-management/configurations/test @@ -1,43 +1,30 @@ -# publish a jar with Published with managedStyle = ManagedStyle.Maven +# publish a jar with Published with publishManagedStyle = true $ copy-file changes/maven/Published.scala src/main/scala/Published.scala > publish -# get and compile against each published jar with managedStyle = ManagedStyle.Maven +# get and compile against each published jar with publishManagedStyle = true -> set project.name test-use -> set project.organization test -$ delete src project/build lib_managed -$ copy-file changes/maven/TestUse.scala project/build/TestUse.scala +$ delete src build.sbt target +$ copy-file changes/maven/TestUse.sbt build.sbt > reload $ copy-file changes/maven/Use.scala src/main/scala/Use.scala --> compile - -> update > compile - -# publish a jar with PublishedIvy with managedStyle = ManagedStyle.Ivy -> set project.name test-ivy -> set project.organization org.example -$ delete src project/build lib_managed repo -$ copy-file changes/ivy/TestPublish.scala project/build/TestPublish.scala +# publish a jar with PublishedIvy with publishManagedStyle = false +$ delete src build.sbt target repo +$ copy-file changes/ivy/TestPublish.sbt build.sbt > reload $ copy-file changes/ivy/Published.scala src/main/scala/Published.scala > publish -# get and compile against each published jar with managedStyle = ManagedStyle.Ivy +# get and compile against each published jar with publishManagedStyle = false -> set project.name test-ivy-use -> set project.organization test -$ delete src project/build lib_managed -$ copy-file changes/ivy/TestUse.scala project/build/TestUse.scala +$ delete src build.sbt target +$ copy-file changes/ivy/TestUse.sbt build.sbt > reload $ copy-file changes/ivy/Use.scala src/main/scala/Use.scala --> compile - -> update > compile \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala b/sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala new file mode 100644 index 000000000..bd6080146 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala @@ -0,0 +1,28 @@ + import sbt._ + import Keys._ + +object TestProject extends Build +{ + lazy val projects = Seq(root) + lazy val root = Project("root", file(".")) settings( + ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), + libraryDependencies += transitive("javax.mail" % "mail" % "1.4.1"), + TaskKey("check-transitive") <<= check(true), + TaskKey("check-intransitive") <<= check(false) + ) + + def transitive(dep: ModuleID) = + { + println("transitive(" + dep + ") = " + file("transitive").exists) + if(file("transitive").exists) dep else dep.intransitive() + } + + private def check(transitive: Boolean) = + (dependencyClasspath in Compile) map { downloaded => + val jars = downloaded.size + if(transitive) + if(jars <= 1) error("Transitive dependencies not downloaded") + else + if(jars > 1) error("Transitive dependencies downloaded (" + downloaded.files.mkString(", ") + ")") + } +} diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/project/build.properties b/sbt/src/sbt-test/dependency-management/exclude-transitive/project/build.properties deleted file mode 100644 index e66951c84..000000000 --- a/sbt/src/sbt-test/dependency-management/exclude-transitive/project/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -project.name=Exclude Transitive -project.version=1.0 diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/project/build/src/TestProject.scala b/sbt/src/sbt-test/dependency-management/exclude-transitive/project/build/src/TestProject.scala deleted file mode 100644 index cf2d2ef40..000000000 --- a/sbt/src/sbt-test/dependency-management/exclude-transitive/project/build/src/TestProject.scala +++ /dev/null @@ -1,26 +0,0 @@ -import sbt._ - -class TestProject(info: ProjectInfo) extends DefaultProject(info) -{ - def transitive(dep: ModuleID) = if("transitive".asFile.exists) dep else dep.intransitive() - val javaMail = transitive("javax.mail" % "mail" % "1.4.1") - - lazy val checkTransitive = task { check(true) } - lazy val checkIntransitive = task { check(false) } - - private def check(transitive: Boolean) = - { - val downloaded = compileClasspath.get - val jars = downloaded.size - if(transitive) - { - if(jars > 1) None - else Some("Transitive dependencies not downloaded") - } - else - { - if(jars == 1) None - else Some("Transitive dependencies downloaded (" + downloaded.mkString(", ") + ")") - } - } -} diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/test b/sbt/src/sbt-test/dependency-management/exclude-transitive/test index 3911dabf1..9ed9d122e 100644 --- a/sbt/src/sbt-test/dependency-management/exclude-transitive/test +++ b/sbt/src/sbt-test/dependency-management/exclude-transitive/test @@ -1,10 +1,10 @@ # load the project definition with transitive dependencies enabled # and check that they are not downloaded - +$ pause $ touch transitive +$ pause > reload - -> update +$ pause > check-transitive -> check-intransitive @@ -17,7 +17,5 @@ $ delete ivy-cache $ delete transitive > reload -> update - -> check-transitive > check-intransitive \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt b/sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt new file mode 100644 index 000000000..b84a7f219 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt @@ -0,0 +1,15 @@ +ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))) + +publishMavenStyle := false + +publishTo <<= baseDirectory { base => + Some(Resolver.file("test-repo", base / "repo" / "test")(Resolver.defaultIvyPatterns)) +} + +projectID <<= projectID { _.extra("e:color" -> "red") } + +organization := "org.scala-tools.sbt" + +version := "1.0" + +name := "define-color" \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt b/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt new file mode 100644 index 000000000..d7aff5e2e --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt @@ -0,0 +1,17 @@ +ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache")) ) + +publishMavenStyle := false + +resolvers <<= baseDirectory( base => + Resolver.file("test-repo", base / "repo" / "test")(Resolver.defaultIvyPatterns) :: Nil +) + +libraryDependencies <<= baseDirectory { base => + val color = IO.read(base / "color") + val dep = "org.scala-tools.sbt" %% "define-color" % "1.0" extra("e:color" -> color) + dep :: Nil +} + +organization := "org.example" + +name := "use-color" \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.scala b/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.scala deleted file mode 100644 index 2b0093e76..000000000 --- a/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.scala +++ /dev/null @@ -1,13 +0,0 @@ -import sbt._ - -class UseColor(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - override def managedStyle = ManagedStyle.Ivy - val repo = Resolver.file("test-repo", ("repo" / "test").asFile) - def color = FileUtilities.readString("color".asFile, log).right.getOrElse(error("No color specified")) - override def libraryDependencies = Set( - "org.scala-tools.sbt" %% "test-ivy-extra" %"1.0" extra("e:color" -> color) - ) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/extra/changes/color b/sbt/src/sbt-test/dependency-management/extra/changes/color deleted file mode 100644 index 46f29e8eb..000000000 --- a/sbt/src/sbt-test/dependency-management/extra/changes/color +++ /dev/null @@ -1 +0,0 @@ -red \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/extra/project/build.properties b/sbt/src/sbt-test/dependency-management/extra/project/build.properties deleted file mode 100644 index c566cd577..000000000 --- a/sbt/src/sbt-test/dependency-management/extra/project/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -project.name=test-ivy-extra -project.version=1.0 -project.organization=org.scala-tools.sbt \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/extra/project/build/DefineColor.scala b/sbt/src/sbt-test/dependency-management/extra/project/build/DefineColor.scala deleted file mode 100644 index 5d337e24f..000000000 --- a/sbt/src/sbt-test/dependency-management/extra/project/build/DefineColor.scala +++ /dev/null @@ -1,10 +0,0 @@ -import sbt._ - -class DefineColor(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - override def managedStyle = ManagedStyle.Ivy - val publishTo = Resolver.file("test-repo", ("repo" / "test").asFile) - override def projectID = super.projectID extra("e:color" -> "red") -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/extra/test b/sbt/src/sbt-test/dependency-management/extra/test index 1d6137036..f49bf0f03 100644 --- a/sbt/src/sbt-test/dependency-management/extra/test +++ b/sbt/src/sbt-test/dependency-management/extra/test @@ -1,12 +1,12 @@ > publish -> set project.name UseColor -$ delete project/build/ -$ copy-file changes/UseColor.scala project/build/UseColor.scala +$ delete DefineColor.sbt +$ copy-file changes/UseColor.sbt UseColor.sbt $ copy-file changes/blue color > reload -> update $ copy-file changes/red color +> reload > update \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala b/sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala new file mode 100644 index 000000000..cd79621da --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala @@ -0,0 +1,40 @@ + import sbt._ + import Keys._ + import scala.xml._ + +object InfoTest extends Build +{ + lazy val projects = Seq(root) + lazy val root = Project("root", file(".")) settings( + ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), + ivyXML <<= (baseDirectory, organization, moduleID) apply inlineXML, + TaskKey("check-download") <<= checkDownload, + delivered <<= deliverLocal map XML.loadFile, + TaskKey("check-info") <<= checkInfo + ) + lazy val delivered = TaskKey[NodeSeq]("delivered") + + def inlineXML(baseDirectory: File, organization: String, moduleID: String): NodeSeq = + if(baseDirectory / "info" exists) + ( + + + ScalaQuery is a type-safe database query API for Scala. + + + ) + else + + + def customInfo = file("info").exists + def checkDownload = (dependencyClasspath in Compile) map { cp => if(cp.isEmpty) error("Dependency not downloaded") } + def checkInfo = delivered map { d => + if((d \ "info").isEmpty) + error("No info tag generated") + else if(customInfo) + if( !deliveredWithCustom(d) ) error("Expected 'license' and 'description' tags in info tag, got: \n" + (d \ "info")) + else + if( deliveredWithCustom(d) ) error("Expected empty 'info' tag, got: \n" + (d \ "info")) + } + def deliveredWithCustom(d: NodeSeq) = !(d \ "info" \ "license").isEmpty && !(d \ "info" \ "description").isEmpty +} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/info/project/build.properties b/sbt/src/sbt-test/dependency-management/info/project/build.properties deleted file mode 100644 index 54ea234fa..000000000 --- a/sbt/src/sbt-test/dependency-management/info/project/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -project.name=test -project.org=test -project.version=1.0 diff --git a/sbt/src/sbt-test/dependency-management/info/project/build/InfoTest.scala b/sbt/src/sbt-test/dependency-management/info/project/build/InfoTest.scala deleted file mode 100644 index 037d065ce..000000000 --- a/sbt/src/sbt-test/dependency-management/info/project/build/InfoTest.scala +++ /dev/null @@ -1,34 +0,0 @@ -import sbt._ - -class InfoTest(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - override def ivyXML = - if(customInfo) - ( - - - ScalaQuery is a type-safe database query API for Scala. - - - ) - else - - - def customInfo = "info".asFile.exists - - lazy val checkDownload = task { if(compileClasspath.get.isEmpty) Some("Dependency not downloaded") else None } - lazy val checkInfo = task { - if((delivered \ "info").isEmpty) - Some("No info tag generated") - else if(customInfo) - if( deliveredWithCustom ) None else Some("Expected 'license' and 'description' tags in info tag, got: \n" + (delivered \ "info")) - else - if( deliveredWithCustom ) Some("Expected empty 'info' tag, got: \n" + (delivered \ "info")) else None - } - def deliveredWithCustom = !(delivered \ "info" \ "license").isEmpty && !(delivered \ "info" \ "description").isEmpty - def delivered = scala.xml.XML.loadFile(ivyFile) - - def ivyFile = (outputPath * "ivy*.xml").get.toList.head.asFile -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/info/test b/sbt/src/sbt-test/dependency-management/info/test index de451a8d3..b6ae3116d 100644 --- a/sbt/src/sbt-test/dependency-management/info/test +++ b/sbt/src/sbt-test/dependency-management/info/test @@ -1,13 +1,9 @@ -> update > check-download -> deliver-local > check-info > clean -> clean-lib $ touch info +> reload -> update > check-download -> deliver-local > check-info \ No newline at end of file diff --git a/sbt/src/sbt-test/tests/specs-compat/build.sbt b/sbt/src/sbt-test/tests/specs-compat/build.sbt new file mode 100644 index 000000000..56d0df884 --- /dev/null +++ b/sbt/src/sbt-test/tests/specs-compat/build.sbt @@ -0,0 +1 @@ +libraryDependencies += "org.scala-tools.testing" %% "specs" % "1.6.1" intransitive() diff --git a/sbt/src/sbt-test/tests/specs-compat/test b/sbt/src/sbt-test/tests/specs-compat/test index 943bb2d7d..1776dbd87 100644 --- a/sbt/src/sbt-test/tests/specs-compat/test +++ b/sbt/src/sbt-test/tests/specs-compat/test @@ -1,9 +1,7 @@ -> ++2.7.5 -> update +> ++ 2.7.5 > test-only Success -> test-only Failure -> ++2.7.7 -> update +> ++ 2.7.7 > test-only Success -> test-only Failure \ No newline at end of file