From 7939e385c145e1b09da698d5a3c7af66e2897276 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Wed, 2 Sep 2015 02:59:00 -0400 Subject: [PATCH 1/8] Bintray --- build.sbt | 37 ++++++++++++++++++++++--------------- project/Dependencies.scala | 10 +++++----- project/bintray.sbt | 1 + 3 files changed, 28 insertions(+), 20 deletions(-) create mode 100644 project/bintray.sbt diff --git a/build.sbt b/build.sbt index aa9aaeedb..39eceba3f 100644 --- a/build.sbt +++ b/build.sbt @@ -2,17 +2,6 @@ import Dependencies._ def internalPath = file("internal") -// ThisBuild settings take lower precedence, -// but can be shared across the multi projects. -def buildLevelSettings: Seq[Setting[_]] = Seq( - organization in ThisBuild := "org.scala-sbt.librarymanagement", - version in ThisBuild := "1.0.0-SNAPSHOT" - // bintrayOrganization in ThisBuild := Some("sbt"), - // // bintrayRepository in ThisBuild := s"ivy-${(publishStatus in ThisBuild).value}", - // bintrayPackage in ThisBuild := "sbt", - // bintrayReleaseOnPublish in ThisBuild := false -) - def commonSettings: Seq[Setting[_]] = Seq( scalaVersion := "2.10.5", // publishArtifact in packageDoc := false, @@ -21,16 +10,34 @@ def commonSettings: Seq[Setting[_]] = Seq( // concurrentRestrictions in Global += Util.testExclusiveRestriction, testOptions += Tests.Argument(TestFrameworks.ScalaCheck, "-w", "1"), javacOptions in compile ++= Seq("-target", "6", "-source", "6", "-Xlint", "-Xlint:-serial"), - incOptions := incOptions.value.withNameHashing(true) + incOptions := incOptions.value.withNameHashing(true), // crossScalaVersions := Seq(scala210) // bintrayPackage := (bintrayPackage in ThisBuild).value, - // bintrayRepository := (bintrayRepository in ThisBuild).value + // bintrayRepository := (bintrayRepository in ThisBuild).value, + resolvers += Resolver.sonatypeRepo("public") ) lazy val root = (project in file(".")). aggregate(lm). settings( - buildLevelSettings, + inThisBuild(Seq( + organization := "org.scala-sbt", + version := "0.1.0-SNAPSHOT", + homepage := Some(url("https://github.com/sbt/librarymanagement")), + description := "Library management module for sbt", + licenses := List("BSD New" -> url("https://github.com/sbt/sbt/blob/0.13/LICENSE")), + scmInfo := Some(ScmInfo(url("https://github.com/sbt/librarymanagement"), "git@github.com:sbt/librarymanagement.git")), + developers := List( + Developer("harrah", "Mark Harrah", "@harrah", url("https://github.com/harrah")), + Developer("eed3si9n", "Eugene Yokota", "@eed3si9n", url("https://github.com/eed3si9n")), + Developer("jsuereth", "Josh Suereth", "@jsuereth", url("https://github.com/jsuereth")), + Developer("dwijnand", "Dale Wijnand", "@dwijnand", url("https://github.com/dwijnand")) + ), + bintrayReleaseOnPublish := false, + bintrayOrganization := Some("sbt"), + bintrayRepository := "maven-releases", + bintrayPackage := "librarymanagement" + )), commonSettings, // rootSettings, publish := {}, @@ -40,7 +47,7 @@ lazy val root = (project in file(".")). lazy val lm = (project in file("librarymanagement")). settings( commonSettings, - libraryDependencies ++= Seq(utilLogging % "compile;test->test", ioProj % "compile;test->test", utilCollection), + libraryDependencies ++= Seq(utilLogging, ioProj, utilCollection), libraryDependencies ++= Seq(ivy, jsch, sbtSerialization, scalaReflect.value, launcherInterface), name := "librarymanagement" ) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 7246cdf9e..e0f1916fc 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -2,11 +2,11 @@ import sbt._ import Keys._ object Dependencies { - val utilVersion = "1.0.0-SNAPSHOT" - val bootstrapSbtVersion = "0.13.8" - lazy val ioProj = "org.scala-sbt" % "io" % bootstrapSbtVersion - lazy val utilCollection = "org.scala-sbt.util" %% "util-collection" % utilVersion - lazy val utilLogging = "org.scala-sbt.util" %% "util-logging" % utilVersion + val utilVersion = "0.1.0-M1" + val ioVersion = "1.0.0-M1" + lazy val ioProj = "org.scala-sbt" %% "io" % ioVersion + lazy val utilCollection = "org.scala-sbt" %% "util-collection" % utilVersion + lazy val utilLogging = "org.scala-sbt" %% "util-logging" % utilVersion lazy val launcherInterface = "org.scala-sbt" % "launcher-interface" % "1.0.0-M1" lazy val ivy = "org.scala-sbt.ivy" % "ivy" % "2.3.0-sbt-927bc9ded7f8fba63297cddd0d5a3d01d6ad5d8d" diff --git a/project/bintray.sbt b/project/bintray.sbt new file mode 100644 index 000000000..8dd913f98 --- /dev/null +++ b/project/bintray.sbt @@ -0,0 +1 @@ +addSbtPlugin("me.lessis" % "bintray-sbt" % "0.3.0") From 277c754e36aee2a8eaa0ac9dad7a679bf0544e5f Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Wed, 2 Sep 2015 03:03:20 -0400 Subject: [PATCH 2/8] Merge #1 --- .travis.yml | 4 +++ build.sbt | 8 +++-- .../src/main/scala/sbt/ConvertResolver.scala | 1 + .../src/main/scala/sbt/Credentials.scala | 1 + .../src/main/scala/sbt/CustomPomParser.scala | 1 + .../src/main/scala/sbt/DependencyFilter.scala | 4 ++- .../src/main/scala/sbt/IvyActions.scala | 3 +- .../src/main/scala/sbt/IvyCache.scala | 1 + .../src/main/scala/sbt/JsonUtil.scala | 2 +- .../src/main/scala/sbt/LogicalClock.scala | 2 +- .../src/main/scala/sbt/MakePom.scala | 1 + .../src/main/scala/sbt/ResolutionCache.scala | 1 + .../src/main/scala/sbt/Resolver.scala | 4 +-- .../CachedResolutionResolveEngine.scala | 1 + .../src/test/scala/BaseIvySpecification.scala | 3 +- .../src/test/scala/ComponentManagerTest.scala | 3 +- .../src/test/scala/CustomPomParserTest.scala | 2 +- project/Dependencies.scala | 10 +++--- project/Util.scala | 32 +++++++++++++++++++ 19 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 .travis.yml create mode 100644 project/Util.scala diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..a5b73c0d8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,4 @@ +language: scala +scala: + - 2.10.5 + - 2.11.7 diff --git a/build.sbt b/build.sbt index 39eceba3f..71e663210 100644 --- a/build.sbt +++ b/build.sbt @@ -7,11 +7,12 @@ def commonSettings: Seq[Setting[_]] = Seq( // publishArtifact in packageDoc := false, resolvers += Resolver.typesafeIvyRepo("releases"), resolvers += Resolver.sonatypeRepo("snapshots"), + resolvers += Resolver.bintrayRepo("sbt", "maven-releases"), // concurrentRestrictions in Global += Util.testExclusiveRestriction, testOptions += Tests.Argument(TestFrameworks.ScalaCheck, "-w", "1"), javacOptions in compile ++= Seq("-target", "6", "-source", "6", "-Xlint", "-Xlint:-serial"), incOptions := incOptions.value.withNameHashing(true), - // crossScalaVersions := Seq(scala210) + crossScalaVersions := Seq(scala210, scala211), // bintrayPackage := (bintrayPackage in ThisBuild).value, // bintrayRepository := (bintrayRepository in ThisBuild).value, resolvers += Resolver.sonatypeRepo("public") @@ -47,7 +48,8 @@ lazy val root = (project in file(".")). lazy val lm = (project in file("librarymanagement")). settings( commonSettings, - libraryDependencies ++= Seq(utilLogging, ioProj, utilCollection), - libraryDependencies ++= Seq(ivy, jsch, sbtSerialization, scalaReflect.value, launcherInterface), + libraryDependencies ++= Seq(utilLogging, utilLogging), + libraryDependencies ++= Seq(sbtIO, utilCollection, ivy, jsch, sbtSerialization, scalaReflect.value, launcherInterface), + resourceGenerators in Compile <+= (version, resourceManaged, streams, compile in Compile) map Util.generateVersionFile, name := "librarymanagement" ) diff --git a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala b/librarymanagement/src/main/scala/sbt/ConvertResolver.scala index 9768241d5..9e2f11f63 100644 --- a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala +++ b/librarymanagement/src/main/scala/sbt/ConvertResolver.scala @@ -17,6 +17,7 @@ import org.apache.ivy.plugins.repository.file.{ FileRepository => FileRepo, File import java.io.{ IOException, File } import org.apache.ivy.util.{ FileUtil, ChecksumHelper } import org.apache.ivy.core.module.descriptor.{ Artifact => IArtifact } +import sbt.io.IO private[sbt] object ConvertResolver { import UpdateOptions.ResolverConverter diff --git a/librarymanagement/src/main/scala/sbt/Credentials.scala b/librarymanagement/src/main/scala/sbt/Credentials.scala index 464d5de8e..9cbe9d977 100644 --- a/librarymanagement/src/main/scala/sbt/Credentials.scala +++ b/librarymanagement/src/main/scala/sbt/Credentials.scala @@ -5,6 +5,7 @@ package sbt import java.io.File import org.apache.ivy.util.url.CredentialsStore +import sbt.io.IO object Credentials { def apply(realm: String, host: String, userName: String, passwd: String): Credentials = diff --git a/librarymanagement/src/main/scala/sbt/CustomPomParser.scala b/librarymanagement/src/main/scala/sbt/CustomPomParser.scala index be98bfe25..8cf372af0 100644 --- a/librarymanagement/src/main/scala/sbt/CustomPomParser.scala +++ b/librarymanagement/src/main/scala/sbt/CustomPomParser.scala @@ -13,6 +13,7 @@ import java.io.{ File, InputStream } import java.net.URL import java.util.regex.Pattern import sbt.mavenint.{ PomExtraDependencyAttributes, SbtPomExtraProperties } +import sbt.io.Hash @deprecated("We now use an Aether-based pom parser.", "0.13.8") final class CustomPomParser(delegate: ModuleDescriptorParser, transform: (ModuleDescriptorParser, ModuleDescriptor) => ModuleDescriptor) extends ModuleDescriptorParser { diff --git a/librarymanagement/src/main/scala/sbt/DependencyFilter.scala b/librarymanagement/src/main/scala/sbt/DependencyFilter.scala index fee8da46c..701d179aa 100644 --- a/librarymanagement/src/main/scala/sbt/DependencyFilter.scala +++ b/librarymanagement/src/main/scala/sbt/DependencyFilter.scala @@ -3,6 +3,8 @@ */ package sbt +import sbt.io.{ AllPassFilter, NameFilter } + trait DependencyFilterExtra { def moduleFilter(organization: NameFilter = AllPassFilter, name: NameFilter = AllPassFilter, revision: NameFilter = AllPassFilter): ModuleFilter = new ModuleFilter { @@ -57,4 +59,4 @@ trait ArtifactFilter extends SubDepFilter[Artifact, ArtifactFilter] { trait ConfigurationFilter extends SubDepFilter[String, ConfigurationFilter] { protected final def make(f: String => Boolean) = new ConfigurationFilter { def apply(m: String) = f(m) } final def apply(configuration: String, module: ModuleID, artifact: Artifact): Boolean = apply(configuration) -} \ No newline at end of file +} diff --git a/librarymanagement/src/main/scala/sbt/IvyActions.scala b/librarymanagement/src/main/scala/sbt/IvyActions.scala index 33436452c..e3cc20602 100644 --- a/librarymanagement/src/main/scala/sbt/IvyActions.scala +++ b/librarymanagement/src/main/scala/sbt/IvyActions.scala @@ -16,6 +16,7 @@ import org.apache.ivy.core.module.descriptor.{ Artifact => IArtifact, MDArtifact import org.apache.ivy.core.report.ResolveReport import org.apache.ivy.core.resolve.ResolveOptions import org.apache.ivy.plugins.resolver.{ BasicResolver, DependencyResolver } +import sbt.io.{ IO, PathFinder } final class DeliverConfiguration(val deliverIvyPattern: String, val status: String, val configurations: Option[Seq[Configuration]], val logging: UpdateLogging.Value) final class PublishConfiguration(val ivyFile: Option[File], val resolverName: String, val artifacts: Map[Artifact, File], val checksums: Seq[String], val logging: UpdateLogging.Value, @@ -304,7 +305,7 @@ object IvyActions { case None => None case Some(configs) => Some(configs.map(_.name)) } - val existingFiles = PathFinder(base).***.get filterNot { _.isDirectory } + val existingFiles = PathFinder(base).allPaths.get filterNot { _.isDirectory } val toCopy = new collection.mutable.HashSet[(File, File)] val retReport = report retrieve { (conf, mid, art, cached) => configurationNames match { diff --git a/librarymanagement/src/main/scala/sbt/IvyCache.scala b/librarymanagement/src/main/scala/sbt/IvyCache.scala index ce2ddd9f2..1e715a278 100644 --- a/librarymanagement/src/main/scala/sbt/IvyCache.scala +++ b/librarymanagement/src/main/scala/sbt/IvyCache.scala @@ -12,6 +12,7 @@ import org.apache.ivy.plugins.repository.file.{ FileRepository => IvyFileReposit import org.apache.ivy.plugins.repository.{ ArtifactResourceResolver, Resource, ResourceDownloader } import org.apache.ivy.plugins.resolver.util.ResolvedResource import org.apache.ivy.util.FileUtil +import sbt.io.Path class NotInCache(val id: ModuleID, cause: Throwable) extends RuntimeException(NotInCache(id, cause), cause) { diff --git a/librarymanagement/src/main/scala/sbt/JsonUtil.scala b/librarymanagement/src/main/scala/sbt/JsonUtil.scala index d4db781f7..6ee5bd68a 100644 --- a/librarymanagement/src/main/scala/sbt/JsonUtil.scala +++ b/librarymanagement/src/main/scala/sbt/JsonUtil.scala @@ -24,7 +24,7 @@ private[sbt] object JsonUtil { } def writeUpdateReport(ur: UpdateReport, graphPath: File): Unit = { - IO.createDirectory(graphPath.getParentFile) + sbt.io.IO.createDirectory(graphPath.getParentFile) toJsonFile(toLite(ur), graphPath) } def toLite(ur: UpdateReport): UpdateReportLite = diff --git a/librarymanagement/src/main/scala/sbt/LogicalClock.scala b/librarymanagement/src/main/scala/sbt/LogicalClock.scala index d4e1d4cc3..83c516a17 100644 --- a/librarymanagement/src/main/scala/sbt/LogicalClock.scala +++ b/librarymanagement/src/main/scala/sbt/LogicalClock.scala @@ -12,7 +12,7 @@ object LogicalClock { def apply(hashCode: Int): LogicalClock = { def intToByteArray(x: Int): Array[Byte] = Array((x >>> 24).toByte, (x >> 16 & 0xff).toByte, (x >> 8 & 0xff).toByte, (x & 0xff).toByte) - apply(Hash.toHex(intToByteArray(hashCode))) + apply(sbt.io.Hash.toHex(intToByteArray(hashCode))) } def apply(x: String): LogicalClock = new LogicalClock { override def toString: String = x diff --git a/librarymanagement/src/main/scala/sbt/MakePom.scala b/librarymanagement/src/main/scala/sbt/MakePom.scala index e2018612f..472dd6cfb 100644 --- a/librarymanagement/src/main/scala/sbt/MakePom.scala +++ b/librarymanagement/src/main/scala/sbt/MakePom.scala @@ -21,6 +21,7 @@ import org.apache.ivy.core.settings.IvySettings import org.apache.ivy.core.module.descriptor.{ DependencyArtifactDescriptor, DependencyDescriptor, License, ModuleDescriptor, ExcludeRule } import org.apache.ivy.plugins.resolver.{ ChainResolver, DependencyResolver, IBiblioResolver } import ivyint.CustomRemoteMavenResolver +import sbt.io.IO object MakePom { /** True if the revision is an ivy-range, not a complete revision. */ def isDependencyVersionRange(revision: String): Boolean = { diff --git a/librarymanagement/src/main/scala/sbt/ResolutionCache.scala b/librarymanagement/src/main/scala/sbt/ResolutionCache.scala index a68c52417..30b8d74f7 100644 --- a/librarymanagement/src/main/scala/sbt/ResolutionCache.scala +++ b/librarymanagement/src/main/scala/sbt/ResolutionCache.scala @@ -12,6 +12,7 @@ import core.module.id.ModuleRevisionId import core.module.descriptor.ModuleDescriptor import ResolutionCache.{ Name, ReportDirectory, ResolvedName, ResolvedPattern } import parser.xml.XmlModuleDescriptorParser +import sbt.io.IO /** * Replaces the standard Ivy resolution cache in order to: diff --git a/librarymanagement/src/main/scala/sbt/Resolver.scala b/librarymanagement/src/main/scala/sbt/Resolver.scala index ce3a2830f..ec2564b43 100644 --- a/librarymanagement/src/main/scala/sbt/Resolver.scala +++ b/librarymanagement/src/main/scala/sbt/Resolver.scala @@ -345,9 +345,9 @@ object Resolver { case _: IOException => None case e: SAXParseException => System.err.println(s"WARNING: Problem parsing ${f().getAbsolutePath}, ${e.getMessage}"); None } - loadHomeFromSettings(() => new File(Path.userHome, ".m2/settings.xml")) orElse + loadHomeFromSettings(() => new File(sbt.io.Path.userHome, ".m2/settings.xml")) orElse loadHomeFromSettings(() => new File(new File(System.getenv("M2_HOME")), "conf/settings.xml")) getOrElse - new File(Path.userHome, ".m2/repository") + new File(sbt.io.Path.userHome, ".m2/repository") } // TODO - should this just be the *exact* same as mavenLocal? probably... def publishMavenLocal: MavenCache = new MavenCache("publish-m2-local", mavenLocalDir) diff --git a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala index a1fc5ddfc..ab0896649 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala @@ -22,6 +22,7 @@ import org.apache.ivy.plugins.matcher.{ MapMatcher, PatternMatcher } import Configurations.{ System => _, _ } import annotation.tailrec import scala.concurrent.duration._ +import sbt.io.{ DirectoryFilter, Hash, IO, Path } private[sbt] object CachedResolutionResolveCache { def createID(organization: String, name: String, revision: String) = diff --git a/librarymanagement/src/test/scala/BaseIvySpecification.scala b/librarymanagement/src/test/scala/BaseIvySpecification.scala index a8a19ea76..f4e21c4c0 100644 --- a/librarymanagement/src/test/scala/BaseIvySpecification.scala +++ b/librarymanagement/src/test/scala/BaseIvySpecification.scala @@ -1,6 +1,7 @@ package sbt -import Path._, Configurations._ +import sbt.io.Path._, Configurations._ +import sbt.io.IO import java.io.File import org.specs2._ import cross.CrossVersionUtil diff --git a/librarymanagement/src/test/scala/ComponentManagerTest.scala b/librarymanagement/src/test/scala/ComponentManagerTest.scala index 165bdf9e2..29017b6a3 100644 --- a/librarymanagement/src/test/scala/ComponentManagerTest.scala +++ b/librarymanagement/src/test/scala/ComponentManagerTest.scala @@ -4,7 +4,8 @@ import java.io.File import java.util.concurrent.Callable import org.specs2._ import mutable.Specification -import IO.{ createDirectory, delete, touch, withTemporaryDirectory } +import sbt.io.IO.{ createDirectory, delete, touch, withTemporaryDirectory } +import sbt.io.IO import org.apache.ivy.util.ChecksumHelper import IfMissing.Fail import xsbti.ComponentProvider diff --git a/librarymanagement/src/test/scala/CustomPomParserTest.scala b/librarymanagement/src/test/scala/CustomPomParserTest.scala index 1bc39a120..262e4a22b 100644 --- a/librarymanagement/src/test/scala/CustomPomParserTest.scala +++ b/librarymanagement/src/test/scala/CustomPomParserTest.scala @@ -4,7 +4,7 @@ import org.apache.ivy.core.module.id.ModuleRevisionId import org.apache.ivy.core.resolve.ResolveOptions import org.specs2.mutable.Specification import sbt._ -import IO.withTemporaryDirectory +import sbt.io.IO.withTemporaryDirectory object CustomPomParserTest extends Specification { diff --git a/project/Dependencies.scala b/project/Dependencies.scala index e0f1916fc..92f1a778d 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -2,9 +2,12 @@ import sbt._ import Keys._ object Dependencies { + lazy val scala210 = "2.10.5" + lazy val scala211 = "2.11.7" + val utilVersion = "0.1.0-M1" val ioVersion = "1.0.0-M1" - lazy val ioProj = "org.scala-sbt" %% "io" % ioVersion + lazy val sbtIO = "org.scala-sbt" %% "io" % ioVersion lazy val utilCollection = "org.scala-sbt" %% "util-collection" % utilVersion lazy val utilLogging = "org.scala-sbt" %% "util-logging" % utilVersion @@ -12,10 +15,5 @@ object Dependencies { lazy val ivy = "org.scala-sbt.ivy" % "ivy" % "2.3.0-sbt-927bc9ded7f8fba63297cddd0d5a3d01d6ad5d8d" lazy val jsch = "com.jcraft" % "jsch" % "0.1.46" intransitive () lazy val sbtSerialization = "org.scala-sbt" %% "serialization" % "0.1.2" - // lazy val sbinary = "org.scala-tools.sbinary" %% "sbinary" % "0.4.2" - // lazy val scalaCheck = "org.scalacheck" %% "scalacheck" % "1.11.4" - // lazy val specs2 = "org.specs2" %% "specs2" % "2.3.11" - // lazy val junit = "junit" % "junit" % "4.11" - // lazy val scalaCompiler = Def.setting { "org.scala-lang" % "scala-compiler" % scalaVersion.value } lazy val scalaReflect = Def.setting { "org.scala-lang" % "scala-reflect" % scalaVersion.value } } diff --git a/project/Util.scala b/project/Util.scala new file mode 100644 index 000000000..26533a73b --- /dev/null +++ b/project/Util.scala @@ -0,0 +1,32 @@ +import sbt._ +import Keys._ +import sbt.IO + +import java.io.File + + +object Util { + + def versionLine(version: String): String = "version=" + version + def containsVersion(propFile: File, version: String): Boolean = IO.read(propFile).contains(versionLine(version)) + def lastCompilationTime(analysis: sbt.inc.Analysis): Long = + { + val lastCompilation = analysis.compilations.allCompilations.lastOption + lastCompilation.map(_.startTime) getOrElse 0L + } + + def generateVersionFile(version: String, dir: File, s: TaskStreams, analysis: sbt.inc.Analysis): Seq[File] = + { + import java.util.{ Date, TimeZone } + val formatter = new java.text.SimpleDateFormat("yyyyMMdd'T'HHmmss") + formatter.setTimeZone(TimeZone.getTimeZone("GMT")) + val timestamp = formatter.format(new Date) + val content = versionLine(version) + "\ntimestamp=" + timestamp + val f = dir / "xsbt.version.properties" + if (!f.exists || f.lastModified < lastCompilationTime(analysis) || !containsVersion(f, version)) { + s.log.info("Writing version information to " + f + " :\n" + content) + IO.write(f, content) + } + f :: Nil + } +} From 734923fbae5ad97753d908928f74182efd455197 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Wed, 2 Sep 2015 03:25:37 -0400 Subject: [PATCH 3/8] Bintray --- build.sbt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index 71e663210..d9374e157 100644 --- a/build.sbt +++ b/build.sbt @@ -13,8 +13,8 @@ def commonSettings: Seq[Setting[_]] = Seq( javacOptions in compile ++= Seq("-target", "6", "-source", "6", "-Xlint", "-Xlint:-serial"), incOptions := incOptions.value.withNameHashing(true), crossScalaVersions := Seq(scala210, scala211), - // bintrayPackage := (bintrayPackage in ThisBuild).value, - // bintrayRepository := (bintrayRepository in ThisBuild).value, + bintrayPackage := (bintrayPackage in ThisBuild).value, + bintrayRepository := (bintrayRepository in ThisBuild).value, resolvers += Resolver.sonatypeRepo("public") ) @@ -42,7 +42,8 @@ lazy val root = (project in file(".")). commonSettings, // rootSettings, publish := {}, - publishLocal := {} + publishLocal := {}, + publishArtifact := false ) lazy val lm = (project in file("librarymanagement")). From dbf9dc7450aba460b5aa98559bc9112486f24ec9 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 5 Sep 2015 05:32:07 -0400 Subject: [PATCH 4/8] bump to util 0.1.0-M2 and migrated to scalatest --- build.sbt | 9 +- .../src/main/scala/sbt/ComponentManager.scala | 1 + .../src/main/scala/sbt/ConflictWarning.scala | 1 + .../src/main/scala/sbt/ConvertResolver.scala | 1 + .../src/main/scala/sbt/Credentials.scala | 1 + .../src/main/scala/sbt/EvictionWarning.scala | 1 + .../src/main/scala/sbt/Ivy.scala | 2 + .../src/main/scala/sbt/IvyActions.scala | 1 + .../src/main/scala/sbt/IvyCache.scala | 1 + .../main/scala/sbt/IvyConfigurations.scala | 1 + .../src/main/scala/sbt/IvyLogger.scala | 1 + .../src/main/scala/sbt/IvyScala.scala | 2 + .../src/main/scala/sbt/JsonUtil.scala | 1 + .../src/main/scala/sbt/MakePom.scala | 1 + .../src/main/scala/sbt/UpdateOptions.scala | 1 + .../CachedResolutionResolveEngine.scala | 1 + .../scala/sbt/ivyint/SbtChainResolver.scala | 1 + .../src/test/scala/BaseIvySpecification.scala | 5 +- .../src/test/scala/CachedResolutionSpec.scala | 50 ++-- .../src/test/scala/ComponentManagerTest.scala | 93 +++---- .../src/test/scala/CrossVersionTest.scala | 228 +++++++++--------- .../src/test/scala/CustomPomParserTest.scala | 44 ++-- .../src/test/scala/DMSerializationSpec.scala | 88 +++---- .../src/test/scala/EvictionWarningSpec.scala | 108 ++++----- .../scala/InconsistentDuplicateSpec.scala | 30 +-- .../src/test/scala/MakePomSpec.scala | 95 ++++---- .../src/test/scala/ResolverTest.scala | 27 +-- .../src/test/scala/VersionNumberSpec.scala | 179 ++++++-------- project/Dependencies.scala | 5 +- 29 files changed, 473 insertions(+), 506 deletions(-) diff --git a/build.sbt b/build.sbt index d9374e157..92bca0d1a 100644 --- a/build.sbt +++ b/build.sbt @@ -40,7 +40,7 @@ lazy val root = (project in file(".")). bintrayPackage := "librarymanagement" )), commonSettings, - // rootSettings, + name := "LM Root", publish := {}, publishLocal := {}, publishArtifact := false @@ -49,8 +49,11 @@ lazy val root = (project in file(".")). lazy val lm = (project in file("librarymanagement")). settings( commonSettings, - libraryDependencies ++= Seq(utilLogging, utilLogging), - libraryDependencies ++= Seq(sbtIO, utilCollection, ivy, jsch, sbtSerialization, scalaReflect.value, launcherInterface), + libraryDependencies ++= Seq( + utilLogging, (utilLogging % Test).classifier("tests"), + sbtIO, (sbtIO % Test).classifier("tests"), + utilTesting % Test, + utilCollection, ivy, jsch, sbtSerialization, scalaReflect.value, launcherInterface), resourceGenerators in Compile <+= (version, resourceManaged, streams, compile in Compile) map Util.generateVersionFile, name := "librarymanagement" ) diff --git a/librarymanagement/src/main/scala/sbt/ComponentManager.scala b/librarymanagement/src/main/scala/sbt/ComponentManager.scala index bdf78b9ec..af4788ece 100644 --- a/librarymanagement/src/main/scala/sbt/ComponentManager.scala +++ b/librarymanagement/src/main/scala/sbt/ComponentManager.scala @@ -5,6 +5,7 @@ package sbt import java.io.{ File, FileOutputStream } import java.util.concurrent.Callable +import sbt.internal.util.Logger /** * A component manager provides access to the pieces of xsbt that are distributed as components. diff --git a/librarymanagement/src/main/scala/sbt/ConflictWarning.scala b/librarymanagement/src/main/scala/sbt/ConflictWarning.scala index a4e011736..182272476 100644 --- a/librarymanagement/src/main/scala/sbt/ConflictWarning.scala +++ b/librarymanagement/src/main/scala/sbt/ConflictWarning.scala @@ -1,6 +1,7 @@ package sbt import DependencyFilter._ +import sbt.internal.util.{ Logger, Level } /** * Provide warnings for cross version conflicts. diff --git a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala b/librarymanagement/src/main/scala/sbt/ConvertResolver.scala index 9e2f11f63..6658ae45d 100644 --- a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala +++ b/librarymanagement/src/main/scala/sbt/ConvertResolver.scala @@ -18,6 +18,7 @@ import java.io.{ IOException, File } import org.apache.ivy.util.{ FileUtil, ChecksumHelper } import org.apache.ivy.core.module.descriptor.{ Artifact => IArtifact } import sbt.io.IO +import sbt.internal.util.Logger private[sbt] object ConvertResolver { import UpdateOptions.ResolverConverter diff --git a/librarymanagement/src/main/scala/sbt/Credentials.scala b/librarymanagement/src/main/scala/sbt/Credentials.scala index 9cbe9d977..8cbb5ff43 100644 --- a/librarymanagement/src/main/scala/sbt/Credentials.scala +++ b/librarymanagement/src/main/scala/sbt/Credentials.scala @@ -6,6 +6,7 @@ package sbt import java.io.File import org.apache.ivy.util.url.CredentialsStore import sbt.io.IO +import sbt.internal.util.Logger object Credentials { def apply(realm: String, host: String, userName: String, passwd: String): Credentials = diff --git a/librarymanagement/src/main/scala/sbt/EvictionWarning.scala b/librarymanagement/src/main/scala/sbt/EvictionWarning.scala index 7a3bcaed8..55ebf052a 100644 --- a/librarymanagement/src/main/scala/sbt/EvictionWarning.scala +++ b/librarymanagement/src/main/scala/sbt/EvictionWarning.scala @@ -3,6 +3,7 @@ package sbt import collection.mutable import Configurations.Compile import ScalaArtifacts.{ LibraryID, CompilerID } +import sbt.internal.util.{ Logger, ShowLines } final class EvictionWarningOptions private[sbt] ( val configurations: Seq[Configuration], diff --git a/librarymanagement/src/main/scala/sbt/Ivy.scala b/librarymanagement/src/main/scala/sbt/Ivy.scala index e9ac5a23d..fbe38619c 100644 --- a/librarymanagement/src/main/scala/sbt/Ivy.scala +++ b/librarymanagement/src/main/scala/sbt/Ivy.scala @@ -39,6 +39,8 @@ import org.apache.ivy.util.extendable.ExtendableItem import scala.xml.{ NodeSeq, Text } import scala.collection.mutable +import sbt.internal.util.Logger + final class IvySbt(val configuration: IvyConfiguration) { import configuration.baseDirectory diff --git a/librarymanagement/src/main/scala/sbt/IvyActions.scala b/librarymanagement/src/main/scala/sbt/IvyActions.scala index e3cc20602..0a6547d76 100644 --- a/librarymanagement/src/main/scala/sbt/IvyActions.scala +++ b/librarymanagement/src/main/scala/sbt/IvyActions.scala @@ -17,6 +17,7 @@ import org.apache.ivy.core.report.ResolveReport import org.apache.ivy.core.resolve.ResolveOptions import org.apache.ivy.plugins.resolver.{ BasicResolver, DependencyResolver } import sbt.io.{ IO, PathFinder } +import sbt.internal.util.{ Logger, ShowLines, SourcePosition, LinePosition, RangePosition, LineRange } final class DeliverConfiguration(val deliverIvyPattern: String, val status: String, val configurations: Option[Seq[Configuration]], val logging: UpdateLogging.Value) final class PublishConfiguration(val ivyFile: Option[File], val resolverName: String, val artifacts: Map[Artifact, File], val checksums: Seq[String], val logging: UpdateLogging.Value, diff --git a/librarymanagement/src/main/scala/sbt/IvyCache.scala b/librarymanagement/src/main/scala/sbt/IvyCache.scala index 1e715a278..d9c9992f6 100644 --- a/librarymanagement/src/main/scala/sbt/IvyCache.scala +++ b/librarymanagement/src/main/scala/sbt/IvyCache.scala @@ -13,6 +13,7 @@ import org.apache.ivy.plugins.repository.{ ArtifactResourceResolver, Resource, R import org.apache.ivy.plugins.resolver.util.ResolvedResource import org.apache.ivy.util.FileUtil import sbt.io.Path +import sbt.internal.util.Logger class NotInCache(val id: ModuleID, cause: Throwable) extends RuntimeException(NotInCache(id, cause), cause) { diff --git a/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala b/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala index ed8df9546..8b2855423 100644 --- a/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala +++ b/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala @@ -6,6 +6,7 @@ package sbt import java.io.File import java.net.{ URI, URL } import scala.xml.NodeSeq +import sbt.internal.util.Logger final class IvyPaths(val baseDirectory: File, val ivyHome: Option[File]) { def withBase(newBaseDirectory: File) = new IvyPaths(newBaseDirectory, ivyHome) diff --git a/librarymanagement/src/main/scala/sbt/IvyLogger.scala b/librarymanagement/src/main/scala/sbt/IvyLogger.scala index 94268672e..56fa3561d 100644 --- a/librarymanagement/src/main/scala/sbt/IvyLogger.scala +++ b/librarymanagement/src/main/scala/sbt/IvyLogger.scala @@ -4,6 +4,7 @@ package sbt import org.apache.ivy.util.{ Message, MessageLogger, MessageLoggerEngine } +import sbt.internal.util.Logger /** Interface to Ivy logging. */ private final class IvyLoggerInterface(logger: Logger) extends MessageLogger { diff --git a/librarymanagement/src/main/scala/sbt/IvyScala.scala b/librarymanagement/src/main/scala/sbt/IvyScala.scala index fc9400174..f8e8c6a68 100644 --- a/librarymanagement/src/main/scala/sbt/IvyScala.scala +++ b/librarymanagement/src/main/scala/sbt/IvyScala.scala @@ -11,6 +11,8 @@ import org.apache.ivy.core.module.descriptor.{ DependencyDescriptor, DefaultModu import org.apache.ivy.core.module.id.{ ArtifactId, ModuleId, ModuleRevisionId } import org.apache.ivy.plugins.matcher.ExactPatternMatcher +import sbt.internal.util.Logger + object ScalaArtifacts { val Organization = "org.scala-lang" val LibraryID = "scala-library" diff --git a/librarymanagement/src/main/scala/sbt/JsonUtil.scala b/librarymanagement/src/main/scala/sbt/JsonUtil.scala index 6ee5bd68a..1e8dbd5e4 100644 --- a/librarymanagement/src/main/scala/sbt/JsonUtil.scala +++ b/librarymanagement/src/main/scala/sbt/JsonUtil.scala @@ -6,6 +6,7 @@ import org.apache.ivy.core import core.module.descriptor.ModuleDescriptor import sbt.serialization._ import java.net.{ URLEncoder, URLDecoder } +import sbt.internal.util.Logger private[sbt] object JsonUtil { def sbtOrgTemp = "org.scala-sbt.temp" diff --git a/librarymanagement/src/main/scala/sbt/MakePom.scala b/librarymanagement/src/main/scala/sbt/MakePom.scala index 472dd6cfb..663173e0d 100644 --- a/librarymanagement/src/main/scala/sbt/MakePom.scala +++ b/librarymanagement/src/main/scala/sbt/MakePom.scala @@ -8,6 +8,7 @@ package sbt import java.io.File +import sbt.internal.util.Logger import sbt.mavenint.PomExtraDependencyAttributes diff --git a/librarymanagement/src/main/scala/sbt/UpdateOptions.scala b/librarymanagement/src/main/scala/sbt/UpdateOptions.scala index 3a710026c..159472672 100644 --- a/librarymanagement/src/main/scala/sbt/UpdateOptions.scala +++ b/librarymanagement/src/main/scala/sbt/UpdateOptions.scala @@ -3,6 +3,7 @@ package sbt import java.io.File import org.apache.ivy.plugins.resolver.DependencyResolver import org.apache.ivy.core.settings.IvySettings +import sbt.internal.util.Logger /** * Represents configurable options for update task. diff --git a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala index ab0896649..34dd0c308 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala @@ -23,6 +23,7 @@ import Configurations.{ System => _, _ } import annotation.tailrec import scala.concurrent.duration._ import sbt.io.{ DirectoryFilter, Hash, IO, Path } +import sbt.internal.util.Logger private[sbt] object CachedResolutionResolveCache { def createID(organization: String, name: String, revision: String) = diff --git a/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala b/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala index 6b1f59a15..73328ce5c 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala +++ b/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala @@ -15,6 +15,7 @@ import org.apache.ivy.plugins.repository.url.URLResource import org.apache.ivy.plugins.resolver._ import org.apache.ivy.plugins.resolver.util.{ HasLatestStrategy, ResolvedResource } import org.apache.ivy.util.{ Message, StringUtils => IvyStringUtils } +import sbt.internal.util.Logger private[sbt] case class SbtChainResolver( name: String, diff --git a/librarymanagement/src/test/scala/BaseIvySpecification.scala b/librarymanagement/src/test/scala/BaseIvySpecification.scala index f4e21c4c0..8b46ccd9c 100644 --- a/librarymanagement/src/test/scala/BaseIvySpecification.scala +++ b/librarymanagement/src/test/scala/BaseIvySpecification.scala @@ -3,11 +3,12 @@ package sbt import sbt.io.Path._, Configurations._ import sbt.io.IO import java.io.File -import org.specs2._ import cross.CrossVersionUtil import sbt.ivyint.SbtChainResolver +import sbt.internal.util.{ Logger, ConsoleLogger } +import sbt.internal.util.UnitSpec -trait BaseIvySpecification extends Specification { +trait BaseIvySpecification extends UnitSpec { def currentBase: File = new File(".") def currentTarget: File = currentBase / "target" / "ivyhome" def currentManaged: File = currentBase / "target" / "lib_managed" diff --git a/librarymanagement/src/test/scala/CachedResolutionSpec.scala b/librarymanagement/src/test/scala/CachedResolutionSpec.scala index 719431282..c4282120a 100644 --- a/librarymanagement/src/test/scala/CachedResolutionSpec.scala +++ b/librarymanagement/src/test/scala/CachedResolutionSpec.scala @@ -1,33 +1,11 @@ package sbt -import org.specs2._ +import sbt.internal.util.ShowLines class CachedResolutionSpec extends BaseIvySpecification { - def is = args(sequential = true) ^ s2""" - - This is a specification to check the cached resolution - - Resolving the same module twice should - work $e1 - - Resolving the unsolvable module should - not work $e2 - - Resolving a module with a pseudo-conflict should - work $e3 - """ - - def commonsIo13 = ModuleID("commons-io", "commons-io", "1.3", Some("compile")) - def mavenCayennePlugin302 = ModuleID("org.apache.cayenne.plugins", "maven-cayenne-plugin", "3.0.2", Some("compile")) - def avro177 = ModuleID("org.apache.avro", "avro", "1.7.7", Some("compile")) - def dataAvro1940 = ModuleID("com.linkedin.pegasus", "data-avro", "1.9.40", Some("compile")) - def netty320 = ModuleID("org.jboss.netty", "netty", "3.2.0.Final", Some("compile")) - - def defaultOptions = EvictionWarningOptions.default - import ShowLines._ - def e1 = { + "Resolving the same module twice" should "work" in { cleanIvyCache() val m = module(ModuleID("com.example", "foo", "0.1.0", Some("compile")), Seq(commonsIo13), Some("2.10.2"), UpdateOptions().withCachedResolution(true)) @@ -38,10 +16,10 @@ class CachedResolutionSpec extends BaseIvySpecification { println(report) // second resolution reads from the minigraph println(report.configurations.head.modules.head.artifacts) - report.configurations.size must_== 3 + report.configurations.size shouldBe 3 } - def e2 = { + "Resolving the unsolvable module should" should "not work" in { // log.setLevel(Level.Debug) val m = module(ModuleID("com.example", "foo", "0.2.0", Some("compile")), Seq(mavenCayennePlugin302), Some("2.10.2"), UpdateOptions().withCachedResolution(true)) @@ -53,11 +31,11 @@ class CachedResolutionSpec extends BaseIvySpecification { ivyUpdateEither(m) match { case Right(_) => sys.error("this should've failed 2") case Left(uw) => - uw.lines must contain(allOf("\n\tNote: Unresolved dependencies path:", + uw.lines should contain allOf("\n\tNote: Unresolved dependencies path:", "\t\tfoundrylogic.vpp:vpp:2.2.1", "\t\t +- org.apache.cayenne:cayenne-tools:3.0.2", "\t\t +- org.apache.cayenne.plugins:maven-cayenne-plugin:3.0.2", - "\t\t +- com.example:foo:0.2.0")) + "\t\t +- com.example:foo:0.2.0") } } @@ -65,7 +43,7 @@ class CachedResolutionSpec extends BaseIvySpecification { // data-avro:1.9.40 depends on avro:1.4.0, which depends on netty:3.2.1.Final. // avro:1.4.0 will be evicted by avro:1.7.7. // #2046 says that netty:3.2.0.Final is incorrectly evicted by netty:3.2.1.Final - def e3 = { + "Resolving a module with a pseudo-conflict" should "work" in { // log.setLevel(Level.Debug) cleanIvyCache() val m = module(ModuleID("com.example", "foo", "0.3.0", Some("compile")), @@ -76,8 +54,16 @@ class CachedResolutionSpec extends BaseIvySpecification { cleanCachedResolutionCache(m) // second resolution reads from the minigraph val report = ivyUpdate(m) - val modules = report.configurations.head.modules - (modules must containMatch("""org\.jboss\.netty:netty:3\.2\.0.Final""")) and - (modules must not containMatch ("""org\.jboss\.netty:netty:3\.2\.1.Final""")) + val modules: Seq[String] = report.configurations.head.modules map {_.toString} + modules should contain("""org.jboss.netty:netty:3.2.0.Final""") + modules should not contain("""org.jboss.netty:netty:3.2.1.Final""") } + + def commonsIo13 = ModuleID("commons-io", "commons-io", "1.3", Some("compile")) + def mavenCayennePlugin302 = ModuleID("org.apache.cayenne.plugins", "maven-cayenne-plugin", "3.0.2", Some("compile")) + def avro177 = ModuleID("org.apache.avro", "avro", "1.7.7", Some("compile")) + def dataAvro1940 = ModuleID("com.linkedin.pegasus", "data-avro", "1.9.40", Some("compile")) + def netty320 = ModuleID("org.jboss.netty", "netty", "3.2.0.Final", Some("compile")) + + def defaultOptions = EvictionWarningOptions.default } diff --git a/librarymanagement/src/test/scala/ComponentManagerTest.scala b/librarymanagement/src/test/scala/ComponentManagerTest.scala index 29017b6a3..19c29cda8 100644 --- a/librarymanagement/src/test/scala/ComponentManagerTest.scala +++ b/librarymanagement/src/test/scala/ComponentManagerTest.scala @@ -2,73 +2,74 @@ package sbt import java.io.File import java.util.concurrent.Callable -import org.specs2._ -import mutable.Specification import sbt.io.IO.{ createDirectory, delete, touch, withTemporaryDirectory } import sbt.io.IO import org.apache.ivy.util.ChecksumHelper import IfMissing.Fail import xsbti.ComponentProvider +import sbt.internal.util.Logger +import sbt.internal.util.{ UnitSpec, TestLogger } // TODO - We need to re-enable this test. Right now, we dont' have a "stub" launcher for this. // This is testing something which uses a launcher interface, but was grabbing the underlying class directly // when it really should, instead, be stubbing out the underyling class. -object ComponentManagerTest extends Specification { +class ComponentManagerTest extends UnitSpec { val TestID = "manager-test" - "Component manager" should { - "throw an exception if 'file' is called for a non-existing component" in { - withManager { _.file(TestID)(Fail) must throwA[InvalidComponent] } + "Component manager" should "throw an exception if 'file' is called for a non-existing component" in { + withManager { manager => + intercept[InvalidComponent] { manager.file(TestID)(Fail) } } - "throw an exception if 'file' is called for an empty component" in { - withManager { manager => - manager.define(TestID, Nil) - (manager.file(TestID)(Fail)) must throwA[InvalidComponent] - } + } + it should "throw an exception if 'file' is called for an empty component" in { + withManager { manager => + manager.define(TestID, Nil) + intercept[InvalidComponent] { manager.file(TestID)(Fail) } } - "return the file for a single-file component" in { - withManager { manager => - val hash = defineFile(manager, TestID, "a") - checksum(manager.file(TestID)(Fail)) must beEqualTo(hash) - } + } + it should "return the file for a single-file component" in { + withManager { manager => + val hash = defineFile(manager, TestID, "a") + checksum(manager.file(TestID)(Fail)) shouldBe hash } - - "throw an exception if 'file' is called for multi-file component" in { - withManager { manager => - defineFiles(manager, TestID, "a", "b") - (manager.file(TestID)(Fail)) must throwA[InvalidComponent] - } + } + it should "throw an exception if 'file' is called for multi-file component" in { + withManager { manager => + defineFiles(manager, TestID, "a", "b") + intercept[InvalidComponent] { manager.file(TestID)(Fail) } } - "return the files for a multi-file component" in { - withManager { manager => - val hashes = defineFiles(manager, TestID, "a", "b") - checksum(manager.files(TestID)(Fail)) must containTheSameElementsAs(hashes) - } + } + it should "return the files for a multi-file component" in { + withManager { manager => + val hashes = defineFiles(manager, TestID, "a", "b") + checksum(manager.files(TestID)(Fail)) should contain theSameElementsAs (hashes) } - "return the files for a single-file component" in { - withManager { manager => - val hashes = defineFiles(manager, TestID, "a") - checksum(manager.files(TestID)(Fail)) must containTheSameElementsAs(hashes) - } + } + it should "return the files for a single-file component" in { + withManager { manager => + val hashes = defineFiles(manager, TestID, "a") + checksum(manager.files(TestID)(Fail)) should contain theSameElementsAs (hashes) } - "throw an exception if 'files' is called for a non-existing component" in { - withManager { _.files(TestID)(Fail) must throwA[InvalidComponent] } + } + it should "throw an exception if 'files' is called for a non-existing component" in { + withManager { manager => + intercept[InvalidComponent] { manager.files(TestID)(Fail) } } - - "properly cache a file and then retrieve it to an unresolved component" in { - withTemporaryDirectory { ivyHome => - withManagerHome(ivyHome) { definingManager => - val hash = defineFile(definingManager, TestID, "a") - try { - definingManager.cache(TestID) - withManagerHome(ivyHome) { usingManager => - checksum(usingManager.file(TestID)(Fail)) must beEqualTo(hash) - } - } finally { definingManager.clearCache(TestID) } - } + } + it should "properly cache a file and then retrieve it to an unresolved component" in { + withTemporaryDirectory { ivyHome => + withManagerHome(ivyHome) { definingManager => + val hash = defineFile(definingManager, TestID, "a") + try { + definingManager.cache(TestID) + withManagerHome(ivyHome) { usingManager => + checksum(usingManager.file(TestID)(Fail)) shouldBe hash + } + } finally { definingManager.clearCache(TestID) } } } } + private def checksum(files: Iterable[File]): Seq[String] = files.map(checksum).toSeq private def checksum(file: File): String = if (file.exists) ChecksumHelper.computeAsString(file, "sha1") else "" private def defineFile(manager: ComponentManager, id: String, name: String): String = createFile(manager, id, name)(checksum) diff --git a/librarymanagement/src/test/scala/CrossVersionTest.scala b/librarymanagement/src/test/scala/CrossVersionTest.scala index 364d6c67e..33e1f62f2 100644 --- a/librarymanagement/src/test/scala/CrossVersionTest.scala +++ b/librarymanagement/src/test/scala/CrossVersionTest.scala @@ -1,122 +1,118 @@ package sbt import java.io.File -import org.specs2._ -import mutable.Specification +import sbt.internal.util.UnitSpec -object CrossVersionTest extends Specification { - "Cross version" should { - "return sbt API for xyz as None" in { - CrossVersion.sbtApiVersion("xyz") must_== None - } - "return sbt API for 0.12 as None" in { - CrossVersion.sbtApiVersion("0.12") must_== None - } - "return sbt API for 0.12.0-SNAPSHOT as None" in { - CrossVersion.sbtApiVersion("0.12.0-SNAPSHOT") must_== None - } - "return sbt API for 0.12.0-RC1 as Some((0, 12))" in { - CrossVersion.sbtApiVersion("0.12.0-RC1") must_== Some((0, 12)) - } - "return sbt API for 0.12.0 as Some((0, 12))" in { - CrossVersion.sbtApiVersion("0.12.0") must_== Some((0, 12)) - } - "return sbt API for 0.12.1-SNAPSHOT as Some((0, 12))" in { - CrossVersion.sbtApiVersion("0.12.1-SNAPSHOT") must_== Some((0, 12)) - } - "return sbt API for 0.12.1-RC1 as Some((0, 12))" in { - CrossVersion.sbtApiVersion("0.12.1-RC1") must_== Some((0, 12)) - } - "return sbt API for 0.12.1 as Some((0, 12))" in { - CrossVersion.sbtApiVersion("0.12.1") must_== Some((0, 12)) - } - "return sbt API compatibility for 0.12.0-M1 as false" in { - CrossVersion.isSbtApiCompatible("0.12.0-M1") must_== false - } - "return sbt API compatibility for 0.12.0-RC1 as true" in { - CrossVersion.isSbtApiCompatible("0.12.0-RC1") must_== true - } - "return sbt API compatibility for 0.12.1-RC1 as true" in { - CrossVersion.isSbtApiCompatible("0.12.1-RC1") must_== true - } - "return binary sbt version for 0.11.3 as 0.11.3" in { - CrossVersion.binarySbtVersion("0.11.3") must_== "0.11.3" - } - "return binary sbt version for 0.12.0-M1 as 0.12.0-M1" in { - CrossVersion.binarySbtVersion("0.12.0-M1") must_== "0.12.0-M1" - } - "return binary sbt version for 0.12.0-RC1 as 0.12" in { - CrossVersion.binarySbtVersion("0.12.0-RC1") must_== "0.12" - } - "return binary sbt version for 0.12.0 as 0.12" in { - CrossVersion.binarySbtVersion("0.12.0") must_== "0.12" - } - "return binary sbt version for 0.12.1-SNAPSHOT as 0.12" in { - CrossVersion.binarySbtVersion("0.12.1-SNAPSHOT") must_== "0.12" - } - "return binary sbt version for 0.12.1-RC1 as 0.12" in { - CrossVersion.binarySbtVersion("0.12.1-RC1") must_== "0.12" - } - "return binary sbt version for 0.12.1 as 0.12" in { - CrossVersion.binarySbtVersion("0.12.1") must_== "0.12" - } - - "return Scala API for xyz as None" in { - CrossVersion.scalaApiVersion("xyz") must_== None - } - "return Scala API for 2.10 as None" in { - CrossVersion.scalaApiVersion("2.10") must_== None - } - "return Scala API for 2.10.0-SNAPSHOT as None" in { - CrossVersion.scalaApiVersion("2.10.0-SNAPSHOT") must_== None - } - "return Scala API for 2.10.0-RC1 as None" in { - CrossVersion.scalaApiVersion("2.10.0-RC1") must_== None - } - "return Scala API for 2.10.0 as Some((2, 10))" in { - CrossVersion.scalaApiVersion("2.10.0") must_== Some((2, 10)) - } - "return Scala API for 2.10.0-1 as Some((2, 10))" in { - CrossVersion.scalaApiVersion("2.10.0-1") must_== Some((2, 10)) - } - "return Scala API for 2.10.1-SNAPSHOT as Some((2, 10))" in { - CrossVersion.scalaApiVersion("2.10.1-SNAPSHOT") must_== Some((2, 10)) - } - "return Scala API for 2.10.1-RC1 as Some((2, 10))" in { - CrossVersion.scalaApiVersion("2.10.1-RC1") must_== Some((2, 10)) - } - "return Scala API for 2.10.1 as Some((2, 10))" in { - CrossVersion.scalaApiVersion("2.10.1") must_== Some((2, 10)) - } - "return Scala API compatibility for 2.10.0-M1 as false" in { - CrossVersion.isScalaApiCompatible("2.10.0-M1") must_== false - } - "return Scala API compatibility for 2.10.0-RC1 as false" in { - CrossVersion.isScalaApiCompatible("2.10.0-RC1") must_== false - } - "return Scala API compatibility for 2.10.1-RC1 as false" in { - CrossVersion.isScalaApiCompatible("2.10.1-RC1") must_== true - } - "return binary Scala version for 2.9.2 as 2.9.2" in { - CrossVersion.binaryScalaVersion("2.9.2") must_== "2.9.2" - } - "return binary Scala version for 2.10.0-M1 as 2.10.0-M1" in { - CrossVersion.binaryScalaVersion("2.10.0-M1") must_== "2.10.0-M1" - } - "return binary Scala version for 2.10.0-RC1 as 2.10.0-RC1" in { - CrossVersion.binaryScalaVersion("2.10.0-RC1") must_== "2.10.0-RC1" - } - "return binary Scala version for 2.10.0 as 2.10" in { - CrossVersion.binaryScalaVersion("2.10.0") must_== "2.10" - } - "return binary Scala version for 2.10.1-M1 as 2.10" in { - CrossVersion.binaryScalaVersion("2.10.1-M1") must_== "2.10" - } - "return binary Scala version for 2.10.1-RC1 as 2.10" in { - CrossVersion.binaryScalaVersion("2.10.1-RC1") must_== "2.10" - } - "return binary Scala version for 2.10.1 as 2.10" in { - CrossVersion.binaryScalaVersion("2.10.1") must_== "2.10" - } +class CrossVersionTest extends UnitSpec { + "Cross version" should "return sbt API for xyz as None" in { + CrossVersion.sbtApiVersion("xyz") shouldBe None + } + it should "return sbt API for 0.12 as None" in { + CrossVersion.sbtApiVersion("0.12") shouldBe None + } + it should "return sbt API for 0.12.0-SNAPSHOT as None" in { + CrossVersion.sbtApiVersion("0.12.0-SNAPSHOT") shouldBe None + } + it should "return sbt API for 0.12.0-RC1 as Some((0, 12))" in { + CrossVersion.sbtApiVersion("0.12.0-RC1") shouldBe Some((0, 12)) + } + it should "return sbt API for 0.12.0 as Some((0, 12))" in { + CrossVersion.sbtApiVersion("0.12.0") shouldBe Some((0, 12)) + } + it should "return sbt API for 0.12.1-SNAPSHOT as Some((0, 12))" in { + CrossVersion.sbtApiVersion("0.12.1-SNAPSHOT") shouldBe Some((0, 12)) + } + it should "return sbt API for 0.12.1-RC1 as Some((0, 12))" in { + CrossVersion.sbtApiVersion("0.12.1-RC1") shouldBe Some((0, 12)) + } + it should "return sbt API for 0.12.1 as Some((0, 12))" in { + CrossVersion.sbtApiVersion("0.12.1") shouldBe Some((0, 12)) + } + it should "return sbt API compatibility for 0.12.0-M1 as false" in { + CrossVersion.isSbtApiCompatible("0.12.0-M1") shouldBe false + } + it should "return sbt API compatibility for 0.12.0-RC1 as true" in { + CrossVersion.isSbtApiCompatible("0.12.0-RC1") shouldBe true + } + it should "return sbt API compatibility for 0.12.1-RC1 as true" in { + CrossVersion.isSbtApiCompatible("0.12.1-RC1") shouldBe true + } + it should "return binary sbt version for 0.11.3 as 0.11.3" in { + CrossVersion.binarySbtVersion("0.11.3") shouldBe "0.11.3" + } + it should "return binary sbt version for 0.12.0-M1 as 0.12.0-M1" in { + CrossVersion.binarySbtVersion("0.12.0-M1") shouldBe "0.12.0-M1" + } + it should "return binary sbt version for 0.12.0-RC1 as 0.12" in { + CrossVersion.binarySbtVersion("0.12.0-RC1") shouldBe "0.12" + } + it should "return binary sbt version for 0.12.0 as 0.12" in { + CrossVersion.binarySbtVersion("0.12.0") shouldBe "0.12" + } + it should "return binary sbt version for 0.12.1-SNAPSHOT as 0.12" in { + CrossVersion.binarySbtVersion("0.12.1-SNAPSHOT") shouldBe "0.12" + } + it should "return binary sbt version for 0.12.1-RC1 as 0.12" in { + CrossVersion.binarySbtVersion("0.12.1-RC1") shouldBe "0.12" + } + it should "return binary sbt version for 0.12.1 as 0.12" in { + CrossVersion.binarySbtVersion("0.12.1") shouldBe "0.12" + } + it should "return Scala API for xyz as None" in { + CrossVersion.scalaApiVersion("xyz") shouldBe None + } + it should "return Scala API for 2.10 as None" in { + CrossVersion.scalaApiVersion("2.10") shouldBe None + } + it should "return Scala API for 2.10.0-SNAPSHOT as None" in { + CrossVersion.scalaApiVersion("2.10.0-SNAPSHOT") shouldBe None + } + it should "return Scala API for 2.10.0-RC1 as None" in { + CrossVersion.scalaApiVersion("2.10.0-RC1") shouldBe None + } + it should "return Scala API for 2.10.0 as Some((2, 10))" in { + CrossVersion.scalaApiVersion("2.10.0") shouldBe Some((2, 10)) + } + it should "return Scala API for 2.10.0-1 as Some((2, 10))" in { + CrossVersion.scalaApiVersion("2.10.0-1") shouldBe Some((2, 10)) + } + it should "return Scala API for 2.10.1-SNAPSHOT as Some((2, 10))" in { + CrossVersion.scalaApiVersion("2.10.1-SNAPSHOT") shouldBe Some((2, 10)) + } + it should "return Scala API for 2.10.1-RC1 as Some((2, 10))" in { + CrossVersion.scalaApiVersion("2.10.1-RC1") shouldBe Some((2, 10)) + } + it should "return Scala API for 2.10.1 as Some((2, 10))" in { + CrossVersion.scalaApiVersion("2.10.1") shouldBe Some((2, 10)) + } + it should "return Scala API compatibility for 2.10.0-M1 as false" in { + CrossVersion.isScalaApiCompatible("2.10.0-M1") shouldBe false + } + it should "return Scala API compatibility for 2.10.0-RC1 as false" in { + CrossVersion.isScalaApiCompatible("2.10.0-RC1") shouldBe false + } + it should "return Scala API compatibility for 2.10.1-RC1 as false" in { + CrossVersion.isScalaApiCompatible("2.10.1-RC1") shouldBe true + } + it should "return binary Scala version for 2.9.2 as 2.9.2" in { + CrossVersion.binaryScalaVersion("2.9.2") shouldBe "2.9.2" + } + it should "return binary Scala version for 2.10.0-M1 as 2.10.0-M1" in { + CrossVersion.binaryScalaVersion("2.10.0-M1") shouldBe "2.10.0-M1" + } + it should "return binary Scala version for 2.10.0-RC1 as 2.10.0-RC1" in { + CrossVersion.binaryScalaVersion("2.10.0-RC1") shouldBe "2.10.0-RC1" + } + it should "return binary Scala version for 2.10.0 as 2.10" in { + CrossVersion.binaryScalaVersion("2.10.0") shouldBe "2.10" + } + it should "return binary Scala version for 2.10.1-M1 as 2.10" in { + CrossVersion.binaryScalaVersion("2.10.1-M1") shouldBe "2.10" + } + it should "return binary Scala version for 2.10.1-RC1 as 2.10" in { + CrossVersion.binaryScalaVersion("2.10.1-RC1") shouldBe "2.10" + } + it should "return binary Scala version for 2.10.1 as 2.10" in { + CrossVersion.binaryScalaVersion("2.10.1") shouldBe "2.10" } } diff --git a/librarymanagement/src/test/scala/CustomPomParserTest.scala b/librarymanagement/src/test/scala/CustomPomParserTest.scala index 262e4a22b..c2bf9180b 100644 --- a/librarymanagement/src/test/scala/CustomPomParserTest.scala +++ b/librarymanagement/src/test/scala/CustomPomParserTest.scala @@ -2,36 +2,32 @@ import java.io.File import org.apache.ivy.core.module.descriptor.{ Artifact => IvyArtifact } import org.apache.ivy.core.module.id.ModuleRevisionId import org.apache.ivy.core.resolve.ResolveOptions -import org.specs2.mutable.Specification import sbt._ import sbt.io.IO.withTemporaryDirectory +import sbt.internal.util.{ Logger, ConsoleLogger } +import sbt.internal.util.UnitSpec -object CustomPomParserTest extends Specification { +class CustomPomParserTest extends UnitSpec { + "CustomPomParser" should "resolve an artifact with packaging 'scala-jar' as a regular jar file." in { + val log = ConsoleLogger() + withTemporaryDirectory { cacheDir => + val repoUrl = getClass.getResource("/test-maven-repo") + val local = MavenRepository("Test Repo", repoUrl.toExternalForm) + val paths = new IvyPaths(new File("."), Some(cacheDir)) + val conf = new InlineIvyConfiguration(paths, Seq(local), Nil, Nil, false, None, Seq("sha1", "md5"), None, log) + val ivySbt = new IvySbt(conf) + val resolveOpts = new ResolveOptions().setConfs(Array("default")) + val mrid = ModuleRevisionId.newInstance("com.test", "test-artifact", "1.0.0-SNAPSHOT") - "CustomPomParser" should { - "resolve an artifact with packaging 'scala-jar' as a regular jar file." in { - val log = ConsoleLogger() - withTemporaryDirectory { cacheDir => - val repoUrl = getClass.getResource("/test-maven-repo") - val local = MavenRepository("Test Repo", repoUrl.toExternalForm) - val paths = new IvyPaths(new File("."), Some(cacheDir)) - val conf = new InlineIvyConfiguration(paths, Seq(local), Nil, Nil, false, None, Seq("sha1", "md5"), None, log) - val ivySbt = new IvySbt(conf) - val resolveOpts = new ResolveOptions().setConfs(Array("default")) - val mrid = ModuleRevisionId.newInstance("com.test", "test-artifact", "1.0.0-SNAPSHOT") - - val resolveReport = ivySbt.withIvy(log) { ivy => - ivy.resolve(mrid, resolveOpts, true) - } - - resolveReport.hasError must beFalse - resolveReport.getArtifacts.size() must beEqualTo(1) - val artifact: IvyArtifact = resolveReport.getArtifacts.asInstanceOf[java.util.List[IvyArtifact]].get(0) - artifact.getModuleRevisionId must beEqualTo(mrid) - artifact.getExt must beEqualTo("jar") + val resolveReport = ivySbt.withIvy(log) { ivy => + ivy.resolve(mrid, resolveOpts, true) } + resolveReport.hasError shouldBe false + resolveReport.getArtifacts.size() shouldBe 1 + val artifact: IvyArtifact = resolveReport.getArtifacts.asInstanceOf[java.util.List[IvyArtifact]].get(0) + artifact.getModuleRevisionId shouldBe mrid + artifact.getExt shouldBe "jar" } } - } diff --git a/librarymanagement/src/test/scala/DMSerializationSpec.scala b/librarymanagement/src/test/scala/DMSerializationSpec.scala index bf62de10b..532fae381 100644 --- a/librarymanagement/src/test/scala/DMSerializationSpec.scala +++ b/librarymanagement/src/test/scala/DMSerializationSpec.scala @@ -1,46 +1,50 @@ package sbt -import org.specs2._ -import matcher.MatchResult import java.net.URL import java.io.File import sbt.serialization._ +import sbt.internal.util.UnitSpec -class DMSerializationSpec extends Specification { - def is = sequential ^ s2""" - - This is a specification to check the serialization of dependency graph. - - CrossVersion.full should - ${roundtripStr(CrossVersion.full: sbt.CrossVersion)} - CrossVersion.binary should - ${roundtripStr(CrossVersion.binary: sbt.CrossVersion)} - CrossVersion.Disabled should - ${roundtrip(CrossVersion.Disabled: sbt.CrossVersion)} - - Artifact("foo") should - ${roundtrip(Artifact("foo"))} - Artifact("foo", "sources") should - ${roundtrip(Artifact("foo", "sources"))} - Artifact.pom("foo") should - ${roundtrip(Artifact.pom("foo"))} - Artifact("foo", url("http://example.com/")) should - ${roundtrip(Artifact("foo", new URL("http://example.com/")))} - Artifact("foo").extra(("key", "value")) should - ${roundtrip(Artifact("foo").extra(("key", "value")))} - - ModuleID("org", "name", "1.0") should - ${roundtrip(ModuleID("org", "name", "1.0"))} - - ModuleReport(ModuleID("org", "name", "1.0"), Nil, Nil) should - ${roundtripStr(ModuleReport(ModuleID("org", "name", "1.0"), Nil, Nil))} - Organization artifact report should - ${roundtripStr(organizationArtifactReportExample)} - Configuration report should - ${roundtripStr(configurationReportExample)} - Update report should - ${roundtripStr(updateReportExample)} - """ +class DMSerializationSpec extends UnitSpec { + "CrossVersion.full" should "roundtrip" in { + roundtripStr(CrossVersion.full: sbt.CrossVersion) + } + "CrossVersion.binary" should "roundtrip" in { + roundtripStr(CrossVersion.binary: sbt.CrossVersion) + } + "CrossVersion.Disabled" should "roundtrip" in { + roundtrip(CrossVersion.Disabled: sbt.CrossVersion) + } + """Artifact("foo")""" should "roundtrip" in { + roundtrip(Artifact("foo")) + } + """Artifact("foo", "sources")""" should "roundtrip" in { + roundtrip(Artifact("foo", "sources")) + } + """Artifact.pom("foo")""" should "roundtrip" in { + roundtrip(Artifact.pom("foo")) + } + """Artifact("foo", url("http://example.com/"))""" should "roundtrip" in { + roundtrip(Artifact("foo", new URL("http://example.com/"))) + } + """Artifact("foo").extra(("key", "value"))""" should "roundtrip" in { + roundtrip(Artifact("foo").extra(("key", "value"))) + } + """ModuleID("org", "name", "1.0")""" should "roundtrip" in { + roundtrip(ModuleID("org", "name", "1.0")) + } + """ModuleReport(ModuleID("org", "name", "1.0"), Nil, Nil)""" should "roundtrip" in { + roundtripStr(ModuleReport(ModuleID("org", "name", "1.0"), Nil, Nil)) + } + "Organization artifact report" should "roundtrip" in { + roundtripStr(organizationArtifactReportExample) + } + "Configuration report" should "roundtrip" in { + roundtripStr(configurationReportExample) + } + "Update report" should "roundtrip" in { + roundtripStr(updateReportExample) + } lazy val updateReportExample = new UpdateReport(new File("./foo"), Vector(configurationReportExample), @@ -53,11 +57,11 @@ class DMSerializationSpec extends Specification { lazy val moduleReportExample = ModuleReport(ModuleID("org", "name", "1.0"), Nil, Nil) - def roundtrip[A: Pickler: Unpickler](a: A) = - roundtripBuilder(a) { _ must_== _ } - def roundtripStr[A: Pickler: Unpickler](a: A) = - roundtripBuilder(a) { _.toString must_== _.toString } - def roundtripBuilder[A: Pickler: Unpickler](a: A)(f: (A, A) => MatchResult[Any]): MatchResult[Any] = + def roundtrip[A: Pickler: Unpickler](a: A): Unit = + roundtripBuilder(a) { _ shouldBe _ } + def roundtripStr[A: Pickler: Unpickler](a: A): Unit = + roundtripBuilder(a) { _.toString shouldBe _.toString } + def roundtripBuilder[A: Pickler: Unpickler](a: A)(f: (A, A) => Unit): Unit = { val json = toJsonString(a) println(json) diff --git a/librarymanagement/src/test/scala/EvictionWarningSpec.scala b/librarymanagement/src/test/scala/EvictionWarningSpec.scala index 0e1e3dd2c..a2f30fb3b 100644 --- a/librarymanagement/src/test/scala/EvictionWarningSpec.scala +++ b/librarymanagement/src/test/scala/EvictionWarningSpec.scala @@ -1,52 +1,40 @@ package sbt -import org.specs2._ - class EvictionWarningSpec extends BaseIvySpecification { - def is = s2""" + // This is a specification to check the eviction warnings - This is a specification to check the eviction warnings + "Eviction of scala-library whose scalaVersion" should "be detected" in scalaVersionWarn1 + it should "not be detected if it's diabled" in scalaVersionWarn2 + it should "print out message about the eviction" in scalaVersionWarn3 + it should "print out message about the eviction with callers" in scalaVersionWarn4 - Eviction of scala-library whose scalaVersion should - be detected $scalaVersionWarn1 - not be detected if it's diabled $scalaVersionWarn2 - print out message about the eviction $scalaVersionWarn3 - print out message about the eviction with callers $scalaVersionWarn4 + """Including two (suspect) binary incompatible Java libraries to + direct dependencies""" should "be detected as eviction" in javaLibWarn1 + it should "not be detected if it's disabled" in javaLibWarn2 + it should "print out message about the eviction" in javaLibWarn3 + it should "print out message about the eviction with callers" in javaLibWarn4 - Including two (suspect) binary incompatible Java libraries to - direct dependencies should - be detected as eviction $javaLibWarn1 - not be detected if it's disabled $javaLibWarn2 - print out message about the eviction $javaLibWarn3 - print out message about the eviction with callers $javaLibWarn4 + """Including two (suspect) binary compatible Java libraries to + direct dependencies""" should "not be detected as eviction" in javaLibNoWarn1 + it should "print out message about the eviction" in javaLibNoWarn2 - Including two (suspect) binary compatible Java libraries to - direct dependencies should - not be detected as eviction $javaLibNoWarn1 - print out message about the eviction $javaLibNoWarn2 + """Including two (suspect) transitively binary incompatible Java libraries to + direct dependencies""" should "be not detected as eviction" in javaLibTransitiveWarn1 + it should "be detected if it's enabled" in javaLibTransitiveWarn2 + it should "print out message about the eviction if it's enabled" in javaLibTransitiveWarn3 - Including two (suspect) transitively binary incompatible Java libraries to - direct dependencies should - be not detected as eviction $javaLibTransitiveWarn1 - be detected if it's enabled $javaLibTransitiveWarn2 - print out message about the eviction if it's enabled $javaLibTransitiveWarn3 + """Including two (suspect) binary incompatible Scala libraries to + direct dependencies""" should "be detected as eviction" in scalaLibWarn1 + it should "print out message about the eviction" in scalaLibWarn2 - Including two (suspect) binary incompatible Scala libraries to - direct dependencies should - be detected as eviction $scalaLibWarn1 - print out message about the eviction $scalaLibWarn2 + """Including two (suspect) binary compatible Scala libraries to + direct dependencies""" should "not be detected as eviction" in scalaLibNoWarn1 + it should "print out message about the eviction" in scalaLibNoWarn2 - Including two (suspect) binary compatible Scala libraries to - direct dependencies should - not be detected as eviction $scalaLibNoWarn1 - print out message about the eviction $scalaLibNoWarn2 - - Including two (suspect) transitively binary incompatible Scala libraries to - direct dependencies should - be not detected as eviction $scalaLibTransitiveWarn1 - be detected if it's enabled $scalaLibTransitiveWarn2 - print out message about the eviction if it's enabled $scalaLibTransitiveWarn3 - """ + """Including two (suspect) transitively binary incompatible Scala libraries to + direct dependencies""" should "be not detected as eviction" in scalaLibTransitiveWarn1 + it should "be detected if it's enabled" in scalaLibTransitiveWarn2 + it should "print out message about the eviction if it's enabled" in scalaLibTransitiveWarn3 def akkaActor214 = ModuleID("com.typesafe.akka", "akka-actor", "2.1.4", Some("compile")) cross CrossVersion.binary def akkaActor230 = ModuleID("com.typesafe.akka", "akka-actor", "2.3.0", Some("compile")) cross CrossVersion.binary @@ -64,26 +52,26 @@ class EvictionWarningSpec extends BaseIvySpecification { def defaultOptions = EvictionWarningOptions.default - import ShowLines._ + import sbt.internal.util.ShowLines._ def scalaVersionDeps = Seq(scala2102, akkaActor230) def scalaVersionWarn1 = { val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).scalaEvictions must have size (1) + EvictionWarning(m, defaultOptions, report, log).scalaEvictions should have size(1) } def scalaVersionWarn2 = { val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withWarnScalaVersionEviction(false), report, log).scalaEvictions must have size (0) + EvictionWarning(m, defaultOptions.withWarnScalaVersionEviction(false), report, log).scalaEvictions should have size(0) } def scalaVersionWarn3 = { val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).lines must_== + EvictionWarning(m, defaultOptions, report, log).lines shouldBe List("Scala version was updated by one of library dependencies:", "\t* org.scala-lang:scala-library:2.10.2 -> 2.10.3", "To force scalaVersion, add the following:", @@ -94,7 +82,7 @@ class EvictionWarningSpec extends BaseIvySpecification { def scalaVersionWarn4 = { val m = module(defaultModuleId, scalaVersionDeps, Some("2.10.2")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines must_== + EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines shouldBe List("Scala version was updated by one of library dependencies:", "\t* org.scala-lang:scala-library:2.10.2 -> 2.10.3 (caller: com.typesafe.akka:akka-actor_2.10:2.3.0, com.example:foo:0.1.0)", "To force scalaVersion, add the following:", @@ -106,19 +94,19 @@ class EvictionWarningSpec extends BaseIvySpecification { def javaLibWarn1 = { val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (1) + EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(1) } def javaLibWarn2 = { val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withWarnDirectEvictions(false), report, log).reportedEvictions must have size (0) + EvictionWarning(m, defaultOptions.withWarnDirectEvictions(false), report, log).reportedEvictions should have size(0) } def javaLibWarn3 = { val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).lines must_== + EvictionWarning(m, defaultOptions, report, log).lines shouldBe List("There may be incompatibilities among your library dependencies.", "Here are some of the libraries that were evicted:", "\t* commons-io:commons-io:1.4 -> 2.4", @@ -128,7 +116,7 @@ class EvictionWarningSpec extends BaseIvySpecification { def javaLibWarn4 = { val m = module(defaultModuleId, javaLibDirectDeps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines must_== + EvictionWarning(m, defaultOptions.withShowCallers(true), report, log).lines shouldBe List("There may be incompatibilities among your library dependencies.", "Here are some of the libraries that were evicted:", "\t* commons-io:commons-io:1.4 -> 2.4 (caller: com.example:foo:0.1.0)") @@ -138,14 +126,14 @@ class EvictionWarningSpec extends BaseIvySpecification { val deps = Seq(commonsIo14, commonsIo13) val m = module(defaultModuleId, deps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0) + EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0) } def javaLibNoWarn2 = { val deps = Seq(commonsIo14, commonsIo13) val m = module(defaultModuleId, deps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).lines must_== Nil + EvictionWarning(m, defaultOptions, report, log).lines shouldBe Nil } def javaLibTransitiveDeps = Seq(unfilteredUploads080, bnfparser10) @@ -153,19 +141,19 @@ class EvictionWarningSpec extends BaseIvySpecification { def javaLibTransitiveWarn1 = { val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0) + EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0) } def javaLibTransitiveWarn2 = { val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions must have size (1) + EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions should have size(1) } def javaLibTransitiveWarn3 = { val m = module(defaultModuleId, javaLibTransitiveDeps, Some("2.10.3")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines must_== + EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines shouldBe List("There may be incompatibilities among your library dependencies.", "Here are some of the libraries that were evicted:", "\t* commons-io:commons-io:1.4 -> 2.4 (caller: ca.gobits.bnf:bnfparser:1.0, net.databinder:unfiltered-uploads_2.10:0.8.0)") @@ -175,14 +163,14 @@ class EvictionWarningSpec extends BaseIvySpecification { val deps = Seq(scala2104, akkaActor214, akkaActor234) val m = module(defaultModuleId, deps, Some("2.10.4")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (1) + EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(1) } def scalaLibWarn2 = { val deps = Seq(scala2104, akkaActor214, akkaActor234) val m = module(defaultModuleId, deps, Some("2.10.4")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).lines must_== + EvictionWarning(m, defaultOptions, report, log).lines shouldBe List("There may be incompatibilities among your library dependencies.", "Here are some of the libraries that were evicted:", "\t* com.typesafe.akka:akka-actor_2.10:2.1.4 -> 2.3.4", @@ -193,14 +181,14 @@ class EvictionWarningSpec extends BaseIvySpecification { val deps = Seq(scala2104, akkaActor230, akkaActor234) val m = module(defaultModuleId, deps, Some("2.10.4")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0) + EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0) } def scalaLibNoWarn2 = { val deps = Seq(scala2104, akkaActor230, akkaActor234) val m = module(defaultModuleId, deps, Some("2.10.4")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).lines must_== Nil + EvictionWarning(m, defaultOptions, report, log).lines shouldBe Nil } def scalaLibTransitiveDeps = Seq(scala2104, bananaSesame04, akkaRemote234) @@ -208,19 +196,19 @@ class EvictionWarningSpec extends BaseIvySpecification { def scalaLibTransitiveWarn1 = { val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions, report, log).reportedEvictions must have size (0) + EvictionWarning(m, defaultOptions, report, log).reportedEvictions should have size(0) } def scalaLibTransitiveWarn2 = { val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions must have size (1) + EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true), report, log).reportedEvictions should have size(1) } def scalaLibTransitiveWarn3 = { val m = module(defaultModuleId, scalaLibTransitiveDeps, Some("2.10.4")) val report = ivyUpdate(m) - EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines must_== + EvictionWarning(m, defaultOptions.withWarnTransitiveEvictions(true).withShowCallers(true), report, log).lines shouldBe List("There may be incompatibilities among your library dependencies.", "Here are some of the libraries that were evicted:", "\t* com.typesafe.akka:akka-actor_2.10:2.1.4 -> 2.3.4 (caller: com.typesafe.akka:akka-remote_2.10:2.3.4, org.w3:banana-sesame_2.10:0.4, org.w3:banana-rdf_2.10:0.4)") diff --git a/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala b/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala index b9f4a05ef..343149e85 100644 --- a/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala +++ b/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala @@ -1,28 +1,20 @@ package sbt -import org.specs2._ +import sbt.internal.util.UnitSpec -class InconsistentDuplicateSpec extends Specification { - def is = s2""" +// This is a specification to check the inconsistent duplicate warnings +class InconsistentDuplicateSpec extends UnitSpec { + "Duplicate with different version" should "be warned" in { + IvySbt.inconsistentDuplicateWarning(Seq(akkaActor214, akkaActor230)) shouldBe + List("Multiple dependencies with the same organization/name but different versions. To avoid conflict, pick one version:", + " * com.typesafe.akka:akka-actor:(2.1.4, 2.3.0)") + } - This is a specification to check the inconsistent duplicate warnings - - Duplicate with different version should - be warned $warn1 - - Duplicate with same version should - not be warned $nodupe1 - """ + "Duplicate with same version" should "not be warned" in { + IvySbt.inconsistentDuplicateWarning(Seq(akkaActor230Test, akkaActor230)) shouldBe Nil + } def akkaActor214 = ModuleID("com.typesafe.akka", "akka-actor", "2.1.4", Some("compile")) cross CrossVersion.binary def akkaActor230 = ModuleID("com.typesafe.akka", "akka-actor", "2.3.0", Some("compile")) cross CrossVersion.binary def akkaActor230Test = ModuleID("com.typesafe.akka", "akka-actor", "2.3.0", Some("test")) cross CrossVersion.binary - - def warn1 = - IvySbt.inconsistentDuplicateWarning(Seq(akkaActor214, akkaActor230)) must_== - List("Multiple dependencies with the same organization/name but different versions. To avoid conflict, pick one version:", - " * com.typesafe.akka:akka-actor:(2.1.4, 2.3.0)") - - def nodupe1 = - IvySbt.inconsistentDuplicateWarning(Seq(akkaActor230Test, akkaActor230)) must_== Nil } diff --git a/librarymanagement/src/test/scala/MakePomSpec.scala b/librarymanagement/src/test/scala/MakePomSpec.scala index 68ede8bc8..edd1eef03 100644 --- a/librarymanagement/src/test/scala/MakePomSpec.scala +++ b/librarymanagement/src/test/scala/MakePomSpec.scala @@ -1,73 +1,78 @@ package sbt import java.io.File -import org.specs2._ +import sbt.internal.util.{ Logger, ConsoleLogger } +import sbt.internal.util.UnitSpec // http://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency.html // http://maven.apache.org/enforcer/enforcer-rules/versionRanges.html -class MakePomSpec extends Specification { - def is = s2""" +class MakePomSpec extends UnitSpec { + // This is a specification to check the Ivy revision number conversion to pom. - This is a specification to check the Ivy revision number conversion to pom. + "1.0" should "convert to 1.0" in convertTo("1.0", "1.0") - 1.0 should - ${convertTo("1.0", "1.0")} + "[1.0,2.0]" should "convert to [1.0,2.0]" in { + convertTo("[1.0,2.0]", "[1.0,2.0]") + } - [1.0,2.0] should - ${convertTo("[1.0,2.0]", "[1.0,2.0]")} + "[1.0,2.0[" should "convert to [1.0,2.0)" in { + convertTo("[1.0,2.0[", "[1.0,2.0)") + } - [1.0,2.0[ should - ${convertTo("[1.0,2.0[", "[1.0,2.0)")} + "]1.0,2.0]" should "convert to (1.0,2.0]" in { + convertTo("]1.0,2.0]", "(1.0,2.0]") + } - ]1.0,2.0] should - ${convertTo("]1.0,2.0]", "(1.0,2.0]")} + "]1.0,2.0[" should "convert to (1.0,2.0)" in { + convertTo("]1.0,2.0[", "(1.0,2.0)") + } - ]1.0,2.0[ should - ${convertTo("]1.0,2.0[", "(1.0,2.0)")} + "[1.0,)" should "convert to [1.0,)" in { + convertTo("[1.0,)", "[1.0,)") + } - [1.0,) should - ${convertTo("[1.0,)", "[1.0,)")} + "]1.0,)" should "convert to (1.0,)" in { + convertTo("]1.0,)", "(1.0,)") + } - ]1.0,) should - ${convertTo("]1.0,)", "(1.0,)")} + "(,2.0]" should "convert to (,2.0]" in { + convertTo("(,2.0]", "(,2.0]") + } - (,2.0] should - ${convertTo("(,2.0]", "(,2.0]")} + "(,2.0[" should "convert to (,2.0)" in { + convertTo("(,2.0[", "(,2.0)") + } - (,2.0[ should - ${convertTo("(,2.0[", "(,2.0)")} + "1.+" should "convert to [1,2)" in { + convertTo("1.+", "[1,2)") + } - 1.+ should - ${convertTo("1.+", "[1,2)")} + "1.2.3.4.+" should "convert to [1.2.3.4,1.2.3.5)" in { + convertTo("1.2.3.4.+", "[1.2.3.4,1.2.3.5)") + } - 1.2.3.4.+ should - ${convertTo("1.2.3.4.+", "[1.2.3.4,1.2.3.5)")} + "12.31.42.+" should "convert to [12.31.42,12.31.43)" in { + convertTo("12.31.42.+", "[12.31.42,12.31.43)") + } - 12.31.42.+ should - ${convertTo("12.31.42.+", "[12.31.42,12.31.43)")} + "1.1+" should "convert to [1.1,1.2),[1.10,1.20),[1.100,1.200),[1.1000,1.2000),[1.10000,1.20000)" in { + convertTo("1.1+", "[1.1,1.2),[1.10,1.20),[1.100,1.200),[1.1000,1.2000),[1.10000,1.20000)") + } - 1.1+ should - ${convertTo("1.1+", "[1.1,1.2),[1.10,1.20),[1.100,1.200),[1.1000,1.2000),[1.10000,1.20000)")} + "1+" should "convert to [1,2),[10,20),[100,200),[1000,2000),[10000,20000)" in { + convertTo("1+", "[1,2),[10,20),[100,200),[1000,2000),[10000,20000)") + } - 1+ should - ${convertTo("1+", "[1,2),[10,20),[100,200),[1000,2000),[10000,20000)")} + "+" should "convert to [0,)" in convertTo("+", "[0,)") - + should - ${convertTo("+", "[0,)")} - - foo+ should - ${beParsedAsError("foo+")} - """ + "foo+" should "convert to foo+" in beParsedAsError("foo+") val mp = new MakePom(ConsoleLogger()) - def convertTo(s: String, expected: String) = - MakePom.makeDependencyVersion(s) must_== expected - def beParsedAsError(s: String) = - try { + def convertTo(s: String, expected: String): Unit = + MakePom.makeDependencyVersion(s) shouldBe expected + def beParsedAsError(s: String): Unit = + intercept[Throwable] { MakePom.makeDependencyVersion(s) - failure - } catch { - case e: Throwable => success } } diff --git a/librarymanagement/src/test/scala/ResolverTest.scala b/librarymanagement/src/test/scala/ResolverTest.scala index 64c6ab777..adfb9c576 100644 --- a/librarymanagement/src/test/scala/ResolverTest.scala +++ b/librarymanagement/src/test/scala/ResolverTest.scala @@ -1,24 +1,19 @@ import java.net.URL -import org.specs2.mutable.Specification import sbt._ +import sbt.internal.util.UnitSpec -object ResolverTest extends Specification { +object ResolverTest extends UnitSpec { - "Resolver" should { - "url" should { - "propagate pattern descriptorOptional and skipConsistencyCheck." in { - val pats = Seq("[orgPath]") - val patsExpected = Seq("http://foo.com/test/[orgPath]") - val patterns = Resolver.url("test", new URL("http://foo.com/test"))(Patterns(pats, pats, isMavenCompatible = false, descriptorOptional = true, skipConsistencyCheck = true)).patterns + "Resolver url" should "propagate pattern descriptorOptional and skipConsistencyCheck." in { + val pats = Seq("[orgPath]") + val patsExpected = Seq("http://foo.com/test/[orgPath]") + val patterns = Resolver.url("test", new URL("http://foo.com/test"))(Patterns(pats, pats, isMavenCompatible = false, descriptorOptional = true, skipConsistencyCheck = true)).patterns - patterns.ivyPatterns must equalTo(patsExpected) - patterns.artifactPatterns must equalTo(patsExpected) - patterns.isMavenCompatible must beFalse - patterns.skipConsistencyCheck must beTrue - patterns.descriptorOptional must beTrue - } - } + patterns.ivyPatterns shouldBe patsExpected + patterns.artifactPatterns shouldBe patsExpected + patterns.isMavenCompatible shouldBe false + assert(patterns.skipConsistencyCheck) + assert(patterns.descriptorOptional) } - } diff --git a/librarymanagement/src/test/scala/VersionNumberSpec.scala b/librarymanagement/src/test/scala/VersionNumberSpec.scala index 68bc2ad6e..3e7b8c631 100644 --- a/librarymanagement/src/test/scala/VersionNumberSpec.scala +++ b/librarymanagement/src/test/scala/VersionNumberSpec.scala @@ -1,112 +1,93 @@ package sbt -import org.specs2._ +import sbt.internal.util.UnitSpec -class VersionNumberSpec extends Specification { - def is = s2""" +// This is a specification to check the version number parsing. +class VersionNumberSpec extends UnitSpec { + "1" should "be parsed" in beParsedAs("1", Seq(1), Seq(), Seq()) + it should "breakdown" in breakDownTo("1", Some(1)) + it should "cascade" in generateCorrectCascadingNumbers("1", Seq("1")) - This is a specification to check the version number parsing. + "1.0" should "be parsed" in beParsedAs("1.0", Seq(1, 0), Seq(), Seq()) + it should "breakdown" in breakDownTo("1.0", Some(1), Some(0)) + it should "cascade" in generateCorrectCascadingNumbers("1.0", Seq("1.0")) - 1 should - ${beParsedAs("1", Seq(1), Seq(), Seq())} - ${breakDownTo("1", Some(1))} - ${generateCorrectCascadingNumbers("1", Seq("1"))} + "1.0.0" should "be parsed" in beParsedAs("1.0.0", Seq(1, 0, 0), Seq(), Seq()) + it should "breakdown" in breakDownTo("1.0.0", Some(1), Some(0), Some(0)) + it should "cascade" in generateCorrectCascadingNumbers("1.0.0", Seq("1.0.0", "1.0")) + it should "be SemVer compat with 1.0.1" in beSemVerCompatWith("1.0.0", "1.0.1") + it should "be SemVer compat with 1.1.1" in beSemVerCompatWith("1.0.0", "1.1.1") + it should "not be SemVer compat with 2.0.0" in notBeSemVerCompatWith("1.0.0", "2.0.0") + it should "not be SemVer compat with 1.0.0-M1" in notBeSemVerCompatWith("1.0.0", "1.0.0-M1") + it should "be SecSeg compat with 1.0.1" in beSecSegCompatWith("1.0.0", "1.0.1") + it should "not be SecSeg compat with 1.1.1" in notBeSecSegCompatWith("1.0.0", "1.1.1") + it should "not be SecSeg compat with 2.0.0" in notBeSecSegCompatWith("1.0.0", "2.0.0") + it should "not be SecSeg compat with 1.0.0-M1" in notBeSecSegCompatWith("1.0.0", "1.0.0-M1") - 1.0 should - ${beParsedAs("1.0", Seq(1, 0), Seq(), Seq())} - ${breakDownTo("1.0", Some(1), Some(0))} - ${generateCorrectCascadingNumbers("1.0", Seq("1.0"))} + "1.0.0.0" should "be parsed" in beParsedAs("1.0.0.0", Seq(1, 0, 0, 0), Seq(), Seq()) + it should "breakdown" in breakDownTo("1.0.0.0", Some(1), Some(0), Some(0), Some(0)) + it should "cascade" in generateCorrectCascadingNumbers("1.0.0.0", Seq("1.0.0.0", "1.0.0", "1.0")) - 1.0.0 should - ${beParsedAs("1.0.0", Seq(1, 0, 0), Seq(), Seq())} - ${breakDownTo("1.0.0", Some(1), Some(0), Some(0))} - ${generateCorrectCascadingNumbers("1.0.0", Seq("1.0.0", "1.0"))} + "0.12.0" should "be parsed" in beParsedAs("0.12.0", Seq(0, 12, 0), Seq(), Seq()) + it should "breakdown" in breakDownTo("0.12.0", Some(0), Some(12), Some(0)) + it should "cascade" in generateCorrectCascadingNumbers("0.12.0", Seq("0.12.0", "0.12")) + it should "not be SemVer compat with 0.12.0-RC1" in notBeSemVerCompatWith("0.12.0", "0.12.0-RC1") + it should "not be SemVer compat with 0.12.1" in notBeSemVerCompatWith("0.12.0", "0.12.1") + it should "not be SemVer compat with 0.12.1-M1" in notBeSemVerCompatWith("0.12.0", "0.12.1-M1") + it should "not be SecSeg compat with 0.12.0-RC1" in notBeSecSegCompatWith("0.12.0", "0.12.0-RC1") + it should "be SecSeg compat with 0.12.1" in beSecSegCompatWith("0.12.0", "0.12.1") + it should "be SecSeg compat with 0.12.1-M1" in beSecSegCompatWith("0.12.0", "0.12.1-M1") - ${beSemVerCompatWith("1.0.0", "1.0.1")} - ${beSemVerCompatWith("1.0.0", "1.1.1")} - ${notBeSemVerCompatWith("1.0.0", "2.0.0")} - ${notBeSemVerCompatWith("1.0.0", "1.0.0-M1")} + "0.1.0-SNAPSHOT" should "be parsed" in beParsedAs("0.1.0-SNAPSHOT", Seq(0, 1, 0), Seq("SNAPSHOT"), Seq()) + it should "cascade" in generateCorrectCascadingNumbers("0.1.0-SNAPSHOT", Seq("0.1.0-SNAPSHOT", "0.1.0", "0.1")) + it should "be SemVer compat with 0.1.0-SNAPSHOT" in beSemVerCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT") + it should "not be SemVer compat with 0.1.0" in notBeSemVerCompatWith("0.1.0-SNAPSHOT", "0.1.0") + it should "be SemVer compat with 0.1.0-SNAPSHOT+001" in beSemVerCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT+001") + it should "be SecSeg compat with 0.1.0-SNAPSHOT" in beSecSegCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT") + it should "be not SecSeg compat with 0.1.0" in notBeSecSegCompatWith("0.1.0-SNAPSHOT", "0.1.0") + it should "be SecSeg compat with 0.1.0-SNAPSHOT+001" in beSecSegCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT+001") - ${beSecSegCompatWith("1.0.0", "1.0.1")} - ${notBeSecSegCompatWith("1.0.0", "1.1.1")} - ${notBeSecSegCompatWith("1.0.0", "2.0.0")} - ${notBeSecSegCompatWith("1.0.0", "1.0.0-M1")} + "0.1.0-M1" should "be parsed" in beParsedAs("0.1.0-M1", Seq(0, 1, 0), Seq("M1"), Seq()) + it should "cascade" in generateCorrectCascadingNumbers("0.1.0-M1", Seq("0.1.0-M1", "0.1.0", "0.1")) - 1.0.0.0 should - ${beParsedAs("1.0.0.0", Seq(1, 0, 0, 0), Seq(), Seq())} - ${breakDownTo("1.0.0.0", Some(1), Some(0), Some(0), Some(0))} - ${generateCorrectCascadingNumbers("1.0.0.0", Seq("1.0.0.0", "1.0.0", "1.0"))} + "0.1.0-RC1" should "be parsed" in beParsedAs("0.1.0-RC1", Seq(0, 1, 0), Seq("RC1"), Seq()) + it should "cascade" in generateCorrectCascadingNumbers("0.1.0-RC1", Seq("0.1.0-RC1", "0.1.0", "0.1")) - 0.12.0 should - ${beParsedAs("0.12.0", Seq(0, 12, 0), Seq(), Seq())} - ${breakDownTo("0.12.0", Some(0), Some(12), Some(0))} - ${generateCorrectCascadingNumbers("0.12.0", Seq("0.12.0", "0.12"))} - - ${notBeSemVerCompatWith("0.12.0", "0.12.0-RC1")} - ${notBeSemVerCompatWith("0.12.0", "0.12.1")} - ${notBeSemVerCompatWith("0.12.0", "0.12.1-M1")} - - ${notBeSecSegCompatWith("0.12.0", "0.12.0-RC1")} - ${beSecSegCompatWith("0.12.0", "0.12.1")} - ${beSecSegCompatWith("0.12.0", "0.12.1-M1")} - - 0.1.0-SNAPSHOT should - ${beParsedAs("0.1.0-SNAPSHOT", Seq(0, 1, 0), Seq("SNAPSHOT"), Seq())} - ${generateCorrectCascadingNumbers("0.1.0-SNAPSHOT", Seq("0.1.0-SNAPSHOT", "0.1.0", "0.1"))} - - ${beSemVerCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT")} - ${notBeSemVerCompatWith("0.1.0-SNAPSHOT", "0.1.0")} - ${beSemVerCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT+001")} - - ${beSecSegCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT")} - ${notBeSecSegCompatWith("0.1.0-SNAPSHOT", "0.1.0")} - ${beSecSegCompatWith("0.1.0-SNAPSHOT", "0.1.0-SNAPSHOT+001")} - - 0.1.0-M1 should - ${beParsedAs("0.1.0-M1", Seq(0, 1, 0), Seq("M1"), Seq())} - ${generateCorrectCascadingNumbers("0.1.0-M1", Seq("0.1.0-M1", "0.1.0", "0.1"))} - - 0.1.0-RC1 should - ${beParsedAs("0.1.0-RC1", Seq(0, 1, 0), Seq("RC1"), Seq())} - ${generateCorrectCascadingNumbers("0.1.0-RC1", Seq("0.1.0-RC1", "0.1.0", "0.1"))} - - 0.1.0-MSERVER-1 should - ${beParsedAs("0.1.0-MSERVER-1", Seq(0, 1, 0), Seq("MSERVER", "1"), Seq())} - ${generateCorrectCascadingNumbers("0.1.0-MSERVER-1", Seq("0.1.0-MSERVER-1", "0.1.0", "0.1"))} + "0.1.0-MSERVER-1" should "be parsed" in beParsedAs("0.1.0-MSERVER-1", Seq(0, 1, 0), Seq("MSERVER", "1"), Seq()) + it should "cascade" in generateCorrectCascadingNumbers("0.1.0-MSERVER-1", Seq("0.1.0-MSERVER-1", "0.1.0", "0.1")) - 2.10.4-20140115-000117-b3a-sources should - ${beParsedAs("2.10.4-20140115-000117-b3a-sources", Seq(2, 10, 4), Seq("20140115", "000117", "b3a", "sources"), Seq())} - ${generateCorrectCascadingNumbers("2.10.4-20140115-000117-b3a-sources", Seq("2.10.4-20140115-000117-b3a-sources", "2.10.4", "2.10"))} + "2.10.4-20140115-000117-b3a-sources" should "be parsed" in { + beParsedAs("2.10.4-20140115-000117-b3a-sources", Seq(2, 10, 4), Seq("20140115", "000117", "b3a", "sources"), Seq()) + } + it should "cascade" in generateCorrectCascadingNumbers("2.10.4-20140115-000117-b3a-sources", Seq("2.10.4-20140115-000117-b3a-sources", "2.10.4", "2.10")) + it should "be SemVer compat with 2.0.0" in beSemVerCompatWith("2.10.4-20140115-000117-b3a-sources", "2.0.0") + it should "be not SecSeg compat with 2.0.0" in notBeSecSegCompatWith("2.10.4-20140115-000117-b3a-sources", "2.0.0") - ${beSemVerCompatWith("2.10.4-20140115-000117-b3a-sources", "2.0.0")} + "20140115000117-b3a-sources" should "be parsed" in { + beParsedAs("20140115000117-b3a-sources", Seq(20140115000117L), Seq("b3a", "sources"), Seq()) + } + it should "cascade" in generateCorrectCascadingNumbers("20140115000117-b3a-sources", Seq("20140115000117-b3a-sources")) - ${notBeSecSegCompatWith("2.10.4-20140115-000117-b3a-sources", "2.0.0")} + "1.0.0-alpha+001+002" should "be parsed" in { + beParsedAs("1.0.0-alpha+001+002", Seq(1, 0, 0), Seq("alpha"), Seq("+001", "+002")) + } + it should "cascade" in generateCorrectCascadingNumbers("1.0.0-alpha+001+002", Seq("1.0.0-alpha+001+002", "1.0.0", "1.0")) - 20140115000117-b3a-sources should - ${beParsedAs("20140115000117-b3a-sources", Seq(20140115000117L), Seq("b3a", "sources"), Seq())} - ${generateCorrectCascadingNumbers("20140115000117-b3a-sources", Seq("20140115000117-b3a-sources"))} + "non.space.!?string" should "be parsed" in { + beParsedAs("non.space.!?string", Seq(), Seq(), Seq("non.space.!?string")) + } + it should "cascade" in generateCorrectCascadingNumbers("non.space.!?string", Seq("non.space.!?string")) - 1.0.0-alpha+001+002 should - ${beParsedAs("1.0.0-alpha+001+002", Seq(1, 0, 0), Seq("alpha"), Seq("+001", "+002"))} - ${generateCorrectCascadingNumbers("1.0.0-alpha+001+002", Seq("1.0.0-alpha+001+002", "1.0.0", "1.0"))} + "space !?string" should "be parsed as an error" in beParsedAsError("space !?string") + "blank string" should "be parsed as an error" in beParsedAsError("") - non.space.!?string should - ${beParsedAs("non.space.!?string", Seq(), Seq(), Seq("non.space.!?string"))} - ${generateCorrectCascadingNumbers("non.space.!?string", Seq("non.space.!?string"))} - - space !?string should - ${beParsedAsError("space !?string")} - - blank string should - ${beParsedAsError("")} - """ def beParsedAs(s: String, ns: Seq[Long], ts: Seq[String], es: Seq[String]) = s match { case VersionNumber(ns1, ts1, es1) if (ns1 == ns && ts1 == ts && es1 == es) => - (VersionNumber(ns, ts, es).toString must_== s) and - (VersionNumber(ns, ts, es) == VersionNumber(ns, ts, es)) + (VersionNumber(ns, ts, es).toString shouldBe s) + (VersionNumber(ns, ts, es) shouldBe VersionNumber(ns, ts, es)) case VersionNumber(ns1, ts1, es1) => sys.error(s"$ns1, $ts1, $es1") } @@ -115,26 +96,26 @@ class VersionNumberSpec extends Specification { s match { case VersionNumber(ns, ts, es) => val v = VersionNumber(ns, ts, es) - (v._1 must_== major) and - (v._2 must_== minor) and - (v._3 must_== patch) and - (v._4 must_== buildNumber) + (v._1 shouldBe major) + (v._2 shouldBe minor) + (v._3 shouldBe patch) + (v._4 shouldBe buildNumber) } - def beParsedAsError(s: String) = + def beParsedAsError(s: String): Unit = s match { - case VersionNumber(ns1, ts1, es1) => failure - case _ => success + case VersionNumber(ns1, ts1, es1) => sys.error(s) + case _ => () } def beSemVerCompatWith(v1: String, v2: String) = - VersionNumber.SemVer.isCompatible(VersionNumber(v1), VersionNumber(v2)) must_== true + VersionNumber.SemVer.isCompatible(VersionNumber(v1), VersionNumber(v2)) shouldBe true def notBeSemVerCompatWith(v1: String, v2: String) = - VersionNumber.SemVer.isCompatible(VersionNumber(v1), VersionNumber(v2)) must_== false + VersionNumber.SemVer.isCompatible(VersionNumber(v1), VersionNumber(v2)) shouldBe false def beSecSegCompatWith(v1: String, v2: String) = - VersionNumber.SecondSegment.isCompatible(VersionNumber(v1), VersionNumber(v2)) must_== true + VersionNumber.SecondSegment.isCompatible(VersionNumber(v1), VersionNumber(v2)) shouldBe true def notBeSecSegCompatWith(v1: String, v2: String) = - VersionNumber.SecondSegment.isCompatible(VersionNumber(v1), VersionNumber(v2)) must_== false + VersionNumber.SecondSegment.isCompatible(VersionNumber(v1), VersionNumber(v2)) shouldBe false def generateCorrectCascadingNumbers(s: String, ns: Seq[String]) = { val versionNumbers = ns.toVector map VersionNumber.apply - VersionNumber(s).cascadingVersions must_== versionNumbers + VersionNumber(s).cascadingVersions shouldBe versionNumbers } } diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 92f1a778d..155785557 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -5,11 +5,12 @@ object Dependencies { lazy val scala210 = "2.10.5" lazy val scala211 = "2.11.7" - val utilVersion = "0.1.0-M1" - val ioVersion = "1.0.0-M1" + val utilVersion = "0.1.0-M2" + val ioVersion = "1.0.0-M3" lazy val sbtIO = "org.scala-sbt" %% "io" % ioVersion lazy val utilCollection = "org.scala-sbt" %% "util-collection" % utilVersion lazy val utilLogging = "org.scala-sbt" %% "util-logging" % utilVersion + lazy val utilTesting = "org.scala-sbt" %% "util-testing" % utilVersion lazy val launcherInterface = "org.scala-sbt" % "launcher-interface" % "1.0.0-M1" lazy val ivy = "org.scala-sbt.ivy" % "ivy" % "2.3.0-sbt-927bc9ded7f8fba63297cddd0d5a3d01d6ad5d8d" From a30bcdbb37da43c07794454478fc5649874ccb3e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 5 Sep 2015 05:53:15 -0400 Subject: [PATCH 5/8] Fix test --- librarymanagement/src/test/scala/CachedResolutionSpec.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/librarymanagement/src/test/scala/CachedResolutionSpec.scala b/librarymanagement/src/test/scala/CachedResolutionSpec.scala index c4282120a..48ee003c0 100644 --- a/librarymanagement/src/test/scala/CachedResolutionSpec.scala +++ b/librarymanagement/src/test/scala/CachedResolutionSpec.scala @@ -55,8 +55,8 @@ class CachedResolutionSpec extends BaseIvySpecification { // second resolution reads from the minigraph val report = ivyUpdate(m) val modules: Seq[String] = report.configurations.head.modules map {_.toString} - modules should contain("""org.jboss.netty:netty:3.2.0.Final""") - modules should not contain("""org.jboss.netty:netty:3.2.1.Final""") + assert(modules exists { x: String => x contains """org.jboss.netty:netty:3.2.0.Final"""}) + assert(!(modules exists { x: String => x contains """org.jboss.netty:netty:3.2.1.Final"""})) } def commonsIo13 = ModuleID("commons-io", "commons-io", "1.3", Some("compile")) From c65c5016b08832f18b021b462db14fb794447911 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 7 Sep 2015 02:59:23 -0400 Subject: [PATCH 6/8] bump to up Util 0.1.0-M3 --- librarymanagement/src/main/scala/sbt/ComponentManager.scala | 2 +- librarymanagement/src/main/scala/sbt/ConflictWarning.scala | 2 +- librarymanagement/src/main/scala/sbt/ConvertResolver.scala | 2 +- librarymanagement/src/main/scala/sbt/Credentials.scala | 2 +- librarymanagement/src/main/scala/sbt/EvictionWarning.scala | 3 ++- librarymanagement/src/main/scala/sbt/Ivy.scala | 2 +- librarymanagement/src/main/scala/sbt/IvyActions.scala | 3 ++- librarymanagement/src/main/scala/sbt/IvyCache.scala | 2 +- librarymanagement/src/main/scala/sbt/IvyConfigurations.scala | 2 +- librarymanagement/src/main/scala/sbt/IvyLogger.scala | 2 +- librarymanagement/src/main/scala/sbt/IvyScala.scala | 2 +- librarymanagement/src/main/scala/sbt/JsonUtil.scala | 2 +- librarymanagement/src/main/scala/sbt/MakePom.scala | 2 +- librarymanagement/src/main/scala/sbt/UpdateOptions.scala | 2 +- .../main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala | 2 +- .../src/main/scala/sbt/ivyint/SbtChainResolver.scala | 2 +- librarymanagement/src/test/scala/BaseIvySpecification.scala | 3 ++- librarymanagement/src/test/scala/ComponentManagerTest.scala | 2 +- librarymanagement/src/test/scala/CustomPomParserTest.scala | 3 ++- librarymanagement/src/test/scala/MakePomSpec.scala | 3 ++- project/Dependencies.scala | 2 +- 21 files changed, 26 insertions(+), 21 deletions(-) diff --git a/librarymanagement/src/main/scala/sbt/ComponentManager.scala b/librarymanagement/src/main/scala/sbt/ComponentManager.scala index af4788ece..3dd08c928 100644 --- a/librarymanagement/src/main/scala/sbt/ComponentManager.scala +++ b/librarymanagement/src/main/scala/sbt/ComponentManager.scala @@ -5,7 +5,7 @@ package sbt import java.io.{ File, FileOutputStream } import java.util.concurrent.Callable -import sbt.internal.util.Logger +import sbt.util.Logger /** * A component manager provides access to the pieces of xsbt that are distributed as components. diff --git a/librarymanagement/src/main/scala/sbt/ConflictWarning.scala b/librarymanagement/src/main/scala/sbt/ConflictWarning.scala index 182272476..75a4a5bd9 100644 --- a/librarymanagement/src/main/scala/sbt/ConflictWarning.scala +++ b/librarymanagement/src/main/scala/sbt/ConflictWarning.scala @@ -1,7 +1,7 @@ package sbt import DependencyFilter._ -import sbt.internal.util.{ Logger, Level } +import sbt.util.{ Logger, Level } /** * Provide warnings for cross version conflicts. diff --git a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala b/librarymanagement/src/main/scala/sbt/ConvertResolver.scala index 6658ae45d..5234ca506 100644 --- a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala +++ b/librarymanagement/src/main/scala/sbt/ConvertResolver.scala @@ -18,7 +18,7 @@ import java.io.{ IOException, File } import org.apache.ivy.util.{ FileUtil, ChecksumHelper } import org.apache.ivy.core.module.descriptor.{ Artifact => IArtifact } import sbt.io.IO -import sbt.internal.util.Logger +import sbt.util.Logger private[sbt] object ConvertResolver { import UpdateOptions.ResolverConverter diff --git a/librarymanagement/src/main/scala/sbt/Credentials.scala b/librarymanagement/src/main/scala/sbt/Credentials.scala index 8cbb5ff43..e2bd74fed 100644 --- a/librarymanagement/src/main/scala/sbt/Credentials.scala +++ b/librarymanagement/src/main/scala/sbt/Credentials.scala @@ -6,7 +6,7 @@ package sbt import java.io.File import org.apache.ivy.util.url.CredentialsStore import sbt.io.IO -import sbt.internal.util.Logger +import sbt.util.Logger object Credentials { def apply(realm: String, host: String, userName: String, passwd: String): Credentials = diff --git a/librarymanagement/src/main/scala/sbt/EvictionWarning.scala b/librarymanagement/src/main/scala/sbt/EvictionWarning.scala index 55ebf052a..4d6618b3c 100644 --- a/librarymanagement/src/main/scala/sbt/EvictionWarning.scala +++ b/librarymanagement/src/main/scala/sbt/EvictionWarning.scala @@ -3,7 +3,8 @@ package sbt import collection.mutable import Configurations.Compile import ScalaArtifacts.{ LibraryID, CompilerID } -import sbt.internal.util.{ Logger, ShowLines } +import sbt.util.Logger +import sbt.internal.util.ShowLines final class EvictionWarningOptions private[sbt] ( val configurations: Seq[Configuration], diff --git a/librarymanagement/src/main/scala/sbt/Ivy.scala b/librarymanagement/src/main/scala/sbt/Ivy.scala index fbe38619c..92079f6e8 100644 --- a/librarymanagement/src/main/scala/sbt/Ivy.scala +++ b/librarymanagement/src/main/scala/sbt/Ivy.scala @@ -39,7 +39,7 @@ import org.apache.ivy.util.extendable.ExtendableItem import scala.xml.{ NodeSeq, Text } import scala.collection.mutable -import sbt.internal.util.Logger +import sbt.util.Logger final class IvySbt(val configuration: IvyConfiguration) { import configuration.baseDirectory diff --git a/librarymanagement/src/main/scala/sbt/IvyActions.scala b/librarymanagement/src/main/scala/sbt/IvyActions.scala index 0a6547d76..2480b92b1 100644 --- a/librarymanagement/src/main/scala/sbt/IvyActions.scala +++ b/librarymanagement/src/main/scala/sbt/IvyActions.scala @@ -17,7 +17,8 @@ import org.apache.ivy.core.report.ResolveReport import org.apache.ivy.core.resolve.ResolveOptions import org.apache.ivy.plugins.resolver.{ BasicResolver, DependencyResolver } import sbt.io.{ IO, PathFinder } -import sbt.internal.util.{ Logger, ShowLines, SourcePosition, LinePosition, RangePosition, LineRange } +import sbt.util.Logger +import sbt.internal.util.{ ShowLines, SourcePosition, LinePosition, RangePosition, LineRange } final class DeliverConfiguration(val deliverIvyPattern: String, val status: String, val configurations: Option[Seq[Configuration]], val logging: UpdateLogging.Value) final class PublishConfiguration(val ivyFile: Option[File], val resolverName: String, val artifacts: Map[Artifact, File], val checksums: Seq[String], val logging: UpdateLogging.Value, diff --git a/librarymanagement/src/main/scala/sbt/IvyCache.scala b/librarymanagement/src/main/scala/sbt/IvyCache.scala index d9c9992f6..52f6ed50e 100644 --- a/librarymanagement/src/main/scala/sbt/IvyCache.scala +++ b/librarymanagement/src/main/scala/sbt/IvyCache.scala @@ -13,7 +13,7 @@ import org.apache.ivy.plugins.repository.{ ArtifactResourceResolver, Resource, R import org.apache.ivy.plugins.resolver.util.ResolvedResource import org.apache.ivy.util.FileUtil import sbt.io.Path -import sbt.internal.util.Logger +import sbt.util.Logger class NotInCache(val id: ModuleID, cause: Throwable) extends RuntimeException(NotInCache(id, cause), cause) { diff --git a/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala b/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala index 8b2855423..f03deb071 100644 --- a/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala +++ b/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala @@ -6,7 +6,7 @@ package sbt import java.io.File import java.net.{ URI, URL } import scala.xml.NodeSeq -import sbt.internal.util.Logger +import sbt.util.Logger final class IvyPaths(val baseDirectory: File, val ivyHome: Option[File]) { def withBase(newBaseDirectory: File) = new IvyPaths(newBaseDirectory, ivyHome) diff --git a/librarymanagement/src/main/scala/sbt/IvyLogger.scala b/librarymanagement/src/main/scala/sbt/IvyLogger.scala index 56fa3561d..60d8c4616 100644 --- a/librarymanagement/src/main/scala/sbt/IvyLogger.scala +++ b/librarymanagement/src/main/scala/sbt/IvyLogger.scala @@ -4,7 +4,7 @@ package sbt import org.apache.ivy.util.{ Message, MessageLogger, MessageLoggerEngine } -import sbt.internal.util.Logger +import sbt.util.Logger /** Interface to Ivy logging. */ private final class IvyLoggerInterface(logger: Logger) extends MessageLogger { diff --git a/librarymanagement/src/main/scala/sbt/IvyScala.scala b/librarymanagement/src/main/scala/sbt/IvyScala.scala index f8e8c6a68..ea82f44ce 100644 --- a/librarymanagement/src/main/scala/sbt/IvyScala.scala +++ b/librarymanagement/src/main/scala/sbt/IvyScala.scala @@ -11,7 +11,7 @@ import org.apache.ivy.core.module.descriptor.{ DependencyDescriptor, DefaultModu import org.apache.ivy.core.module.id.{ ArtifactId, ModuleId, ModuleRevisionId } import org.apache.ivy.plugins.matcher.ExactPatternMatcher -import sbt.internal.util.Logger +import sbt.util.Logger object ScalaArtifacts { val Organization = "org.scala-lang" diff --git a/librarymanagement/src/main/scala/sbt/JsonUtil.scala b/librarymanagement/src/main/scala/sbt/JsonUtil.scala index 1e8dbd5e4..f83ee21ff 100644 --- a/librarymanagement/src/main/scala/sbt/JsonUtil.scala +++ b/librarymanagement/src/main/scala/sbt/JsonUtil.scala @@ -6,7 +6,7 @@ import org.apache.ivy.core import core.module.descriptor.ModuleDescriptor import sbt.serialization._ import java.net.{ URLEncoder, URLDecoder } -import sbt.internal.util.Logger +import sbt.util.Logger private[sbt] object JsonUtil { def sbtOrgTemp = "org.scala-sbt.temp" diff --git a/librarymanagement/src/main/scala/sbt/MakePom.scala b/librarymanagement/src/main/scala/sbt/MakePom.scala index 663173e0d..2f4640c39 100644 --- a/librarymanagement/src/main/scala/sbt/MakePom.scala +++ b/librarymanagement/src/main/scala/sbt/MakePom.scala @@ -8,7 +8,7 @@ package sbt import java.io.File -import sbt.internal.util.Logger +import sbt.util.Logger import sbt.mavenint.PomExtraDependencyAttributes diff --git a/librarymanagement/src/main/scala/sbt/UpdateOptions.scala b/librarymanagement/src/main/scala/sbt/UpdateOptions.scala index 159472672..91fa7902d 100644 --- a/librarymanagement/src/main/scala/sbt/UpdateOptions.scala +++ b/librarymanagement/src/main/scala/sbt/UpdateOptions.scala @@ -3,7 +3,7 @@ package sbt import java.io.File import org.apache.ivy.plugins.resolver.DependencyResolver import org.apache.ivy.core.settings.IvySettings -import sbt.internal.util.Logger +import sbt.util.Logger /** * Represents configurable options for update task. diff --git a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala index 34dd0c308..1fc3291a4 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala @@ -23,7 +23,7 @@ import Configurations.{ System => _, _ } import annotation.tailrec import scala.concurrent.duration._ import sbt.io.{ DirectoryFilter, Hash, IO, Path } -import sbt.internal.util.Logger +import sbt.util.Logger private[sbt] object CachedResolutionResolveCache { def createID(organization: String, name: String, revision: String) = diff --git a/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala b/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala index 73328ce5c..2ca80898f 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala +++ b/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala @@ -15,7 +15,7 @@ import org.apache.ivy.plugins.repository.url.URLResource import org.apache.ivy.plugins.resolver._ import org.apache.ivy.plugins.resolver.util.{ HasLatestStrategy, ResolvedResource } import org.apache.ivy.util.{ Message, StringUtils => IvyStringUtils } -import sbt.internal.util.Logger +import sbt.util.Logger private[sbt] case class SbtChainResolver( name: String, diff --git a/librarymanagement/src/test/scala/BaseIvySpecification.scala b/librarymanagement/src/test/scala/BaseIvySpecification.scala index 8b46ccd9c..a9936e956 100644 --- a/librarymanagement/src/test/scala/BaseIvySpecification.scala +++ b/librarymanagement/src/test/scala/BaseIvySpecification.scala @@ -5,7 +5,8 @@ import sbt.io.IO import java.io.File import cross.CrossVersionUtil import sbt.ivyint.SbtChainResolver -import sbt.internal.util.{ Logger, ConsoleLogger } +import sbt.util.Logger +import sbt.internal.util.ConsoleLogger import sbt.internal.util.UnitSpec trait BaseIvySpecification extends UnitSpec { diff --git a/librarymanagement/src/test/scala/ComponentManagerTest.scala b/librarymanagement/src/test/scala/ComponentManagerTest.scala index 19c29cda8..22923f62f 100644 --- a/librarymanagement/src/test/scala/ComponentManagerTest.scala +++ b/librarymanagement/src/test/scala/ComponentManagerTest.scala @@ -7,7 +7,7 @@ import sbt.io.IO import org.apache.ivy.util.ChecksumHelper import IfMissing.Fail import xsbti.ComponentProvider -import sbt.internal.util.Logger +import sbt.util.Logger import sbt.internal.util.{ UnitSpec, TestLogger } // TODO - We need to re-enable this test. Right now, we dont' have a "stub" launcher for this. diff --git a/librarymanagement/src/test/scala/CustomPomParserTest.scala b/librarymanagement/src/test/scala/CustomPomParserTest.scala index c2bf9180b..e8319ba2b 100644 --- a/librarymanagement/src/test/scala/CustomPomParserTest.scala +++ b/librarymanagement/src/test/scala/CustomPomParserTest.scala @@ -4,7 +4,8 @@ import org.apache.ivy.core.module.id.ModuleRevisionId import org.apache.ivy.core.resolve.ResolveOptions import sbt._ import sbt.io.IO.withTemporaryDirectory -import sbt.internal.util.{ Logger, ConsoleLogger } +import sbt.util.Logger +import sbt.internal.util.ConsoleLogger import sbt.internal.util.UnitSpec class CustomPomParserTest extends UnitSpec { diff --git a/librarymanagement/src/test/scala/MakePomSpec.scala b/librarymanagement/src/test/scala/MakePomSpec.scala index edd1eef03..5f0513556 100644 --- a/librarymanagement/src/test/scala/MakePomSpec.scala +++ b/librarymanagement/src/test/scala/MakePomSpec.scala @@ -1,7 +1,8 @@ package sbt import java.io.File -import sbt.internal.util.{ Logger, ConsoleLogger } +import sbt.util.Logger +import sbt.internal.util.ConsoleLogger import sbt.internal.util.UnitSpec // http://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency.html diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 155785557..ee5217690 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -5,7 +5,7 @@ object Dependencies { lazy val scala210 = "2.10.5" lazy val scala211 = "2.11.7" - val utilVersion = "0.1.0-M2" + val utilVersion = "0.1.0-M3" val ioVersion = "1.0.0-M3" lazy val sbtIO = "org.scala-sbt" %% "io" % ioVersion lazy val utilCollection = "org.scala-sbt" %% "util-collection" % utilVersion From 1232a010371750d013778e35e0a68de622ea64b9 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 7 Sep 2015 04:33:45 -0400 Subject: [PATCH 7/8] Put things into sbt.librarymanagement package --- .../librarymanagement}/ResolverAdapter.java | 2 +- .../mavenint/SbtPomExtraProperties.java | 2 +- .../librarymanagement}/ComponentManager.scala | 3 ++- .../librarymanagement}/ConvertResolver.scala | 3 ++- .../librarymanagement}/CustomPomParser.scala | 5 +++-- .../librarymanagement}/CustomXmlParser.scala | 3 ++- .../librarymanagement}/DependencyFilter.scala | 3 ++- .../{ => internal/librarymanagement}/Ivy.scala | 8 ++++---- .../librarymanagement}/IvyActions.scala | 3 ++- .../librarymanagement}/IvyCache.scala | 3 ++- .../librarymanagement}/IvyConfigurations.scala | 3 ++- .../librarymanagement}/IvyLogger.scala | 3 ++- .../librarymanagement}/IvyRetrieve.scala | 3 ++- .../librarymanagement}/IvyUtil.scala | 2 +- .../librarymanagement}/JsonUtil.scala | 3 ++- .../librarymanagement}/LogicalClock.scala | 2 +- .../librarymanagement}/MakePom.scala | 7 ++++--- .../librarymanagement}/ProjectResolver.scala | 3 ++- .../librarymanagement}/ResolutionCache.scala | 3 ++- .../librarymanagement}/SbtExclusionRule.scala | 5 +++-- .../librarymanagement}/StringUtilities.scala | 2 +- .../cross/CrossVersionUtil.scala | 3 ++- .../impl/DependencyBuilders.scala | 3 ++- .../ivyint/CachedResolutionResolveEngine.scala | 5 +++-- .../ivyint/CustomMavenResolver.scala | 3 ++- .../ivyint/ErrorMessageAuthenticator.scala | 2 +- .../ivyint/IvyCredentialsLookup.scala | 2 +- .../ivyint/MergeDescriptors.scala | 2 +- .../ivyint/SbtChainResolver.scala | 3 ++- .../ivyint/SbtDefaultDependencyDescriptor.scala | 3 ++- .../mavenint/PomExtraDependencyAttributes.scala | 3 ++- .../sbt/{ => librarymanagement}/Artifact.scala | 2 +- .../CircularDependencyLevel.scala | 2 +- .../{ => librarymanagement}/Configuration.scala | 2 +- .../{ => librarymanagement}/ConflictWarning.scala | 15 ++------------- .../sbt/{ => librarymanagement}/Credentials.scala | 3 ++- .../{ => librarymanagement}/CrossVersion.scala | 5 +++-- .../{ => librarymanagement}/EvictionWarning.scala | 3 ++- .../{ => librarymanagement}/IvyInterface.scala | 2 +- .../sbt/{ => librarymanagement}/IvyScala.scala | 5 ++--- .../sbt/{ => librarymanagement}/ModuleID.scala | 4 ++-- .../sbt/{ => librarymanagement}/Resolver.scala | 2 +- .../{ => librarymanagement}/UpdateOptions.scala | 2 +- .../{ => librarymanagement}/UpdateReport.scala | 10 ++++++---- .../{ => librarymanagement}/VersionNumber.scala | 2 +- .../src/test/scala/BaseIvySpecification.scala | 8 +++++--- .../src/test/scala/CachedResolutionSpec.scala | 3 ++- .../src/test/scala/ComponentManagerTest.scala | 2 +- .../src/test/scala/CrossVersionTest.scala | 2 +- .../src/test/scala/CustomPomParserTest.scala | 4 +++- .../src/test/scala/DMSerializationSpec.scala | 8 ++++---- .../src/test/scala/EvictionWarningSpec.scala | 4 +++- .../test/scala/InconsistentDuplicateSpec.scala | 3 ++- .../src/test/scala/MakePomSpec.scala | 2 +- .../src/test/scala/ResolverTest.scala | 2 ++ .../src/test/scala/VersionNumberSpec.scala | 2 +- 56 files changed, 112 insertions(+), 87 deletions(-) rename librarymanagement/src/main/java/sbt/{ => internal/librarymanagement}/ResolverAdapter.java (90%) rename librarymanagement/src/main/java/sbt/{ => internal/librarymanagement}/mavenint/SbtPomExtraProperties.java (94%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ComponentManager.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ConvertResolver.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/CustomPomParser.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/CustomXmlParser.scala (95%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/DependencyFilter.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/Ivy.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/IvyActions.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/IvyCache.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/IvyConfigurations.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/IvyLogger.scala (96%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/IvyRetrieve.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/IvyUtil.scala (79%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/JsonUtil.scala (97%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/LogicalClock.scala (94%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/MakePom.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ProjectResolver.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ResolutionCache.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/SbtExclusionRule.scala (93%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/StringUtilities.scala (92%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/cross/CrossVersionUtil.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/impl/DependencyBuilders.scala (97%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ivyint/CachedResolutionResolveEngine.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ivyint/CustomMavenResolver.scala (80%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ivyint/ErrorMessageAuthenticator.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ivyint/IvyCredentialsLookup.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ivyint/MergeDescriptors.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ivyint/SbtChainResolver.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/ivyint/SbtDefaultDependencyDescriptor.scala (75%) rename librarymanagement/src/main/scala/sbt/{ => internal/librarymanagement}/mavenint/PomExtraDependencyAttributes.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/Artifact.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/CircularDependencyLevel.scala (97%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/Configuration.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/ConflictWarning.scala (78%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/Credentials.scala (97%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/CrossVersion.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/EvictionWarning.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/IvyInterface.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/IvyScala.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/ModuleID.scala (98%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/Resolver.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/UpdateOptions.scala (99%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/UpdateReport.scala (97%) rename librarymanagement/src/main/scala/sbt/{ => librarymanagement}/VersionNumber.scala (99%) diff --git a/librarymanagement/src/main/java/sbt/ResolverAdapter.java b/librarymanagement/src/main/java/sbt/internal/librarymanagement/ResolverAdapter.java similarity index 90% rename from librarymanagement/src/main/java/sbt/ResolverAdapter.java rename to librarymanagement/src/main/java/sbt/internal/librarymanagement/ResolverAdapter.java index 4247c97e7..86894b0bb 100644 --- a/librarymanagement/src/main/java/sbt/ResolverAdapter.java +++ b/librarymanagement/src/main/java/sbt/internal/librarymanagement/ResolverAdapter.java @@ -1,4 +1,4 @@ -package sbt; +package sbt.internal.librarymanagement; import java.util.Map; import org.apache.ivy.plugins.resolver.DependencyResolver; diff --git a/librarymanagement/src/main/java/sbt/mavenint/SbtPomExtraProperties.java b/librarymanagement/src/main/java/sbt/internal/librarymanagement/mavenint/SbtPomExtraProperties.java similarity index 94% rename from librarymanagement/src/main/java/sbt/mavenint/SbtPomExtraProperties.java rename to librarymanagement/src/main/java/sbt/internal/librarymanagement/mavenint/SbtPomExtraProperties.java index fde6af15b..83addbc46 100644 --- a/librarymanagement/src/main/java/sbt/mavenint/SbtPomExtraProperties.java +++ b/librarymanagement/src/main/java/sbt/internal/librarymanagement/mavenint/SbtPomExtraProperties.java @@ -1,4 +1,4 @@ -package sbt.mavenint; +package sbt.internal.librarymanagement.mavenint; /** * Extra properties we dump from Aether into the properties list. diff --git a/librarymanagement/src/main/scala/sbt/ComponentManager.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ComponentManager.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/ComponentManager.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ComponentManager.scala index 3dd08c928..ba27eb76c 100644 --- a/librarymanagement/src/main/scala/sbt/ComponentManager.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ComponentManager.scala @@ -1,11 +1,12 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.io.{ File, FileOutputStream } import java.util.concurrent.Callable import sbt.util.Logger +import sbt.librarymanagement._ /** * A component manager provides access to the pieces of xsbt that are distributed as components. diff --git a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/ConvertResolver.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala index 5234ca506..7029f19e0 100644 --- a/librarymanagement/src/main/scala/sbt/ConvertResolver.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.net.URL import java.util.Collections @@ -19,6 +19,7 @@ import org.apache.ivy.util.{ FileUtil, ChecksumHelper } import org.apache.ivy.core.module.descriptor.{ Artifact => IArtifact } import sbt.io.IO import sbt.util.Logger +import sbt.librarymanagement._ private[sbt] object ConvertResolver { import UpdateOptions.ResolverConverter diff --git a/librarymanagement/src/main/scala/sbt/CustomPomParser.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/CustomPomParser.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/CustomPomParser.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/CustomPomParser.scala index 8cf372af0..c75565daf 100644 --- a/librarymanagement/src/main/scala/sbt/CustomPomParser.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/CustomPomParser.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement import org.apache.ivy.core.module.id.ModuleRevisionId import org.apache.ivy.core.module.descriptor.{ DefaultArtifact, DefaultExtendsDescriptor, DefaultModuleDescriptor, ModuleDescriptor } @@ -12,8 +12,9 @@ import org.apache.ivy.util.extendable.ExtendableItem import java.io.{ File, InputStream } import java.net.URL import java.util.regex.Pattern -import sbt.mavenint.{ PomExtraDependencyAttributes, SbtPomExtraProperties } +import sbt.internal.librarymanagement.mavenint.{ PomExtraDependencyAttributes, SbtPomExtraProperties } import sbt.io.Hash +import sbt.librarymanagement._ @deprecated("We now use an Aether-based pom parser.", "0.13.8") final class CustomPomParser(delegate: ModuleDescriptorParser, transform: (ModuleDescriptorParser, ModuleDescriptor) => ModuleDescriptor) extends ModuleDescriptorParser { diff --git a/librarymanagement/src/main/scala/sbt/CustomXmlParser.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/CustomXmlParser.scala similarity index 95% rename from librarymanagement/src/main/scala/sbt/CustomXmlParser.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/CustomXmlParser.scala index bc8d7544b..cad47b173 100644 --- a/librarymanagement/src/main/scala/sbt/CustomXmlParser.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/CustomXmlParser.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.io.ByteArrayInputStream import java.net.URL @@ -11,6 +11,7 @@ import org.apache.ivy.core.settings.IvySettings import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser import org.apache.ivy.plugins.repository.Resource import org.apache.ivy.plugins.repository.url.URLResource +import sbt.librarymanagement._ /** Subclasses the default Ivy file parser in order to provide access to protected methods.*/ private[sbt] object CustomXmlParser extends XmlModuleDescriptorParser { diff --git a/librarymanagement/src/main/scala/sbt/DependencyFilter.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/DependencyFilter.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/DependencyFilter.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/DependencyFilter.scala index 701d179aa..3b0cc28ef 100644 --- a/librarymanagement/src/main/scala/sbt/DependencyFilter.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/DependencyFilter.scala @@ -1,9 +1,10 @@ /* sbt -- Simple Build Tool * Copyright 2011 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import sbt.io.{ AllPassFilter, NameFilter } +import sbt.librarymanagement._ trait DependencyFilterExtra { def moduleFilter(organization: NameFilter = AllPassFilter, name: NameFilter = AllPassFilter, revision: NameFilter = AllPassFilter): ModuleFilter = diff --git a/librarymanagement/src/main/scala/sbt/Ivy.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/Ivy.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/Ivy.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/Ivy.scala index 92079f6e8..a2709140a 100644 --- a/librarymanagement/src/main/scala/sbt/Ivy.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/Ivy.scala @@ -1,10 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt - -import Resolver.PluginPattern -import ivyint.{ CachedResolutionResolveEngine, CachedResolutionResolveCache, SbtDefaultDependencyDescriptor } +package sbt.internal.librarymanagement import java.io.File import java.net.URI @@ -40,6 +37,9 @@ import scala.xml.{ NodeSeq, Text } import scala.collection.mutable import sbt.util.Logger +import sbt.librarymanagement._ +import Resolver.PluginPattern +import ivyint.{ CachedResolutionResolveEngine, CachedResolutionResolveCache, SbtDefaultDependencyDescriptor } final class IvySbt(val configuration: IvyConfiguration) { import configuration.baseDirectory diff --git a/librarymanagement/src/main/scala/sbt/IvyActions.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/IvyActions.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala index 2480b92b1..d5cc59781 100644 --- a/librarymanagement/src/main/scala/sbt/IvyActions.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.io.File import scala.xml.{ Node => XNode, NodeSeq } @@ -19,6 +19,7 @@ import org.apache.ivy.plugins.resolver.{ BasicResolver, DependencyResolver } import sbt.io.{ IO, PathFinder } import sbt.util.Logger import sbt.internal.util.{ ShowLines, SourcePosition, LinePosition, RangePosition, LineRange } +import sbt.librarymanagement._ final class DeliverConfiguration(val deliverIvyPattern: String, val status: String, val configurations: Option[Seq[Configuration]], val logging: UpdateLogging.Value) final class PublishConfiguration(val ivyFile: Option[File], val resolverName: String, val artifacts: Map[Artifact, File], val checksums: Seq[String], val logging: UpdateLogging.Value, diff --git a/librarymanagement/src/main/scala/sbt/IvyCache.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyCache.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/IvyCache.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyCache.scala index 52f6ed50e..aee827923 100644 --- a/librarymanagement/src/main/scala/sbt/IvyCache.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyCache.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.io.File import java.net.URL @@ -14,6 +14,7 @@ import org.apache.ivy.plugins.resolver.util.ResolvedResource import org.apache.ivy.util.FileUtil import sbt.io.Path import sbt.util.Logger +import sbt.librarymanagement._ class NotInCache(val id: ModuleID, cause: Throwable) extends RuntimeException(NotInCache(id, cause), cause) { diff --git a/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyConfigurations.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/IvyConfigurations.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyConfigurations.scala index f03deb071..9b35425ef 100644 --- a/librarymanagement/src/main/scala/sbt/IvyConfigurations.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyConfigurations.scala @@ -1,12 +1,13 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.io.File import java.net.{ URI, URL } import scala.xml.NodeSeq import sbt.util.Logger +import sbt.librarymanagement._ final class IvyPaths(val baseDirectory: File, val ivyHome: Option[File]) { def withBase(newBaseDirectory: File) = new IvyPaths(newBaseDirectory, ivyHome) diff --git a/librarymanagement/src/main/scala/sbt/IvyLogger.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyLogger.scala similarity index 96% rename from librarymanagement/src/main/scala/sbt/IvyLogger.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyLogger.scala index 60d8c4616..b5d61fc06 100644 --- a/librarymanagement/src/main/scala/sbt/IvyLogger.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyLogger.scala @@ -1,10 +1,11 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import org.apache.ivy.util.{ Message, MessageLogger, MessageLoggerEngine } import sbt.util.Logger +import sbt.librarymanagement._ /** Interface to Ivy logging. */ private final class IvyLoggerInterface(logger: Logger) extends MessageLogger { diff --git a/librarymanagement/src/main/scala/sbt/IvyRetrieve.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/IvyRetrieve.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala index 14ad917fa..8e10b0633 100644 --- a/librarymanagement/src/main/scala/sbt/IvyRetrieve.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyRetrieve.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.io.File import java.{ util => ju } @@ -14,6 +14,7 @@ import report.{ ArtifactDownloadReport, ConfigurationResolveReport, ResolveRepor import resolve.{ IvyNode, IvyNodeCallers } import IvyNodeCallers.{ Caller => IvyCaller } import ivyint.SbtDefaultDependencyDescriptor +import sbt.librarymanagement._ object IvyRetrieve { def reports(report: ResolveReport): Seq[ConfigurationResolveReport] = diff --git a/librarymanagement/src/main/scala/sbt/IvyUtil.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyUtil.scala similarity index 79% rename from librarymanagement/src/main/scala/sbt/IvyUtil.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyUtil.scala index 0f06b6b84..d9477b9cc 100644 --- a/librarymanagement/src/main/scala/sbt/IvyUtil.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/IvyUtil.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement private[sbt] object IvyUtil { def separate[A, B](l: Seq[Either[A, B]]): (Seq[A], Seq[B]) = diff --git a/librarymanagement/src/main/scala/sbt/JsonUtil.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/JsonUtil.scala similarity index 97% rename from librarymanagement/src/main/scala/sbt/JsonUtil.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/JsonUtil.scala index f83ee21ff..8842301ea 100644 --- a/librarymanagement/src/main/scala/sbt/JsonUtil.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/JsonUtil.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement import java.io.File import java.net.URL @@ -7,6 +7,7 @@ import core.module.descriptor.ModuleDescriptor import sbt.serialization._ import java.net.{ URLEncoder, URLDecoder } import sbt.util.Logger +import sbt.librarymanagement._ private[sbt] object JsonUtil { def sbtOrgTemp = "org.scala-sbt.temp" diff --git a/librarymanagement/src/main/scala/sbt/LogicalClock.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/LogicalClock.scala similarity index 94% rename from librarymanagement/src/main/scala/sbt/LogicalClock.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/LogicalClock.scala index 83c516a17..b8ce426e7 100644 --- a/librarymanagement/src/main/scala/sbt/LogicalClock.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/LogicalClock.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement /** * Represents a logical time point for dependency resolution. diff --git a/librarymanagement/src/main/scala/sbt/MakePom.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/MakePom.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/MakePom.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/MakePom.scala index 2f4640c39..a8489119c 100644 --- a/librarymanagement/src/main/scala/sbt/MakePom.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/MakePom.scala @@ -5,12 +5,12 @@ // based on Ivy's PomModuleDescriptorWriter, which is Apache Licensed, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -package sbt +package sbt.internal.librarymanagement import java.io.File import sbt.util.Logger - -import sbt.mavenint.PomExtraDependencyAttributes +import sbt.librarymanagement._ +import mavenint.PomExtraDependencyAttributes // Node needs to be renamed to XNode because the task subproject contains a Node type that will shadow // scala.xml.Node when generating aggregated API documentation @@ -23,6 +23,7 @@ import org.apache.ivy.core.module.descriptor.{ DependencyArtifactDescriptor, Dep import org.apache.ivy.plugins.resolver.{ ChainResolver, DependencyResolver, IBiblioResolver } import ivyint.CustomRemoteMavenResolver import sbt.io.IO + object MakePom { /** True if the revision is an ivy-range, not a complete revision. */ def isDependencyVersionRange(revision: String): Boolean = { diff --git a/librarymanagement/src/main/scala/sbt/ProjectResolver.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ProjectResolver.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/ProjectResolver.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ProjectResolver.scala index 61c811e7b..760f63f52 100644 --- a/librarymanagement/src/main/scala/sbt/ProjectResolver.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ProjectResolver.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2011 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.io.File import java.util.Date @@ -15,6 +15,7 @@ import org.apache.ivy.plugins.namespace.Namespace import org.apache.ivy.plugins.resolver.{ DependencyResolver, ResolverSettings } import report.{ ArtifactDownloadReport, DownloadReport, DownloadStatus, MetadataArtifactDownloadReport } import resolve.{ DownloadOptions, ResolveData, ResolvedModuleRevision } +import sbt.librarymanagement._ /** * A Resolver that uses a predefined mapping from module ids to in-memory descriptors. diff --git a/librarymanagement/src/main/scala/sbt/ResolutionCache.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ResolutionCache.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/ResolutionCache.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ResolutionCache.scala index 30b8d74f7..26b85b0b7 100644 --- a/librarymanagement/src/main/scala/sbt/ResolutionCache.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ResolutionCache.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement import java.io.File import java.io.FileInputStream @@ -13,6 +13,7 @@ import core.module.descriptor.ModuleDescriptor import ResolutionCache.{ Name, ReportDirectory, ResolvedName, ResolvedPattern } import parser.xml.XmlModuleDescriptorParser import sbt.io.IO +import sbt.librarymanagement._ /** * Replaces the standard Ivy resolution cache in order to: diff --git a/librarymanagement/src/main/scala/sbt/SbtExclusionRule.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/SbtExclusionRule.scala similarity index 93% rename from librarymanagement/src/main/scala/sbt/SbtExclusionRule.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/SbtExclusionRule.scala index 6e897a16b..1f6c27c47 100644 --- a/librarymanagement/src/main/scala/sbt/SbtExclusionRule.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/SbtExclusionRule.scala @@ -1,6 +1,7 @@ -package sbt +package sbt.internal.librarymanagement -import sbt.impl.{ GroupID, GroupArtifactID } +import impl.{ GroupID, GroupArtifactID } +import sbt.librarymanagement._ final class SbtExclusionRule( val organization: String, diff --git a/librarymanagement/src/main/scala/sbt/StringUtilities.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/StringUtilities.scala similarity index 92% rename from librarymanagement/src/main/scala/sbt/StringUtilities.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/StringUtilities.scala index 40018250e..00541d441 100644 --- a/librarymanagement/src/main/scala/sbt/StringUtilities.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/StringUtilities.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2009 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement import java.util.Locale diff --git a/librarymanagement/src/main/scala/sbt/cross/CrossVersionUtil.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/cross/CrossVersionUtil.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/cross/CrossVersionUtil.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/cross/CrossVersionUtil.scala index c890980fc..fee1ae4ef 100644 --- a/librarymanagement/src/main/scala/sbt/cross/CrossVersionUtil.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/cross/CrossVersionUtil.scala @@ -1,4 +1,5 @@ -package sbt.cross +package sbt.internal.librarymanagement +package cross object CrossVersionUtil { diff --git a/librarymanagement/src/main/scala/sbt/impl/DependencyBuilders.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/impl/DependencyBuilders.scala similarity index 97% rename from librarymanagement/src/main/scala/sbt/impl/DependencyBuilders.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/impl/DependencyBuilders.scala index c449393f7..f589e7674 100755 --- a/librarymanagement/src/main/scala/sbt/impl/DependencyBuilders.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/impl/DependencyBuilders.scala @@ -1,10 +1,11 @@ /* sbt -- Simple Build Tool * Copyright 2009,2010 Mark Harrah */ -package sbt +package sbt.internal.librarymanagement package impl import StringUtilities.nonEmpty +import sbt.librarymanagement._ trait DependencyBuilders { final implicit def toGroupID(groupID: String): GroupID = diff --git a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala index 1fc3291a4..adabbeb47 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement package ivyint import java.util.Date @@ -19,11 +19,12 @@ import core.{ IvyPatternHelper, LogOptions } import org.apache.ivy.util.{ Message, MessageLogger } import org.apache.ivy.plugins.latest.{ ArtifactInfo => IvyArtifactInfo } import org.apache.ivy.plugins.matcher.{ MapMatcher, PatternMatcher } -import Configurations.{ System => _, _ } import annotation.tailrec import scala.concurrent.duration._ import sbt.io.{ DirectoryFilter, Hash, IO, Path } import sbt.util.Logger +import sbt.librarymanagement._ +import Configurations.{ System => _, _ } private[sbt] object CachedResolutionResolveCache { def createID(organization: String, name: String, revision: String) = diff --git a/librarymanagement/src/main/scala/sbt/ivyint/CustomMavenResolver.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CustomMavenResolver.scala similarity index 80% rename from librarymanagement/src/main/scala/sbt/ivyint/CustomMavenResolver.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CustomMavenResolver.scala index e3e41148e..3fc19aed9 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/CustomMavenResolver.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/CustomMavenResolver.scala @@ -1,7 +1,8 @@ -package sbt +package sbt.internal.librarymanagement package ivyint import org.apache.ivy.plugins.resolver.DependencyResolver +import sbt.librarymanagement._ // These are placeholder traits for sbt-aether-resolver trait CustomMavenResolver extends DependencyResolver { diff --git a/librarymanagement/src/main/scala/sbt/ivyint/ErrorMessageAuthenticator.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/ErrorMessageAuthenticator.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/ivyint/ErrorMessageAuthenticator.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/ErrorMessageAuthenticator.scala index 5d067d313..9a889d808 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/ErrorMessageAuthenticator.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/ErrorMessageAuthenticator.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement package ivyint import java.lang.reflect.Field diff --git a/librarymanagement/src/main/scala/sbt/ivyint/IvyCredentialsLookup.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/IvyCredentialsLookup.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/ivyint/IvyCredentialsLookup.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/IvyCredentialsLookup.scala index aeef4d428..88a237910 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/IvyCredentialsLookup.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/IvyCredentialsLookup.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement package ivyint import org.apache.ivy.util.url.CredentialsStore diff --git a/librarymanagement/src/main/scala/sbt/ivyint/MergeDescriptors.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/MergeDescriptors.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/ivyint/MergeDescriptors.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/MergeDescriptors.scala index 76bb4d2af..03e043043 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/MergeDescriptors.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/MergeDescriptors.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement package ivyint import java.io.File diff --git a/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtChainResolver.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtChainResolver.scala index 2ca80898f..c67c77b7e 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/SbtChainResolver.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtChainResolver.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement package ivyint import java.io.File @@ -16,6 +16,7 @@ import org.apache.ivy.plugins.resolver._ import org.apache.ivy.plugins.resolver.util.{ HasLatestStrategy, ResolvedResource } import org.apache.ivy.util.{ Message, StringUtils => IvyStringUtils } import sbt.util.Logger +import sbt.librarymanagement._ private[sbt] case class SbtChainResolver( name: String, diff --git a/librarymanagement/src/main/scala/sbt/ivyint/SbtDefaultDependencyDescriptor.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtDefaultDependencyDescriptor.scala similarity index 75% rename from librarymanagement/src/main/scala/sbt/ivyint/SbtDefaultDependencyDescriptor.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtDefaultDependencyDescriptor.scala index 0a3338fac..f4f281a50 100644 --- a/librarymanagement/src/main/scala/sbt/ivyint/SbtDefaultDependencyDescriptor.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtDefaultDependencyDescriptor.scala @@ -1,8 +1,9 @@ -package sbt +package sbt.internal.librarymanagement package ivyint import org.apache.ivy.core import core.module.descriptor.DefaultDependencyDescriptor +import sbt.librarymanagement._ trait SbtDefaultDependencyDescriptor { self: DefaultDependencyDescriptor => def dependencyModuleId: ModuleID diff --git a/librarymanagement/src/main/scala/sbt/mavenint/PomExtraDependencyAttributes.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/mavenint/PomExtraDependencyAttributes.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/mavenint/PomExtraDependencyAttributes.scala rename to librarymanagement/src/main/scala/sbt/internal/librarymanagement/mavenint/PomExtraDependencyAttributes.scala index ab87cae75..a1091aed4 100644 --- a/librarymanagement/src/main/scala/sbt/mavenint/PomExtraDependencyAttributes.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/mavenint/PomExtraDependencyAttributes.scala @@ -1,4 +1,5 @@ -package sbt.mavenint +package sbt.internal.librarymanagement +package mavenint import java.util.Properties import java.util.regex.Pattern diff --git a/librarymanagement/src/main/scala/sbt/Artifact.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/Artifact.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/Artifact.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/Artifact.scala index 4cafb0e67..93dc66fcb 100644 --- a/librarymanagement/src/main/scala/sbt/Artifact.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/Artifact.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.librarymanagement import java.io.File import java.net.URL diff --git a/librarymanagement/src/main/scala/sbt/CircularDependencyLevel.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/CircularDependencyLevel.scala similarity index 97% rename from librarymanagement/src/main/scala/sbt/CircularDependencyLevel.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/CircularDependencyLevel.scala index 3c2f62bc6..0fc32c015 100644 --- a/librarymanagement/src/main/scala/sbt/CircularDependencyLevel.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/CircularDependencyLevel.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.librarymanagement import org.apache.ivy.plugins.circular.{ CircularDependencyStrategy, WarnCircularDependencyStrategy, IgnoreCircularDependencyStrategy, ErrorCircularDependencyStrategy } diff --git a/librarymanagement/src/main/scala/sbt/Configuration.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/Configuration.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/Configuration.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/Configuration.scala index d2307b89d..95c8119da 100644 --- a/librarymanagement/src/main/scala/sbt/Configuration.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/Configuration.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.librarymanagement import sbt.serialization._ diff --git a/librarymanagement/src/main/scala/sbt/ConflictWarning.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/ConflictWarning.scala similarity index 78% rename from librarymanagement/src/main/scala/sbt/ConflictWarning.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/ConflictWarning.scala index 75a4a5bd9..ab98c67af 100644 --- a/librarymanagement/src/main/scala/sbt/ConflictWarning.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/ConflictWarning.scala @@ -1,6 +1,6 @@ -package sbt +package sbt.librarymanagement -import DependencyFilter._ +import sbt.internal.librarymanagement.DependencyFilter._ import sbt.util.{ Logger, Level } /** @@ -9,16 +9,8 @@ import sbt.util.{ Logger, Level } * library dependency graph by mistake, but it won't be caught by eviction. */ final case class ConflictWarning(label: String, level: Level.Value, failOnConflict: Boolean) { - @deprecated("`filter` is no longer used", "0.13.0") - val filter: ModuleFilter = (_: ModuleID) => false - @deprecated("`group` is no longer used", "0.13.0") - val group: ModuleID => String = ConflictWarning.org } object ConflictWarning { - @deprecated("`group` and `filter` are no longer used. Use a standard Ivy conflict manager.", "0.13.0") - def apply(label: String, filter: ModuleFilter, group: ModuleID => String, level: Level.Value, failOnConflict: Boolean): ConflictWarning = - ConflictWarning(label, level, failOnConflict) - def disable: ConflictWarning = ConflictWarning("", Level.Debug, false) private def org = (_: ModuleID).organization @@ -26,9 +18,6 @@ object ConflictWarning { def default(label: String): ConflictWarning = ConflictWarning(label, Level.Error, true) - @deprecated("Warning on evicted modules is no longer done, so this is the same as `default`. Use a standard Ivy conflict manager.", "0.13.0") - def strict(label: String): ConflictWarning = ConflictWarning(label, Level.Error, true) - def apply(config: ConflictWarning, report: UpdateReport, log: Logger): Unit = { processCrossVersioned(config, report, log) } diff --git a/librarymanagement/src/main/scala/sbt/Credentials.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/Credentials.scala similarity index 97% rename from librarymanagement/src/main/scala/sbt/Credentials.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/Credentials.scala index e2bd74fed..d86a8b774 100644 --- a/librarymanagement/src/main/scala/sbt/Credentials.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/Credentials.scala @@ -1,12 +1,13 @@ /* sbt -- Simple Build Tool * Copyright 2009 Mark Harrah */ -package sbt +package sbt.librarymanagement import java.io.File import org.apache.ivy.util.url.CredentialsStore import sbt.io.IO import sbt.util.Logger +import sbt.internal.librarymanagement.IvyUtil object Credentials { def apply(realm: String, host: String, userName: String, passwd: String): Credentials = diff --git a/librarymanagement/src/main/scala/sbt/CrossVersion.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersion.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/CrossVersion.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersion.scala index b17ac525c..63cee85a3 100644 --- a/librarymanagement/src/main/scala/sbt/CrossVersion.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersion.scala @@ -1,7 +1,8 @@ -package sbt +package sbt.librarymanagement -import cross.CrossVersionUtil import sbt.serialization._ +import sbt.internal.librarymanagement.SbtExclusionRule +import sbt.internal.librarymanagement.cross.CrossVersionUtil final case class ScalaVersion(full: String, binary: String) diff --git a/librarymanagement/src/main/scala/sbt/EvictionWarning.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/EvictionWarning.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/EvictionWarning.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/EvictionWarning.scala index 4d6618b3c..f7b4523e3 100644 --- a/librarymanagement/src/main/scala/sbt/EvictionWarning.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/EvictionWarning.scala @@ -1,10 +1,11 @@ -package sbt +package sbt.librarymanagement import collection.mutable import Configurations.Compile import ScalaArtifacts.{ LibraryID, CompilerID } import sbt.util.Logger import sbt.internal.util.ShowLines +import sbt.internal.librarymanagement.{ IvySbt, InlineConfiguration, InlineConfigurationWithExcludes } final class EvictionWarningOptions private[sbt] ( val configurations: Seq[Configuration], diff --git a/librarymanagement/src/main/scala/sbt/IvyInterface.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/IvyInterface.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/IvyInterface.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/IvyInterface.scala index 3b54c684c..b582a51ed 100644 --- a/librarymanagement/src/main/scala/sbt/IvyInterface.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/IvyInterface.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.librarymanagement import java.io.File import java.net.{ URI, URL } diff --git a/librarymanagement/src/main/scala/sbt/IvyScala.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/IvyScala.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/IvyScala.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/IvyScala.scala index ea82f44ce..a399cb9d9 100644 --- a/librarymanagement/src/main/scala/sbt/IvyScala.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/IvyScala.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.librarymanagement import java.util.Collections.emptyMap import scala.collection.mutable.HashSet @@ -10,7 +10,6 @@ import org.apache.ivy.core.module.descriptor.{ DefaultExcludeRule, ExcludeRule } import org.apache.ivy.core.module.descriptor.{ DependencyDescriptor, DefaultModuleDescriptor, ModuleDescriptor, OverrideDependencyDescriptorMediator } import org.apache.ivy.core.module.id.{ ArtifactId, ModuleId, ModuleRevisionId } import org.apache.ivy.plugins.matcher.ExactPatternMatcher - import sbt.util.Logger object ScalaArtifacts { @@ -35,7 +34,7 @@ import ScalaArtifacts._ final case class IvyScala(scalaFullVersion: String, scalaBinaryVersion: String, configurations: Iterable[Configuration], checkExplicit: Boolean, filterImplicit: Boolean, overrideScalaVersion: Boolean, scalaOrganization: String = ScalaArtifacts.Organization) -private object IvyScala { +private[sbt] object IvyScala { /** Performs checks/adds filters on Scala dependencies (if enabled in IvyScala). */ def checkModule(module: DefaultModuleDescriptor, conf: String, log: Logger)(check: IvyScala): Unit = { if (check.checkExplicit) diff --git a/librarymanagement/src/main/scala/sbt/ModuleID.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleID.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/ModuleID.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/ModuleID.scala index 10647dcad..46b63ce39 100644 --- a/librarymanagement/src/main/scala/sbt/ModuleID.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleID.scala @@ -1,11 +1,11 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.librarymanagement import java.net.URL -import sbt.mavenint.SbtPomExtraProperties +import sbt.internal.librarymanagement.mavenint.SbtPomExtraProperties import sbt.serialization._ final case class ModuleID(organization: String, name: String, revision: String, configurations: Option[String] = None, isChanging: Boolean = false, isTransitive: Boolean = true, isForce: Boolean = false, explicitArtifacts: Seq[Artifact] = Nil, exclusions: Seq[ExclusionRule] = Nil, extraAttributes: Map[String, String] = Map.empty, crossVersion: CrossVersion = CrossVersion.Disabled) { diff --git a/librarymanagement/src/main/scala/sbt/Resolver.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/Resolver.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/Resolver.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/Resolver.scala index ec2564b43..a44615784 100644 --- a/librarymanagement/src/main/scala/sbt/Resolver.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/Resolver.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt +package sbt.librarymanagement import java.io.{ IOException, File } import java.net.URL diff --git a/librarymanagement/src/main/scala/sbt/UpdateOptions.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateOptions.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/UpdateOptions.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/UpdateOptions.scala index 91fa7902d..2ff9bf80f 100644 --- a/librarymanagement/src/main/scala/sbt/UpdateOptions.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateOptions.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.librarymanagement import java.io.File import org.apache.ivy.plugins.resolver.DependencyResolver diff --git a/librarymanagement/src/main/scala/sbt/UpdateReport.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateReport.scala similarity index 97% rename from librarymanagement/src/main/scala/sbt/UpdateReport.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/UpdateReport.scala index 5a866632a..8f03a2939 100644 --- a/librarymanagement/src/main/scala/sbt/UpdateReport.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/UpdateReport.scala @@ -1,12 +1,13 @@ /* sbt -- Simple Build Tool * Copyright 2011 Mark Harrah */ -package sbt +package sbt.librarymanagement import java.io.File import java.net.URL import java.{ util => ju } import sbt.serialization._ +import sbt.internal.librarymanagement.{ DependencyFilter, ConfigurationFilter, ModuleFilter, ArtifactFilter } /** * Provides information about resolution of a single configuration. @@ -225,14 +226,15 @@ object UpdateReport { } import DependencyFilter._ + /** Obtains all successfully retrieved files in all configurations and modules. */ def allFiles: Seq[File] = matching(DependencyFilter.allPass) /** Obtains all successfully retrieved files in configurations, modules, and artifacts matching the specified filter. */ - def matching(f: DependencyFilter): Seq[File] = select0(f).distinct + private[sbt] def matching(f: DependencyFilter): Seq[File] = select0(f).distinct /** Obtains all successfully retrieved files matching all provided filters. An unspecified argument matches all files. */ - def select(configuration: ConfigurationFilter = configurationFilter(), module: ModuleFilter = moduleFilter(), artifact: ArtifactFilter = artifactFilter()): Seq[File] = + private[sbt] def select(configuration: ConfigurationFilter = configurationFilter(), module: ModuleFilter = moduleFilter(), artifact: ArtifactFilter = artifactFilter()): Seq[File] = matching(DependencyFilter.make(configuration, module, artifact)) private[this] def select0(f: DependencyFilter): Seq[File] = @@ -242,7 +244,7 @@ object UpdateReport { } /** Constructs a new report that only contains files matching the specified filter.*/ - def filter(f: DependencyFilter): UpdateReport = + private[sbt] def filter(f: DependencyFilter): UpdateReport = moduleReportMap { (configuration, modReport) => modReport.copy( artifacts = modReport.artifacts filter { case (art, file) => f(configuration, modReport.module, art) }, diff --git a/librarymanagement/src/main/scala/sbt/VersionNumber.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/VersionNumber.scala similarity index 99% rename from librarymanagement/src/main/scala/sbt/VersionNumber.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/VersionNumber.scala index a5d1d494b..226126bc3 100644 --- a/librarymanagement/src/main/scala/sbt/VersionNumber.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/VersionNumber.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.librarymanagement final class VersionNumber private[sbt] ( val numbers: Seq[Long], diff --git a/librarymanagement/src/test/scala/BaseIvySpecification.scala b/librarymanagement/src/test/scala/BaseIvySpecification.scala index a9936e956..7ac8a3014 100644 --- a/librarymanagement/src/test/scala/BaseIvySpecification.scala +++ b/librarymanagement/src/test/scala/BaseIvySpecification.scala @@ -1,13 +1,15 @@ -package sbt +package sbt.internal.librarymanagement -import sbt.io.Path._, Configurations._ +import sbt.io.Path._ import sbt.io.IO import java.io.File import cross.CrossVersionUtil -import sbt.ivyint.SbtChainResolver import sbt.util.Logger import sbt.internal.util.ConsoleLogger import sbt.internal.util.UnitSpec +import sbt.librarymanagement._ +import ivyint.SbtChainResolver +import Configurations._ trait BaseIvySpecification extends UnitSpec { def currentBase: File = new File(".") diff --git a/librarymanagement/src/test/scala/CachedResolutionSpec.scala b/librarymanagement/src/test/scala/CachedResolutionSpec.scala index 48ee003c0..5950fba99 100644 --- a/librarymanagement/src/test/scala/CachedResolutionSpec.scala +++ b/librarymanagement/src/test/scala/CachedResolutionSpec.scala @@ -1,6 +1,7 @@ -package sbt +package sbt.internal.librarymanagement import sbt.internal.util.ShowLines +import sbt.librarymanagement._ class CachedResolutionSpec extends BaseIvySpecification { import ShowLines._ diff --git a/librarymanagement/src/test/scala/ComponentManagerTest.scala b/librarymanagement/src/test/scala/ComponentManagerTest.scala index 22923f62f..800f5de0c 100644 --- a/librarymanagement/src/test/scala/ComponentManagerTest.scala +++ b/librarymanagement/src/test/scala/ComponentManagerTest.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement import java.io.File import java.util.concurrent.Callable diff --git a/librarymanagement/src/test/scala/CrossVersionTest.scala b/librarymanagement/src/test/scala/CrossVersionTest.scala index 33e1f62f2..3f8a608ea 100644 --- a/librarymanagement/src/test/scala/CrossVersionTest.scala +++ b/librarymanagement/src/test/scala/CrossVersionTest.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.librarymanagement import java.io.File import sbt.internal.util.UnitSpec diff --git a/librarymanagement/src/test/scala/CustomPomParserTest.scala b/librarymanagement/src/test/scala/CustomPomParserTest.scala index e8319ba2b..62e9edec2 100644 --- a/librarymanagement/src/test/scala/CustomPomParserTest.scala +++ b/librarymanagement/src/test/scala/CustomPomParserTest.scala @@ -1,8 +1,10 @@ +package sbt.internal.librarymanagement + import java.io.File import org.apache.ivy.core.module.descriptor.{ Artifact => IvyArtifact } import org.apache.ivy.core.module.id.ModuleRevisionId import org.apache.ivy.core.resolve.ResolveOptions -import sbt._ +import sbt.librarymanagement._ import sbt.io.IO.withTemporaryDirectory import sbt.util.Logger import sbt.internal.util.ConsoleLogger diff --git a/librarymanagement/src/test/scala/DMSerializationSpec.scala b/librarymanagement/src/test/scala/DMSerializationSpec.scala index 532fae381..e35ea9748 100644 --- a/librarymanagement/src/test/scala/DMSerializationSpec.scala +++ b/librarymanagement/src/test/scala/DMSerializationSpec.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.librarymanagement import java.net.URL import java.io.File @@ -7,13 +7,13 @@ import sbt.internal.util.UnitSpec class DMSerializationSpec extends UnitSpec { "CrossVersion.full" should "roundtrip" in { - roundtripStr(CrossVersion.full: sbt.CrossVersion) + roundtripStr(CrossVersion.full: CrossVersion) } "CrossVersion.binary" should "roundtrip" in { - roundtripStr(CrossVersion.binary: sbt.CrossVersion) + roundtripStr(CrossVersion.binary: CrossVersion) } "CrossVersion.Disabled" should "roundtrip" in { - roundtrip(CrossVersion.Disabled: sbt.CrossVersion) + roundtrip(CrossVersion.Disabled: CrossVersion) } """Artifact("foo")""" should "roundtrip" in { roundtrip(Artifact("foo")) diff --git a/librarymanagement/src/test/scala/EvictionWarningSpec.scala b/librarymanagement/src/test/scala/EvictionWarningSpec.scala index a2f30fb3b..46dea91f2 100644 --- a/librarymanagement/src/test/scala/EvictionWarningSpec.scala +++ b/librarymanagement/src/test/scala/EvictionWarningSpec.scala @@ -1,4 +1,6 @@ -package sbt +package sbt.librarymanagement + +import sbt.internal.librarymanagement.BaseIvySpecification class EvictionWarningSpec extends BaseIvySpecification { // This is a specification to check the eviction warnings diff --git a/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala b/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala index 343149e85..5bcbcebcd 100644 --- a/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala +++ b/librarymanagement/src/test/scala/InconsistentDuplicateSpec.scala @@ -1,6 +1,7 @@ -package sbt +package sbt.internal.librarymanagement import sbt.internal.util.UnitSpec +import sbt.librarymanagement._ // This is a specification to check the inconsistent duplicate warnings class InconsistentDuplicateSpec extends UnitSpec { diff --git a/librarymanagement/src/test/scala/MakePomSpec.scala b/librarymanagement/src/test/scala/MakePomSpec.scala index 5f0513556..726e397b1 100644 --- a/librarymanagement/src/test/scala/MakePomSpec.scala +++ b/librarymanagement/src/test/scala/MakePomSpec.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.internal.librarymanagement import java.io.File import sbt.util.Logger diff --git a/librarymanagement/src/test/scala/ResolverTest.scala b/librarymanagement/src/test/scala/ResolverTest.scala index adfb9c576..499e86db4 100644 --- a/librarymanagement/src/test/scala/ResolverTest.scala +++ b/librarymanagement/src/test/scala/ResolverTest.scala @@ -1,3 +1,5 @@ +package sbt.librarymanagement + import java.net.URL import sbt._ diff --git a/librarymanagement/src/test/scala/VersionNumberSpec.scala b/librarymanagement/src/test/scala/VersionNumberSpec.scala index 3e7b8c631..9f882f30e 100644 --- a/librarymanagement/src/test/scala/VersionNumberSpec.scala +++ b/librarymanagement/src/test/scala/VersionNumberSpec.scala @@ -1,4 +1,4 @@ -package sbt +package sbt.librarymanagement import sbt.internal.util.UnitSpec From 9a42d645e9e654d3988196ae163b5f32924dbd4b Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 7 Sep 2015 04:40:23 -0400 Subject: [PATCH 8/8] Publish test artifacts --- build.sbt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 92bca0d1a..87fcf9194 100644 --- a/build.sbt +++ b/build.sbt @@ -15,7 +15,9 @@ def commonSettings: Seq[Setting[_]] = Seq( crossScalaVersions := Seq(scala210, scala211), bintrayPackage := (bintrayPackage in ThisBuild).value, bintrayRepository := (bintrayRepository in ThisBuild).value, - resolvers += Resolver.sonatypeRepo("public") + resolvers += Resolver.sonatypeRepo("public"), + publishArtifact in Compile := true, + publishArtifact in Test := true ) lazy val root = (project in file(".")). @@ -43,6 +45,8 @@ lazy val root = (project in file(".")). name := "LM Root", publish := {}, publishLocal := {}, + publishArtifact in Compile := false, + publishArtifact in Test := false, publishArtifact := false )