From ed307259b4e72b94e3d7b861fbd1f7698d000fc2 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 24 Apr 2010 09:39:41 -0400 Subject: [PATCH] test for pom repository filtering --- .../pom-advanced/project/build.properties | 2 ++ .../project/build/PomRepoTest.scala | 24 +++++++++++++++++++ .../dependency-management/pom-advanced/test | 11 +++++++++ 3 files changed, 37 insertions(+) create mode 100644 sbt/src/sbt-test/dependency-management/pom-advanced/project/build.properties create mode 100644 sbt/src/sbt-test/dependency-management/pom-advanced/project/build/PomRepoTest.scala create mode 100644 sbt/src/sbt-test/dependency-management/pom-advanced/test 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 new file mode 100644 index 000000000..0505fa0e4 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-advanced/project/build.properties @@ -0,0 +1,2 @@ +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 new file mode 100644 index 000000000..6670d646b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-advanced/project/build/PomRepoTest.scala @@ -0,0 +1,24 @@ +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 diff --git a/sbt/src/sbt-test/dependency-management/pom-advanced/test b/sbt/src/sbt-test/dependency-management/pom-advanced/test new file mode 100644 index 000000000..639cfec25 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-advanced/test @@ -0,0 +1,11 @@ +# write the default pom. The only repositories should be Scala Tools Releases and Snapshots +> check-pom http://scala-tools.org/repo-releases/ http://scala-tools.org/repo-snapshots/ + +# include file:// repositories. The generated repositories section should include the local Maven repository as well +$ touch repo.all +> check-pom http://scala-tools.org/repo-releases/ http://scala-tools.org/repo-snapshots/ file://*.m2/repository/ + +# include file:// repositories. The generated repositories section should include the local Maven repository as well +$ delete repo.all +$ touch repo.none +> check-pom \ No newline at end of file