diff --git a/ivy/IvyActions.scala b/ivy/IvyActions.scala index a9b835976..028c2dab5 100644 --- a/ivy/IvyActions.scala +++ b/ivy/IvyActions.scala @@ -26,7 +26,7 @@ final class PublishConfiguration(val ivyFile: Option[File], val resolverName: St final class UpdateConfiguration(val retrieve: Option[RetrieveConfiguration], val missingOk: Boolean, val logging: UpdateLogging.Value) final class RetrieveConfiguration(val retrieveDirectory: File, val outputPattern: String) -final class MakePomConfiguration(val file: File, val configurations: Option[Iterable[Configuration]] = None, val extra: NodeSeq = NodeSeq.Empty, val process: Node => Node = n => n, val filterRepositories: MavenRepository => Boolean = _ => true) +final case class MakePomConfiguration(file: File, configurations: Option[Iterable[Configuration]] = None, extra: NodeSeq = NodeSeq.Empty, process: Node => Node = n => n, filterRepositories: MavenRepository => Boolean = _ => true) /** Configures logging during an 'update'. `level` determines the amount of other information logged. * `Full` is the default and logs the most. diff --git a/ivy/IvyScala.scala b/ivy/IvyScala.scala index 511a3e997..c79909698 100644 --- a/ivy/IvyScala.scala +++ b/ivy/IvyScala.scala @@ -21,7 +21,7 @@ object ScalaArtifacts import ScalaArtifacts._ -final class IvyScala(val scalaVersion: String, val configurations: Iterable[Configuration], val checkExplicit: Boolean, val filterImplicit: Boolean, val overrideScalaVersion: Boolean) +final case class IvyScala(scalaVersion: String, configurations: Iterable[Configuration], checkExplicit: Boolean, filterImplicit: Boolean, overrideScalaVersion: Boolean) { // otherwise, Ivy produces the error: "impossible to get artifacts when data has not been loaded" // which may be related to sbt's custom conflict manager, to IVY-987, or both diff --git a/main/Defaults.scala b/main/Defaults.scala index 304ca1d4a..4727bebff 100644 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -606,9 +606,10 @@ object Classpaths /*} f(module.owner.configuration :+: module.moduleSettings :+: config :+: HNil)*/ }*/ - def makePomConfigurationTask(file: File, configurations: Option[Iterable[Configuration]] = None, extra: NodeSeq = NodeSeq.Empty, process: XNode => XNode = n => n, filterRepositories: MavenRepository => Boolean = _ => true) = + def makePomConfigurationTask(file: File, configurations: Option[Iterable[Configuration]] = None, extra: NodeSeq = NodeSeq.Empty, process: XNode => XNode = n => n, filterRepositories: MavenRepository => Boolean = defaultRepositoryFilter) = new MakePomConfiguration(file, configurations, extra, process, filterRepositories) + def defaultRepositoryFilter = (repo: MavenRepository) => !repo.root.startsWith("file:") def getPublishTo(repo: Option[Resolver]): Resolver = repo getOrElse error("Repository for publishing is not specified.") def deliverConfig(outputDirectory: File, status: String = "release", logging: UpdateLogging.Value = UpdateLogging.DownloadOnly) = diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-a/build.sbt b/sbt/src/sbt-test/dependency-management/ivy-settings-a/build.sbt index cb0d463d9..7143178e3 100644 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-a/build.sbt +++ b/sbt/src/sbt-test/dependency-management/ivy-settings-a/build.sbt @@ -1,11 +1,6 @@ -ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy-home"))) - seq(externalIvySettings(), externalIvyFile()) -TaskKey("check") <<= update map { report => +TaskKey("check") <<= (baseDirectory, update) map { (base, report) => val files = report.matching( moduleFilter(organization = "org.scalacheck", name = "scalacheck", revision = "1.5") ) - if(shouldExist) - assert(!files.isEmpty, "ScalaCheck module not found in update report") - else - assert(files.isEmpty, "ScalaCheck module found in update report unexpectedly") + assert(!files.isEmpty, "ScalaCheck module not found in update report") } \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-a/project/build.properties b/sbt/src/sbt-test/dependency-management/ivy-settings-a/project/build.properties deleted file mode 100644 index 6f75f736f..000000000 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-a/project/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Project properties -#Sun Feb 01 13:49:30 EST 2009 -project.name=Ivy Settings Test -project.version=1.0.0 diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-a/project/build/TestProject.scala b/sbt/src/sbt-test/dependency-management/ivy-settings-a/project/build/TestProject.scala deleted file mode 100644 index eb083fd84..000000000 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-a/project/build/TestProject.scala +++ /dev/null @@ -1,7 +0,0 @@ -import sbt._ - -class TestProject(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - override def disableCrossPaths = true -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-a/test b/sbt/src/sbt-test/dependency-management/ivy-settings-a/test index 48c7771b1..0129b8a05 100644 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-a/test +++ b/sbt/src/sbt-test/dependency-management/ivy-settings-a/test @@ -2,8 +2,6 @@ $ copy-file changes/scalacheck-ivy.xml ivy.xml -> update -$ absent lib_managed/default/scalacheck-1.5.jar $ copy-file changes/scala-tools-ivysettings.xml ivysettings.xml -> update -$ exists lib_managed/default/scalacheck-1.5.jar \ No newline at end of file +> check diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-b/build.sbt b/sbt/src/sbt-test/dependency-management/ivy-settings-b/build.sbt new file mode 100644 index 000000000..fd5bfeab5 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ivy-settings-b/build.sbt @@ -0,0 +1,8 @@ +externalIvySettings() + +libraryDependencies += "org.scalacheck" % "scalacheck" % "1.5" + +TaskKey("check") <<= (baseDirectory, update) map { (base, report) => + val files = report.matching( moduleFilter(organization = "org.scalacheck", name = "scalacheck", revision = "1.5") ) + assert(!files.isEmpty, "ScalaCheck module not found in update report") +} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-b/project/build.properties b/sbt/src/sbt-test/dependency-management/ivy-settings-b/project/build.properties deleted file mode 100644 index c7a658215..000000000 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-b/project/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Project properties -#Sun Feb 01 15:33:35 EST 2009 -project.name=Ivy Settings Test B -project.version=1.0.1 diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-b/project/build/src/UpdateTestProject.scala b/sbt/src/sbt-test/dependency-management/ivy-settings-b/project/build/src/UpdateTestProject.scala deleted file mode 100644 index 8f7323f9e..000000000 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-b/project/build/src/UpdateTestProject.scala +++ /dev/null @@ -1,8 +0,0 @@ -import sbt._ - -class UpdateTestProject(info: ProjectInfo) extends DefaultProject(info) -{ - val sc = "org.scalacheck" % "scalacheck" % "1.5" - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - override def disableCrossPaths = true -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-b/test b/sbt/src/sbt-test/dependency-management/ivy-settings-b/test index bdbedd260..892c26c06 100644 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-b/test +++ b/sbt/src/sbt-test/dependency-management/ivy-settings-b/test @@ -1,6 +1,4 @@ -> update -$ absent lib_managed/compile/scalacheck-1.5.jar $ copy-file changes/scala-tools-ivysettings.xml ivysettings.xml -> update -$ exists lib_managed/compile/scalacheck-1.5.jar +> check diff --git a/sbt/src/sbt-test/dependency-management/java.net/build.sbt b/sbt/src/sbt-test/dependency-management/java.net/build.sbt new file mode 100644 index 000000000..6c4da154b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/java.net/build.sbt @@ -0,0 +1,5 @@ +ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy-home"))) + +resolvers += JavaNet1Repository + +libraryDependencies += "javax.ejb" % "ejb-api" % "3.0" diff --git a/sbt/src/sbt-test/dependency-management/java.net/project/build.properties b/sbt/src/sbt-test/dependency-management/java.net/project/build.properties deleted file mode 100644 index 7c89429d7..000000000 --- a/sbt/src/sbt-test/dependency-management/java.net/project/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -project.name=test -project.version=1.0.0 \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/java.net/project/build/src/TestProject.scala b/sbt/src/sbt-test/dependency-management/java.net/project/build/src/TestProject.scala deleted file mode 100644 index fd31e81f4..000000000 --- a/sbt/src/sbt-test/dependency-management/java.net/project/build/src/TestProject.scala +++ /dev/null @@ -1,8 +0,0 @@ -import sbt._ - -class TestProject(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - val javaNet = JavaNet1Repository - val ejb = "javax.ejb" % "ejb-api" % "3.0" -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala b/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala new file mode 100644 index 000000000..efe514124 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala @@ -0,0 +1,59 @@ + import sbt.{Node =>_,_} + import Keys._ + import scala.xml._ + +object MakePomTest extends Build +{ + lazy val projects = Seq(root) + lazy val root = Project("root", file(".")) settings( + readPom <<= makePom map XML.loadFile, + TaskKey("check-pom") <<= checkPom, + TaskKey("check-extra") <<= checkExtra, + makePomConfiguration ~= { _.copy(extra = ) } + ) + + val readPom = TaskKey[Elem]("read-pom") + + val fakeName = "fake" + val fakeURL = "http://example.org" + val fakeRepo = fakeName at fakeURL + def extraTagName = "extra-tag" + + def checkProject(pom: Elem) = if(pom.label != "project") error("Top level element was not 'project': " + pom.label) + + def withRepositories[T](pomXML: Elem)(f: NodeSeq => T) = + { + val repositoriesElement = pomXML \ "repositories" + if(repositoriesElement.size == 1) f(repositoriesElement) else error("'repositories' element not found in generated pom") + } + + lazy val checkExtra = readPom map { pomXML => + checkProject(pomXML) + val extra = pomXML \ extraTagName + if(extra.isEmpty) error("'" + extraTagName + "' not found in generated pom.xml.") + } + + lazy val checkPom = (readPom, fullResolvers) map { (pomXML, ivyRepositories) => + checkProject(pomXML) + withRepositories(pomXML) { repositoriesElement => + val repositories = repositoriesElement \ "repository" + val writtenRepositories = repositories.map(read).distinct + val mavenStyleRepositories = ivyRepositories.collect { case x: MavenRepository if x.name != "public" => normalize(x) } distinct; + + lazy val explain = (("Written:" +: writtenRepositories) ++ ("Declared:" +: mavenStyleRepositories)).mkString("\n\t") + + if( writtenRepositories != mavenStyleRepositories ) + error("Written repositories did not match declared repositories.\n\t" + explain) + } + } + + def read(repository: Node): MavenRepository = + (repository \ "name").text at normalize((repository \ "url").text) + + def normalize(url: String): String = + { + val base = uri( url ).normalize.toString + if(base.endsWith("/")) base else (base + "/") + } + def normalize(repo: MavenRepository): MavenRepository = new MavenRepository(repo.name, normalize(repo.root)) +} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/make-pom/project/build.properties b/sbt/src/sbt-test/dependency-management/make-pom/project/build.properties deleted file mode 100644 index 2ca57b677..000000000 --- a/sbt/src/sbt-test/dependency-management/make-pom/project/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -project.name=Make Pom Test -project.organization=test -project.version=1.0 \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/make-pom/project/build/MakePomTest.scala b/sbt/src/sbt-test/dependency-management/make-pom/project/build/MakePomTest.scala deleted file mode 100644 index 37325d933..000000000 --- a/sbt/src/sbt-test/dependency-management/make-pom/project/build/MakePomTest.scala +++ /dev/null @@ -1,55 +0,0 @@ -import sbt._ - -import scala.xml._ - -class MakePomTest(info: ProjectInfo) extends DefaultProject(info) -{ - val fakeName = "fake" - val fakeURL = "http://example.org" - val fakeRepo = fakeName at fakeURL - - def extraTagName = "extra-tag" - override def pomExtra = - def readPom = XML.loadFile(pomPath.asFile) - def checkProject(pom: Elem): Either[String, Elem] = if(pom.label == "project") Right(pom) else Left("Top level element was not 'project': " + pom.label) - - def withPom(f: Elem => Either[String, Unit]) = task { - checkProject(readPom).right.flatMap(f).left.toOption - } - def withRepositories[T](pomXML: Elem)(f: NodeSeq => Either[String, T]) = - { - val repositoriesElement = pomXML \ "repositories" - if(repositoriesElement.size == 1) f(repositoriesElement) else Left("'repositories' element not found in generated pom") - } - - - lazy val checkExtra = withPom { pomXML => - val extra = pomXML \ extraTagName - if(extra.isEmpty) Left("'" + extraTagName + "' not found in generated pom.xml.") else Right(()) - } - - lazy val checkPom = withPom { pomXML => - withRepositories(pomXML) { repositoriesElement => - - val repositories = repositoriesElement \ "repository" - val writtenRepositories = Set() ++ repositories.map(read) - val mavenStyleRepositories = Set() ++ ivyRepositories.filter(x => x.isInstanceOf[MavenRepository] && x.name != "public").map(normalize) - - lazy val explain = ("Written:" :: writtenRepositories.toList ::: "Declared:" :: mavenStyleRepositories.toList).mkString("\n\t") - - if( writtenRepositories == mavenStyleRepositories ) Right(()) - else Left("Written repositories did not match declared repositories.\n\t" + explain) - } - } - - def read(repository: Node): MavenRepository = - (repository \ "name").text at normalize((repository \ "url").text) - - def normalize(url: String): String = - { - val base = (new java.net.URI( url )).normalize.toString - if(base.endsWith("/")) base else (base + "/") - } - def normalize(repo: Resolver): Resolver = repo match { case mr: MavenRepository => normalize(mr); case _ => repo } - def normalize(repo: MavenRepository): MavenRepository = new MavenRepository(repo.name, normalize(repo.root)) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/make-pom/test b/sbt/src/sbt-test/dependency-management/make-pom/test index d6cd7da32..3d7f79218 100644 --- a/sbt/src/sbt-test/dependency-management/make-pom/test +++ b/sbt/src/sbt-test/dependency-management/make-pom/test @@ -1,7 +1,2 @@ --> check-pom --> check-extra - -> make-pom - > check-pom > check-extra \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/Test.sbt b/sbt/src/sbt-test/dependency-management/module-confs/Test.sbt new file mode 100644 index 000000000..e77aa7def --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/module-confs/Test.sbt @@ -0,0 +1,7 @@ +{ + def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.10.0-SNAPSHOT/[artifact]-[revision].[ext]" + def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() + moduleConfigurations += ModuleConfiguration("org.scala-lang", "*", "2.10.0-.*", scalaSnapshots) +} + +libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.10.0-20110412.015459-16" \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongOrg.sbt b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongOrg.sbt new file mode 100644 index 000000000..2ab1e7378 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongOrg.sbt @@ -0,0 +1,7 @@ +{ + def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.10.0-SNAPSHOT/[artifact]-[revision].[ext]" + def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() + moduleConfigurations += ModuleConfiguration("org.not-scala-lang", "*", "2.10.0-.*", scalaSnapshots) +} + +libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.10.0-20110412.015459-16" \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongOrg.scala b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongOrg.scala deleted file mode 100644 index 47f80c36c..000000000 --- a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongOrg.scala +++ /dev/null @@ -1,13 +0,0 @@ -import sbt._ - -class Test(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.8.0-SNAPSHOT/[artifact]-[revision].[ext]" - def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() - val scOnly = ModuleConfiguration("org.not-scala-lang", "*", "2.8.0-.*", scalaSnapshots) - - val uniqueScala = "org.scala-lang" % "scala-compiler" % "2.8.0-20100115.022156-304" - val otherDep = "org.scala-tools.sxr" % "sxr_2.7.5" % "0.2.3" -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongPattern.sbt b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongPattern.sbt new file mode 100644 index 000000000..4f0d3a80c --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongPattern.sbt @@ -0,0 +1,7 @@ +{ + def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.10.a-SNAPSHOT/[artifact]-[revision].[ext]" + def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() + moduleConfigurations += ModuleConfiguration("org.scala-lang", "*", "2.10.0-.*", scalaSnapshots) +} + +libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.10.0-20110412.015459-16" \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongPattern.scala b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongPattern.scala deleted file mode 100644 index f999c459b..000000000 --- a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongPattern.scala +++ /dev/null @@ -1,13 +0,0 @@ -import sbt._ - -class Test(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.8.a-SNAPSHOT/[artifact]-[revision].[ext]" - def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() - val scOnly = ModuleConfiguration("org.scala-lang", "*", "2.8.0-.*", scalaSnapshots) - - val uniqueScala = "org.scala-lang" % "scala-compiler" % "2.8.0-20100115.022156-304" - val otherDep = "org.scala-tools.sxr" % "sxr_2.7.5" % "0.2.3" -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongVersion.sbt b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongVersion.sbt new file mode 100644 index 000000000..ec469ff73 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongVersion.sbt @@ -0,0 +1,7 @@ +{ + def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.10.0-SNAPSHOT/[artifact]-[revision].[ext]" + def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() + moduleConfigurations += ModuleConfiguration("org.scala-lang", "*", "2.10.0-.*", scalaSnapshots) +} + +libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.10.0-20110412.015459-17" \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongVersion.scala b/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongVersion.scala deleted file mode 100644 index 687e9121d..000000000 --- a/sbt/src/sbt-test/dependency-management/module-confs/changes/WrongVersion.scala +++ /dev/null @@ -1,13 +0,0 @@ -import sbt._ - -class Test(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.8.0-SNAPSHOT/[artifact]-[revision].[ext]" - def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() - val scOnly = ModuleConfiguration("org.scala-lang", "*", "2.8.0-.*", scalaSnapshots) - - val uniqueScala = "org.scala-lang" % "scala-compiler" % "2.8.0-20100115.022156-305" - val otherDep = "org.scala-tools.sxr" % "sxr_2.7.5" % "0.2.3" -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/common.sbt b/sbt/src/sbt-test/dependency-management/module-confs/common.sbt new file mode 100644 index 000000000..3c07f7779 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/module-confs/common.sbt @@ -0,0 +1,5 @@ +ivyScala ~= { (is: Option[IvyScala]) => is.map(_.copy(checkExplicit = false, overrideScalaVersion = false)) } + +ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy-home"))) + +libraryDependencies += "junit" % "junit" % "4.8" \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/project/build.properties b/sbt/src/sbt-test/dependency-management/module-confs/project/build.properties deleted file mode 100644 index c6df3d9ce..000000000 --- a/sbt/src/sbt-test/dependency-management/module-confs/project/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -project.name=Test Module Configurations -project.version=1.0 \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/project/build/Test.scala b/sbt/src/sbt-test/dependency-management/module-confs/project/build/Test.scala deleted file mode 100644 index fd1519263..000000000 --- a/sbt/src/sbt-test/dependency-management/module-confs/project/build/Test.scala +++ /dev/null @@ -1,15 +0,0 @@ -import sbt._ - -class Test(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - def snapshotPattern = "http://scala-tools.org/repo-snapshots/[organization]/[module]/2.8.0-SNAPSHOT/[artifact]-[revision].[ext]" - def scalaSnapshots = Resolver.url("Scala Tools Snapshots") artifacts(snapshotPattern) ivys(snapshotPattern) mavenStyle() - val scOnly = ModuleConfiguration("org.scala-lang", "*", "2.8.0-.*", scalaSnapshots) - - val uniqueScala = "org.scala-lang" % "scala-compiler" % "2.8.0-20100511.013550-380" - val otherDep = "org.scala-tools.sxr" % "sxr_2.7.5" % "0.2.3" - - override def checkExplicitScalaDependencies = false -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/module-confs/test b/sbt/src/sbt-test/dependency-management/module-confs/test index 16466a54b..9bea9add9 100644 --- a/sbt/src/sbt-test/dependency-management/module-confs/test +++ b/sbt/src/sbt-test/dependency-management/module-confs/test @@ -1,14 +1,16 @@ > update > clean -$ copy-file changes/WrongOrg.scala project/build/Test.scala +$ copy-file changes/WrongOrg.sbt Test.sbt > reload -> update +> clean -$ copy-file changes/WrongVersion.scala project/build/Test.scala +$ copy-file changes/WrongVersion.sbt Test.sbt > reload -> update +> clean -$ copy-file changes/WrongPattern.scala project/build/Test.scala +$ copy-file changes/WrongPattern.sbt Test.sbt > reload -> update diff --git a/sbt/src/sbt-test/dependency-management/package-to-publish/project/build.properties b/sbt/src/sbt-test/dependency-management/package-to-publish/project/build.properties deleted file mode 100644 index 5a5bc0dec..000000000 --- a/sbt/src/sbt-test/dependency-management/package-to-publish/project/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -project.name=Publish Test -project.version=1.0 \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/package-to-publish/project/build/Test.scala b/sbt/src/sbt-test/dependency-management/package-to-publish/project/build/Test.scala deleted file mode 100644 index 00c3f923c..000000000 --- a/sbt/src/sbt-test/dependency-management/package-to-publish/project/build/Test.scala +++ /dev/null @@ -1,33 +0,0 @@ -import sbt._ - -class Test(info: ProjectInfo) extends DefaultProject(info) -{ - override def ivyCacheDirectory = Some(outputPath / "ivy-cache") - - override def managedStyle = ManagedStyle.Maven - def testRepoPath = path("test-repo") - val publishTo = Resolver.file("test repo", testRepoPath asFile) - - def srcExt = "-sources.jar" - def srcFilter = extFilter(srcExt) - def docExt = "-javadoc.jar" - def docFilter = extFilter(docExt) - def extFilter(ext: String) = "*" + ext - - override def packageDocsJar = defaultJarPath(docExt) - override def packageSrcJar= defaultJarPath(srcExt) - - val sourceArtifact = Artifact(artifactID, "src", "jar", "sources") - val docsArtifact = Artifact(artifactID, "docs", "jar", Some("javadoc"), Nil, None) - override def packageToPublishActions = super.packageToPublishActions ++ Seq(packageDocs, packageSrc) - - lazy val check = task { check0 } - - def check0 = checkPom orElse checkBin orElse checkSource orElse checkDoc - def checkPom = exists("pom", "*.pom") - def checkDoc = exists("javadoc", docFilter) - def checkSource = exists("sources", srcFilter) - def checkBin = exists("binary", "*.jar" - (srcFilter | docFilter)) - def exists(label: String, filter: sbt.NameFilter) = - if( (testRepoPath ** filter).get.isEmpty) Some("No " + label + " published") else None -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/package-to-publish/src/main/scala/Test.scala b/sbt/src/sbt-test/dependency-management/package-to-publish/src/main/scala/Test.scala deleted file mode 100644 index 7396cec1d..000000000 --- a/sbt/src/sbt-test/dependency-management/package-to-publish/src/main/scala/Test.scala +++ /dev/null @@ -1 +0,0 @@ -class TestClass \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/package-to-publish/test b/sbt/src/sbt-test/dependency-management/package-to-publish/test deleted file mode 100644 index 6bae15e55..000000000 --- a/sbt/src/sbt-test/dependency-management/package-to-publish/test +++ /dev/null @@ -1,3 +0,0 @@ --> check -> publish -> check \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/parent-ivy-settings/project/SettingsTest.scala b/sbt/src/sbt-test/dependency-management/parent-ivy-settings/project/SettingsTest.scala new file mode 100644 index 000000000..adea9d87b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/parent-ivy-settings/project/SettingsTest.scala @@ -0,0 +1,17 @@ + import sbt._ + import Keys._ + +object SettingsTest extends Build +{ + lazy val projects = Seq(parent, sub, configgy) + lazy val parent: Project = Project("Parent", file(".")) aggregate(sub) settings( + externalIvySettings(), + ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy-home"))) + ) + lazy val sub: Project = Project("Sub", file("sub"), delegates = parent :: Nil) dependsOn(configgy) aggregate(configgy) settings( + externalIvySettings() + ) + lazy val configgy = Project("Configgy", file("configgy"), delegates = sub :: Nil) settings( + libraryDependencies += "net.lag" % "configgy" % "1.1" + ) +} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/parent-ivy-settings/test b/sbt/src/sbt-test/dependency-management/parent-ivy-settings/test index 22099a981..93c165b6f 100644 --- a/sbt/src/sbt-test/dependency-management/parent-ivy-settings/test +++ b/sbt/src/sbt-test/dependency-management/parent-ivy-settings/test @@ -1,13 +1,13 @@ -> update -> clean-lib +> clean $ copy-file changes/ivysettings.xml sub/ivysettings.xml > update -> clean-lib +> clean $ delete sub/ivysettings.xml -> update -> clean-lib +> clean $ copy-file changes/ivysettings.xml ivysettings.xml > update \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/parent-publish/project/Parent.scala b/sbt/src/sbt-test/dependency-management/parent-publish/project/Parent.scala new file mode 100644 index 000000000..3a51d5d8b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/parent-publish/project/Parent.scala @@ -0,0 +1,10 @@ + import sbt._ + +object ParentTest extends Build +{ + lazy val projects = Seq(parent, core, reporters, jfreechart) + lazy val parent: Project = Project("Flowmodel", file(".")) aggregate(core, reporters) + lazy val core: Project = Project("Flowmodel core", file("core"), delegates = parent :: Nil) + lazy val reporters: Project = Project("Extra reporters", file("reporters"), delegates = parent :: Nil) aggregate(jfreechart) dependsOn(jfreechart) + lazy val jfreechart: Project = Project("JFreeChart reporters", file("jfreechart"), delegates = reporters :: Nil) dependsOn(core) +} diff --git a/sbt/src/sbt-test/dependency-management/parent-publish/project/build.properties b/sbt/src/sbt-test/dependency-management/parent-publish/project/build.properties deleted file mode 100644 index 199af5bc0..000000000 --- a/sbt/src/sbt-test/dependency-management/parent-publish/project/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -project.version=1.0 -project.name=Parent Test \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/parent-publish/project/build/Parent.scala b/sbt/src/sbt-test/dependency-management/parent-publish/project/build/Parent.scala deleted file mode 100644 index a84707859..000000000 --- a/sbt/src/sbt-test/dependency-management/parent-publish/project/build/Parent.scala +++ /dev/null @@ -1,12 +0,0 @@ -import sbt._ - -class FlowmodelProject(info: ProjectInfo) extends ParentProject(info) -{ - lazy val core = project("core", "Flowmodel core") - lazy val reporters = project("reporters", "Extra reporters", new Reporters(_)) - - class Reporters(info: ProjectInfo) extends ParentProject(info) - { - lazy val jfreechart = project("jfreechart", "JFreeChart reporters", core) - } -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/pom-advanced/project/PomRepoTest.scala b/sbt/src/sbt-test/dependency-management/pom-advanced/project/PomRepoTest.scala new file mode 100644 index 000000000..f2a9df6ca --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-advanced/project/PomRepoTest.scala @@ -0,0 +1,32 @@ + import sbt._ + import Keys._ + import complete.DefaultParsers._ + +object PomRepoTest extends Build +{ + lazy val projects = Seq(root) + lazy val root = Project("root", file(".")) settings( + resolvers ++= Seq(local, ScalaToolsSnapshots), + InputKey("check-pom") <<= InputTask(_ => spaceDelimited("")) { result => (makePom, result, streams) map checkPomRepositories }, + makePomConfiguration <<= (makePomConfiguration, baseDirectory) { (conf, base) => + conf.copy(filterRepositories = pomIncludeRepository(base, conf.filterRepositories) ) + }, + ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy-home"))) + ) + + val local = "local-maven-repo" at "file://" + (Path.userHome / ".m2" /"repository").absolutePath + + def pomIncludeRepository(base: File, prev: MavenRepository => Boolean) = (r: MavenRepository) => + if(base / "repo.none" exists) false else if(base / "repo.all" exists) true else prev(r) + + def checkPomRepositories(file: File, args: Seq[String], s: TaskStreams) + { + val repositories = scala.xml.XML.loadFile(file) \\ "repository" + val extracted = repositories.map { repo => MavenRepository(repo \ "name" text, repo \ "url" text) } + val expected = args.map(GlobFilter.apply) + s.log.info("Extracted: " + extracted.mkString("\n\t", "\n\t", "\n")) + s.log.info("Expected: " + args.mkString("\n\t", "\n\t", "\n")) + extracted.find { e => !expected.exists(_.accept(e.root)) } map { "Repository should not be exported: " + _ } orElse + (expected.find { e => !extracted.exists(r => e.accept(r.root)) } map { "Repository should be exported: " + _ } ) foreach error + } +} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/pom-advanced/project/build.properties b/sbt/src/sbt-test/dependency-management/pom-advanced/project/build.properties deleted file mode 100644 index 0505fa0e4..000000000 --- a/sbt/src/sbt-test/dependency-management/pom-advanced/project/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -project.name=Pom Repository Filter -project.version=1.0 \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/pom-advanced/project/build/PomRepoTest.scala b/sbt/src/sbt-test/dependency-management/pom-advanced/project/build/PomRepoTest.scala deleted file mode 100644 index 6670d646b..000000000 --- a/sbt/src/sbt-test/dependency-management/pom-advanced/project/build/PomRepoTest.scala +++ /dev/null @@ -1,24 +0,0 @@ -import sbt._ - -class PomRepoTest(info: ProjectInfo) extends DefaultProject(info) -{ - val local = "local-maven-repo" at "file://" + (Path.userHome / ".m2" /"repository").absolutePath - val remote = ScalaToolsSnapshots - - override def pomIncludeRepository(r: MavenRepository) = - if("repo.none".asFile.exists) false else if("repo.all".asFile.exists) true else super.pomIncludeRepository(r) - - lazy val checkPom = - task { args => task { checkPomRepositories(args.toList) } dependsOn(makePom) } - - def checkPomRepositories(args: List[String]): Option[String] = - { - val repositories = scala.xml.XML.loadFile(pomPath asFile) \\ "repository" - val extracted = repositories.map { repo => MavenRepository(repo \ "name" text, repo \ "url" text) } - val expected = args.map(GlobFilter.apply) - log.info("Extracted: " + extracted.mkString("\n\t", "\n\t", "\n")) - log.info("Expected: " + args.mkString("\n\t", "\n\t", "\n")) - (extracted.find { e => !expected.exists(_.accept(e.root)) } map { "Repository should not be exported: " + _ }) orElse - (expected.find { e => !extracted.exists(r => e.accept(r.root)) } map { "Repository should be exported: " + _ } ) - } -} \ No newline at end of file