From 036e57c11478bf4ac6fe59fd6f20f4cb015f289e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 11:52:12 -0400 Subject: [PATCH 01/70] sbt.Build => sbt.internal.BuildDef sbt.Load => sbt.internal.Load --- main/src/main/scala/sbt/BuildStructure.scala | 13 +-- main/src/main/scala/sbt/BuildUtil.scala | 1 + main/src/main/scala/sbt/EvaluateTask.scala | 1 + main/src/main/scala/sbt/Extracted.scala | 1 + main/src/main/scala/sbt/GlobalPlugin.scala | 2 +- main/src/main/scala/sbt/IvyConsole.scala | 1 + main/src/main/scala/sbt/Main.scala | 1 + main/src/main/scala/sbt/Plugin.scala | 18 ++++ main/src/main/scala/sbt/PluginDiscovery.scala | 10 +- main/src/main/scala/sbt/Project.scala | 1 + .../main/scala/sbt/ProjectNavigation.scala | 1 + main/src/main/scala/sbt/Resolvers.scala | 1 + main/src/main/scala/sbt/RetrieveUnit.scala | 2 +- main/src/main/scala/sbt/ScopeFilter.scala | 1 + main/src/main/scala/sbt/Script.scala | 1 + .../main/scala/sbt/SettingCompletions.scala | 1 + .../{Build.scala => internal/BuildDef.scala} | 32 ++---- .../sbt/{ => internal}/BuildLoader.scala | 1 + .../main/scala/sbt/{ => internal}/Load.scala | 97 +++++++------------ 19 files changed, 86 insertions(+), 100 deletions(-) create mode 100644 main/src/main/scala/sbt/Plugin.scala rename main/src/main/scala/sbt/{Build.scala => internal/BuildDef.scala} (67%) rename main/src/main/scala/sbt/{ => internal}/BuildLoader.scala (99%) rename main/src/main/scala/sbt/{ => internal}/Load.scala (92%) diff --git a/main/src/main/scala/sbt/BuildStructure.scala b/main/src/main/scala/sbt/BuildStructure.scala index 97419b376..a490f1fec 100644 --- a/main/src/main/scala/sbt/BuildStructure.scala +++ b/main/src/main/scala/sbt/BuildStructure.scala @@ -9,6 +9,7 @@ import Def.{ displayFull, ScopedKey, ScopeLocal, Setting } import BuildPaths.outputDirectory import Scope.GlobalScope import BuildStreams.Streams +import sbt.internal.{ BuildDef, Load } import sbt.io.Path._ import sbt.internal.util.{ Attributed, AttributeEntry, AttributeKey, AttributeMap, Settings } import sbt.internal.util.Attributed.data @@ -74,9 +75,9 @@ final class LoadedBuildUnit(val unit: BuildUnit, val defined: Map[String, Resolv * @param base The base directory of the build definition, typically `/project/`. * @param loader The ClassLoader containing all classes and plugins for the build definition project. * Note that this does not include classes for .sbt files. - * @param builds The list of [[Build]]s for the build unit. - * In addition to auto-discovered [[Build]]s, this includes any auto-generated default [[Build]]s. - * @param projects The list of all [[Project]]s from all [[Build]]s. + * @param builds The list of [[BuildDef]]s for the build unit. + * In addition to auto-discovered [[BuildDef]]s, this includes any auto-generated default [[BuildDef]]s. + * @param projects The list of all [[Project]]s from all [[BuildDef]]s. * These projects have not yet been resolved, but they have had auto-plugins applied. * In particular, each [[Project]]'s `autoPlugins` field is populated according to their configured `plugins` * and their `settings` and `configurations` updated as appropriate. @@ -86,14 +87,14 @@ final class LoadedDefinitions( val base: File, val target: Seq[File], val loader: ClassLoader, - val builds: Seq[Build], + val builds: Seq[BuildDef], val projects: Seq[Project], val buildNames: Seq[String], val dslDefinitions: DefinedSbtValues) { def this(base: File, target: Seq[File], loader: ClassLoader, - builds: Seq[Build], + builds: Seq[BuildDef], projects: Seq[Project], buildNames: Seq[String]) = this(base, target, loader, builds, projects, buildNames, DefinedSbtValues.empty) } @@ -122,7 +123,7 @@ case class DetectedAutoPlugin(name: String, value: AutoPlugin, hasAutoImport: Bo * * @param builds The [[Build]]s detected in the build definition. This does not include the default [[Build]] that sbt creates if none is defined. */ -final class DetectedPlugins(val plugins: DetectedModules[Plugin], val autoPlugins: Seq[DetectedAutoPlugin], val builds: DetectedModules[Build]) { +final class DetectedPlugins(val plugins: DetectedModules[Plugin], val autoPlugins: Seq[DetectedAutoPlugin], val builds: DetectedModules[BuildDef]) { /** Sequence of import expressions for the build definition. This includes the names of the [[Plugin]], [[Build]], and [[AutoImport]] modules, but not the [[AutoPlugin]] modules. */ lazy val imports: Seq[String] = BuildUtil.getImports(plugins.names ++ builds.names) ++ BuildUtil.importAllRoot(autoImports(autoPluginAutoImports)) ++ diff --git a/main/src/main/scala/sbt/BuildUtil.scala b/main/src/main/scala/sbt/BuildUtil.scala index 98e96d89c..cbe1e03aa 100644 --- a/main/src/main/scala/sbt/BuildUtil.scala +++ b/main/src/main/scala/sbt/BuildUtil.scala @@ -1,6 +1,7 @@ package sbt import sbt.internal.util.{ Relation, Settings, Dag } +import sbt.internal.Load import java.net.URI diff --git a/main/src/main/scala/sbt/EvaluateTask.scala b/main/src/main/scala/sbt/EvaluateTask.scala index 2374bb893..ade1a731b 100644 --- a/main/src/main/scala/sbt/EvaluateTask.scala +++ b/main/src/main/scala/sbt/EvaluateTask.scala @@ -3,6 +3,7 @@ */ package sbt +import sbt.internal.Load import sbt.internal.util.{ ErrorHandling, RMap, Show, Signals, Types } import sbt.util.Logger import sbt.librarymanagement.{ Resolver, UpdateReport } diff --git a/main/src/main/scala/sbt/Extracted.scala b/main/src/main/scala/sbt/Extracted.scala index 7661de91f..a5174504c 100644 --- a/main/src/main/scala/sbt/Extracted.scala +++ b/main/src/main/scala/sbt/Extracted.scala @@ -1,5 +1,6 @@ package sbt +import sbt.internal.Load import Project._ import Scope.GlobalScope import Def.{ ScopedKey, Setting } diff --git a/main/src/main/scala/sbt/GlobalPlugin.scala b/main/src/main/scala/sbt/GlobalPlugin.scala index dc97fdfa6..07c72da47 100644 --- a/main/src/main/scala/sbt/GlobalPlugin.scala +++ b/main/src/main/scala/sbt/GlobalPlugin.scala @@ -3,7 +3,7 @@ package sbt import sbt.librarymanagement.{ Configuration, Configurations, ModuleID, Resolver, SbtArtifacts, UpdateReport } import sbt.internal.util.Attributed -import Load.{ BuildStructure => _, _ } +import sbt.internal.{ Load, LoadBuildConfiguration } import Def.{ ScopedKey, Setting } import Scoped._ import Keys._ diff --git a/main/src/main/scala/sbt/IvyConsole.scala b/main/src/main/scala/sbt/IvyConsole.scala index 0feb68156..2b06f0c5b 100644 --- a/main/src/main/scala/sbt/IvyConsole.scala +++ b/main/src/main/scala/sbt/IvyConsole.scala @@ -3,6 +3,7 @@ */ package sbt +import sbt.internal.Load import sbt.internal.util.Attributed import sbt.util.{ Level, Logger } diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index 395c7cdaf..d899587e6 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -3,6 +3,7 @@ */ package sbt +import sbt.internal.Load import sbt.internal.util.{ AttributeKey, AttributeMap, complete, ConsoleOut, GlobalLogging, LineRange, MainLogging, SimpleReader, Types } import sbt.util.{ Level, Logger } diff --git a/main/src/main/scala/sbt/Plugin.scala b/main/src/main/scala/sbt/Plugin.scala new file mode 100644 index 000000000..0634d1718 --- /dev/null +++ b/main/src/main/scala/sbt/Plugin.scala @@ -0,0 +1,18 @@ +package sbt + +import Def.Setting + +// TODO 0.14.0: decide if Plugin should be deprecated in favor of AutoPlugin +trait Plugin { + @deprecated("Override projectSettings or buildSettings instead.", "0.12.0") + def settings: Seq[Setting[_]] = Nil + + /** Settings to be appended to all projects in a build. */ + def projectSettings: Seq[Setting[_]] = Nil + + /** Settings to be appended at the build scope. */ + def buildSettings: Seq[Setting[_]] = Nil + + /** Settings to be appended at the global scope. */ + def globalSettings: Seq[Setting[_]] = Nil +} diff --git a/main/src/main/scala/sbt/PluginDiscovery.scala b/main/src/main/scala/sbt/PluginDiscovery.scala index 11c729178..0fc6d3012 100644 --- a/main/src/main/scala/sbt/PluginDiscovery.scala +++ b/main/src/main/scala/sbt/PluginDiscovery.scala @@ -1,11 +1,11 @@ package sbt import sbt.internal.util.Attributed - +import sbt.internal.{ BuildDef, IncompatiblePluginsException } import java.io.File import java.net.URL import Attributed.data -import Build.analyzed +import sbt.internal.BuildDef.analyzed import xsbt.api.{ Discovered, Discovery } import xsbti.compile.CompileAnalysis import sbt.internal.inc.ModuleUtilities @@ -22,7 +22,7 @@ object PluginDiscovery { final val Plugins = "sbt/sbt.plugins" final val Builds = "sbt/sbt.builds" } - /** Names of top-level modules that subclass sbt plugin-related classes: [[Plugin]], [[AutoPlugin]], and [[Build]]. */ + /** Names of top-level modules that subclass sbt plugin-related classes: [[Plugin]], [[AutoPlugin]], and [[BuildDef]]. */ final class DiscoveredNames(val plugins: Seq[String], val autoPlugins: Seq[String], val builds: Seq[String]) def emptyDiscoveredNames: DiscoveredNames = new DiscoveredNames(Nil, Nil, Nil) @@ -45,7 +45,7 @@ object PluginDiscovery { case (name, value) => DetectedAutoPlugin(name, value, sbt.Plugins.hasAutoImportGetter(value, loader)) } - new DetectedPlugins(discover[Plugin](Plugins), allAutoPlugins, discover[Build](Builds)) + new DetectedPlugins(discover[Plugin](Plugins), allAutoPlugins, discover[BuildDef](Builds)) } /** Discovers the sbt-plugin-related top-level modules from the provided source `analysis`. */ @@ -53,7 +53,7 @@ object PluginDiscovery { { def discover[T](implicit classTag: reflect.ClassTag[T]): Seq[String] = sourceModuleNames(analysis, classTag.runtimeClass.getName) - new DiscoveredNames(discover[Plugin], discover[AutoPlugin], discover[Build]) + new DiscoveredNames(discover[Plugin], discover[AutoPlugin], discover[BuildDef]) } // TODO: for 0.14.0, consider consolidating into a single file, which would make the classpath search 4x faster diff --git a/main/src/main/scala/sbt/Project.scala b/main/src/main/scala/sbt/Project.scala index 315a665af..93eac1555 100755 --- a/main/src/main/scala/sbt/Project.scala +++ b/main/src/main/scala/sbt/Project.scala @@ -10,6 +10,7 @@ import Project.{ Initialize => _, Setting => _, _ } import Keys.{ appConfiguration, stateBuildStructure, commands, configuration, historyPath, projectCommand, sessionSettings, shellPrompt, thisProject, thisProjectRef, watch } import Scope.{ GlobalScope, ThisScope } import Def.{ Flattened, Initialize, ScopedKey, Setting } +import sbt.internal.Load import sbt.internal.util.Types.{ const, idFun } import sbt.internal.util.complete.DefaultParsers import sbt.librarymanagement.Configuration diff --git a/main/src/main/scala/sbt/ProjectNavigation.scala b/main/src/main/scala/sbt/ProjectNavigation.scala index 51806506b..a7dfd28de 100644 --- a/main/src/main/scala/sbt/ProjectNavigation.scala +++ b/main/src/main/scala/sbt/ProjectNavigation.scala @@ -3,6 +3,7 @@ */ package sbt +import sbt.internal.Load import sbt.internal.util.complete import ProjectNavigation._ diff --git a/main/src/main/scala/sbt/Resolvers.scala b/main/src/main/scala/sbt/Resolvers.scala index 5382e7924..ed3f1541a 100644 --- a/main/src/main/scala/sbt/Resolvers.scala +++ b/main/src/main/scala/sbt/Resolvers.scala @@ -4,6 +4,7 @@ package sbt +import sbt.internal.BuildLoader import sbt.internal.librarymanagement.StringUtilities import sbt.io.{ Hash, IO } diff --git a/main/src/main/scala/sbt/RetrieveUnit.scala b/main/src/main/scala/sbt/RetrieveUnit.scala index f00372da6..1ad7bcd2a 100644 --- a/main/src/main/scala/sbt/RetrieveUnit.scala +++ b/main/src/main/scala/sbt/RetrieveUnit.scala @@ -5,7 +5,7 @@ package sbt import java.io.File import java.net.URI -import BuildLoader.ResolveInfo +import sbt.internal.BuildLoader.ResolveInfo import Def.{ ScopedKey, Setting } object RetrieveUnit { diff --git a/main/src/main/scala/sbt/ScopeFilter.scala b/main/src/main/scala/sbt/ScopeFilter.scala index dc1a33ff1..9ed999c7b 100644 --- a/main/src/main/scala/sbt/ScopeFilter.scala +++ b/main/src/main/scala/sbt/ScopeFilter.scala @@ -1,5 +1,6 @@ package sbt +import sbt.internal.Load import sbt.internal.util.{ AttributeKey, Dag, Types } import sbt.librarymanagement.Configuration diff --git a/main/src/main/scala/sbt/Script.scala b/main/src/main/scala/sbt/Script.scala index baa34e63e..0bc037590 100644 --- a/main/src/main/scala/sbt/Script.scala +++ b/main/src/main/scala/sbt/Script.scala @@ -3,6 +3,7 @@ */ package sbt +import sbt.internal.Load import sbt.librarymanagement.Configurations import sbt.util.Level diff --git a/main/src/main/scala/sbt/SettingCompletions.scala b/main/src/main/scala/sbt/SettingCompletions.scala index f7c6655d7..e1b8b16a1 100644 --- a/main/src/main/scala/sbt/SettingCompletions.scala +++ b/main/src/main/scala/sbt/SettingCompletions.scala @@ -1,5 +1,6 @@ package sbt +import sbt.internal.Load import sbt.internal.util.{ AttributeKey, complete, Relation, Settings, Show, Types, Util } import sbt.librarymanagement.Configuration diff --git a/main/src/main/scala/sbt/Build.scala b/main/src/main/scala/sbt/internal/BuildDef.scala similarity index 67% rename from main/src/main/scala/sbt/Build.scala rename to main/src/main/scala/sbt/internal/BuildDef.scala index a88cae1a2..0e7f2370b 100644 --- a/main/src/main/scala/sbt/Build.scala +++ b/main/src/main/scala/sbt/internal/BuildDef.scala @@ -2,6 +2,7 @@ * Copyright 2011 Mark Harrah */ package sbt +package internal import java.io.File import Keys.{ name, organization, thisProject, autoGeneratedProject } @@ -10,8 +11,7 @@ import sbt.io.Hash import sbt.internal.util.Attributed import sbt.internal.inc.ReflectUtilities -// name is more like BuildDefinition, but that is too long -trait Build { +private[sbt] trait BuildDef { def projectDefinitions(baseDirectory: File): Seq[Project] = projects def projects: Seq[Project] = ReflectUtilities.allVals[Project](this).values.toSeq // TODO: Should we grab the build core setting shere or in a plugin? @@ -23,31 +23,16 @@ trait Build { */ def rootProject: Option[Project] = None } -// TODO 0.14.0: decide if Plugin should be deprecated in favor of AutoPlugin -trait Plugin { - @deprecated("Override projectSettings or buildSettings instead.", "0.12.0") - def settings: Seq[Setting[_]] = Nil - /** Settings to be appended to all projects in a build. */ - def projectSettings: Seq[Setting[_]] = Nil - - /** Settings to be appended at the build scope. */ - def buildSettings: Seq[Setting[_]] = Nil - - /** Settings to be appended at the global scope. */ - def globalSettings: Seq[Setting[_]] = Nil -} - -object Build { - val defaultEmpty: Build = new Build { override def projects = Nil } - val default: Build = new Build { override def projectDefinitions(base: File) = defaultProject(defaultID(base), base) :: Nil } - def defaultAggregated(id: String, aggregate: Seq[ProjectRef]): Build = new Build { +private[sbt] object BuildDef { + val defaultEmpty: BuildDef = new BuildDef { override def projects = Nil } + val default: BuildDef = new BuildDef { override def projectDefinitions(base: File) = defaultProject(defaultID(base), base) :: Nil } + def defaultAggregated(id: String, aggregate: Seq[ProjectRef]): BuildDef = new BuildDef { override def projectDefinitions(base: File) = defaultAggregatedProject(id, base, aggregate) :: Nil } def defaultID(base: File, prefix: String = "default"): String = prefix + "-" + Hash.trimHashString(base.getAbsolutePath, 6) - @deprecated("Explicitly specify the ID", "0.13.0") - def defaultProject(base: File): Project = defaultProject(defaultID(base), base) + def defaultProject(id: String, base: File): Project = Project(id, base).settings(defaultProjectSettings) def defaultAggregatedProject(id: String, base: File, agg: Seq[ProjectRef]): Project = defaultProject(id, base).aggregate(agg: _*) @@ -66,8 +51,5 @@ object Build { }, autoGeneratedProject := true ) - - @deprecated("Use Attributed.data", "0.13.0") - def data[T](in: Seq[Attributed[T]]): Seq[T] = Attributed.data(in) def analyzed(in: Seq[Attributed[_]]): Seq[xsbti.compile.CompileAnalysis] = in.flatMap { _.metadata.get(Keys.analysis) } } diff --git a/main/src/main/scala/sbt/BuildLoader.scala b/main/src/main/scala/sbt/internal/BuildLoader.scala similarity index 99% rename from main/src/main/scala/sbt/BuildLoader.scala rename to main/src/main/scala/sbt/internal/BuildLoader.scala index 92ad3ba2b..2c606e143 100644 --- a/main/src/main/scala/sbt/BuildLoader.scala +++ b/main/src/main/scala/sbt/internal/BuildLoader.scala @@ -2,6 +2,7 @@ * Copyright 2011 Mark Harrah */ package sbt +package internal import java.io.File import java.net.URI diff --git a/main/src/main/scala/sbt/Load.scala b/main/src/main/scala/sbt/internal/Load.scala similarity index 92% rename from main/src/main/scala/sbt/Load.scala rename to main/src/main/scala/sbt/internal/Load.scala index eb26a0a72..1eeeabbb1 100755 --- a/main/src/main/scala/sbt/Load.scala +++ b/main/src/main/scala/sbt/internal/Load.scala @@ -2,6 +2,7 @@ * Copyright 2011 Mark Harrah */ package sbt +package internal import sbt.internal.util.{ Settings, Show, ~> } import sbt.librarymanagement.{ Configuration, Configurations, Resolver } @@ -31,7 +32,7 @@ import sbt.internal.io.Alternatives import sbt.util.Logger import xsbti.compile.Compilers -object Load { +private[sbt] object Load { // note that there is State passed in but not pulled out def defaultLoad(state: State, baseDirectory: File, log: Logger, isPlugin: Boolean = false, topLevelExtras: List[URI] = Nil): (() => Eval, sbt.BuildStructure) = { @@ -45,7 +46,7 @@ object Load { definesClass.clear() result } - def defaultPreGlobal(state: State, baseDirectory: File, definesClass: DefinesClass, globalBase: File, log: Logger): sbt.LoadBuildConfiguration = + def defaultPreGlobal(state: State, baseDirectory: File, definesClass: DefinesClass, globalBase: File, log: Logger): LoadBuildConfiguration = { val provider = state.configuration.provider val scalaProvider = provider.scalaProvider @@ -64,7 +65,7 @@ object Load { val initialID = baseDirectory.getName val pluginMgmt = PluginManagement(loader) val inject = InjectSettings(injectGlobal(state), Nil, const(Nil)) - new sbt.LoadBuildConfiguration(stagingDirectory, classpath, loader, compilers, evalPluginDef, definesClass, delegates, + new LoadBuildConfiguration(stagingDirectory, classpath, loader, compilers, evalPluginDef, definesClass, delegates, EvaluateTask.injectStreams, pluginMgmt, inject, None, Nil, log) } private def bootIvyHome(app: xsbti.AppConfiguration): Option[File] = @@ -74,7 +75,7 @@ object Load { (appConfiguration in GlobalScope :== state.configuration) +: LogManager.settingsLogger(state) +: EvaluateTask.injectSettings - def defaultWithGlobal(state: State, base: File, rawConfig: sbt.LoadBuildConfiguration, globalBase: File, log: Logger): sbt.LoadBuildConfiguration = + def defaultWithGlobal(state: State, base: File, rawConfig: LoadBuildConfiguration, globalBase: File, log: Logger): LoadBuildConfiguration = { val globalPluginsDir = getGlobalPluginsDirectory(state, globalBase) val withGlobal = loadGlobal(state, base, globalPluginsDir, rawConfig) @@ -82,13 +83,13 @@ object Load { loadGlobalSettings(base, globalBase, globalSettings, withGlobal) } - def loadGlobalSettings(base: File, globalBase: File, files: Seq[File], config: sbt.LoadBuildConfiguration): sbt.LoadBuildConfiguration = + def loadGlobalSettings(base: File, globalBase: File, files: Seq[File], config: LoadBuildConfiguration): LoadBuildConfiguration = { val compiled: ClassLoader => Seq[Setting[_]] = if (files.isEmpty || base == globalBase) const(Nil) else buildGlobalSettings(globalBase, files, config) config.copy(injectSettings = config.injectSettings.copy(projectLoaded = compiled)) } - def buildGlobalSettings(base: File, files: Seq[File], config: sbt.LoadBuildConfiguration): ClassLoader => Seq[Setting[_]] = + def buildGlobalSettings(base: File, files: Seq[File], config: LoadBuildConfiguration): ClassLoader => Seq[Setting[_]] = { val eval = mkEval(data(config.globalPluginClasspath), base, defaultEvalOptions) @@ -103,7 +104,7 @@ object Load { loaded.settings } } - def loadGlobal(state: State, base: File, global: File, config: sbt.LoadBuildConfiguration): sbt.LoadBuildConfiguration = + def loadGlobal(state: State, base: File, global: File, config: LoadBuildConfiguration): LoadBuildConfiguration = if (base != global && global.exists) { val gp = GlobalPlugin.load(global, state, config) config.copy(globalPlugin = Some(gp)) @@ -144,7 +145,7 @@ object Load { // 6) Load all configurations using build definitions and plugins (their classpaths and loaded instances). // 7) Combine settings from projects, plugins, and configurations // 8) Evaluate settings - def apply(rootBase: File, s: State, config: sbt.LoadBuildConfiguration): (() => Eval, sbt.BuildStructure) = + def apply(rootBase: File, s: State, config: LoadBuildConfiguration): (() => Eval, sbt.BuildStructure) = { // load, which includes some resolution, but can't fill in project IDs yet, so follow with full resolution val loaded = resolveProjects(load(rootBase, s, config)) @@ -292,9 +293,9 @@ object Load { if (srcs.isEmpty) const(LoadedSbtFile.empty) else EvaluateConfigurations(eval(), srcs, imports) - def load(file: File, s: State, config: sbt.LoadBuildConfiguration): sbt.PartBuild = + def load(file: File, s: State, config: LoadBuildConfiguration): sbt.PartBuild = load(file, builtinLoader(s, config.copy(pluginManagement = config.pluginManagement.shift, extraBuilds = Nil)), config.extraBuilds.toList) - def builtinLoader(s: State, config: sbt.LoadBuildConfiguration): BuildLoader = + def builtinLoader(s: State, config: LoadBuildConfiguration): BuildLoader = { val fail = (uri: URI) => sys.error("Invalid build URI (no handler available): " + uri) val resolver = (info: BuildLoader.ResolveInfo) => RetrieveUnit(info) @@ -443,7 +444,7 @@ object Load { def noProject(uri: URI, id: String) = sys.error(s"No project '$id' defined in '$uri'.") def noConfiguration(uri: URI, id: String, conf: String) = sys.error(s"No configuration '$conf' defined in project '$id' in '$uri'") - def loadUnit(uri: URI, localBase: File, s: State, config: sbt.LoadBuildConfiguration): sbt.BuildUnit = + def loadUnit(uri: URI, localBase: File, s: State, config: LoadBuildConfiguration): sbt.BuildUnit = { val normBase = localBase.getCanonicalFile val defDir = projectStandard(normBase) @@ -470,12 +471,12 @@ object Load { val hasRoot = loadedProjectsRaw.projects.exists(_.base == normBase) || defsScala.exists(_.rootProject.isDefined) val (loadedProjects, defaultBuildIfNone, keepClassFiles) = if (hasRoot) - (loadedProjectsRaw.projects, Build.defaultEmpty, loadedProjectsRaw.generatedConfigClassFiles) + (loadedProjectsRaw.projects, BuildDef.defaultEmpty, loadedProjectsRaw.generatedConfigClassFiles) else { val existingIDs = loadedProjectsRaw.projects.map(_.id) val refs = existingIDs.map(id => ProjectRef(uri, id)) val defaultID = autoID(normBase, config.pluginManagement.context, existingIDs) - val b = Build.defaultAggregated(defaultID, refs) + val b = BuildDef.defaultAggregated(defaultID, refs) val defaultProjects = loadProjects(projectsFromBuild(b, normBase), false) (defaultProjects.projects ++ loadedProjectsRaw.projects, b, defaultProjects.generatedConfigClassFiles ++ loadedProjectsRaw.generatedConfigClassFiles) } @@ -500,19 +501,19 @@ object Load { case Left(msg) => sys.error(autoIDError(f, msg)) } def nthParentName(f: File, i: Int): String = - if (f eq null) Build.defaultID(localBase) else if (i <= 0) normalizeID(f) else nthParentName(f.getParentFile, i - 1) + if (f eq null) BuildDef.defaultID(localBase) else if (i <= 0) normalizeID(f) else nthParentName(f.getParentFile, i - 1) val pluginDepth = context.pluginProjectDepth val postfix = "-build" * pluginDepth val idBase = if (context.globalPluginProject) "global-plugins" else nthParentName(localBase, pluginDepth) val tryID = idBase + postfix - if (existingIDs.contains(tryID)) Build.defaultID(localBase) else tryID + if (existingIDs.contains(tryID)) BuildDef.defaultID(localBase) else tryID } private[this] def autoIDError(base: File, reason: String): String = "Could not derive root project ID from directory " + base.getAbsolutePath + ":\n" + reason + "\nRename the directory or explicitly define a root project." - private[this] def projectsFromBuild(b: Build, base: File): Seq[Project] = + private[this] def projectsFromBuild(b: BuildDef, base: File): Seq[Project] = b.projectDefinitions(base).map(resolveBase(base)) // Lame hackery to keep track of our state. @@ -605,8 +606,8 @@ object Load { val existingIds = otherProjects.projects map (_.id) val refs = existingIds map (id => ProjectRef(buildUri, id)) val defaultID = autoID(buildBase, context, existingIds) - val root0 = if (discovered.isEmpty || java.lang.Boolean.getBoolean("sbt.root.ivyplugin")) Build.defaultAggregatedProject(defaultID, buildBase, refs) - else Build.generatedRootWithoutIvyPlugin(defaultID, buildBase, refs) + val root0 = if (discovered.isEmpty || java.lang.Boolean.getBoolean("sbt.root.ivyplugin")) BuildDef.defaultAggregatedProject(defaultID, buildBase, refs) + else BuildDef.generatedRootWithoutIvyPlugin(defaultID, buildBase, refs) val root = finalizeProject(root0, files) val result = root +: (acc ++ otherProjects.projects) log.debug(s"[Loading] Done in ${buildBase}, returning: ${result.map(_.id).mkString("(", ", ", ")")}") @@ -785,17 +786,17 @@ object Load { cp filter { f => !files.contains(f.data) } } - def enableSbtPlugin(config: sbt.LoadBuildConfiguration): sbt.LoadBuildConfiguration = + def enableSbtPlugin(config: LoadBuildConfiguration): LoadBuildConfiguration = config.copy(injectSettings = config.injectSettings.copy( global = autoPluginSettings ++ config.injectSettings.global, project = config.pluginManagement.inject ++ config.injectSettings.project )) - def activateGlobalPlugin(config: sbt.LoadBuildConfiguration): sbt.LoadBuildConfiguration = + def activateGlobalPlugin(config: LoadBuildConfiguration): LoadBuildConfiguration = config.globalPlugin match { case Some(gp) => config.copy(injectSettings = config.injectSettings.copy(project = gp.inject)) case None => config } - def plugins(dir: File, s: State, config: sbt.LoadBuildConfiguration): sbt.LoadedPlugins = + def plugins(dir: File, s: State, config: LoadBuildConfiguration): sbt.LoadedPlugins = if (hasDefinition(dir)) buildPlugins(dir, s, enableSbtPlugin(activateGlobalPlugin(config))) else @@ -806,21 +807,21 @@ object Load { import Path._ (dir * -GlobFilter(DefaultTargetName)).get.nonEmpty } - def noPlugins(dir: File, config: sbt.LoadBuildConfiguration): sbt.LoadedPlugins = + def noPlugins(dir: File, config: LoadBuildConfiguration): sbt.LoadedPlugins = loadPluginDefinition(dir, config, PluginData(config.globalPluginClasspath, None, None)) - def buildPlugins(dir: File, s: State, config: sbt.LoadBuildConfiguration): sbt.LoadedPlugins = + def buildPlugins(dir: File, s: State, config: LoadBuildConfiguration): sbt.LoadedPlugins = loadPluginDefinition(dir, config, buildPluginDefinition(dir, s, config)) - def loadPluginDefinition(dir: File, config: sbt.LoadBuildConfiguration, pluginData: PluginData): sbt.LoadedPlugins = + def loadPluginDefinition(dir: File, config: LoadBuildConfiguration, pluginData: PluginData): sbt.LoadedPlugins = { val (definitionClasspath, pluginLoader) = pluginDefinitionLoader(config, pluginData) loadPlugins(dir, pluginData.copy(dependencyClasspath = definitionClasspath), pluginLoader) } - def pluginDefinitionLoader(config: sbt.LoadBuildConfiguration, dependencyClasspath: Seq[Attributed[File]]): (Seq[Attributed[File]], ClassLoader) = + def pluginDefinitionLoader(config: LoadBuildConfiguration, dependencyClasspath: Seq[Attributed[File]]): (Seq[Attributed[File]], ClassLoader) = pluginDefinitionLoader(config, dependencyClasspath, Nil) - def pluginDefinitionLoader(config: sbt.LoadBuildConfiguration, pluginData: PluginData): (Seq[Attributed[File]], ClassLoader) = + def pluginDefinitionLoader(config: LoadBuildConfiguration, pluginData: PluginData): (Seq[Attributed[File]], ClassLoader) = pluginDefinitionLoader(config, pluginData.dependencyClasspath, pluginData.definitionClasspath) - def pluginDefinitionLoader(config: sbt.LoadBuildConfiguration, depcp: Seq[Attributed[File]], defcp: Seq[Attributed[File]]): (Seq[Attributed[File]], ClassLoader) = + def pluginDefinitionLoader(config: LoadBuildConfiguration, depcp: Seq[Attributed[File]], defcp: Seq[Attributed[File]]): (Seq[Attributed[File]], ClassLoader) = { val definitionClasspath = if (depcp.isEmpty) @@ -841,20 +842,20 @@ object Load { } (definitionClasspath, pluginLoader) } - def buildPluginDefinition(dir: File, s: State, config: sbt.LoadBuildConfiguration): PluginData = + def buildPluginDefinition(dir: File, s: State, config: LoadBuildConfiguration): PluginData = { val (eval, pluginDef) = apply(dir, s, config) val pluginState = Project.setProject(Load.initialSession(pluginDef, eval), pluginDef, s) config.evalPluginDef(Project.structure(pluginState), pluginState) } - @deprecated("Use ModuleUtilities.getCheckedObjects[Build].", "0.13.2") - def loadDefinitions(loader: ClassLoader, defs: Seq[String]): Seq[Build] = + @deprecated("Use ModuleUtilities.getCheckedObjects[BuildDef].", "0.13.2") + def loadDefinitions(loader: ClassLoader, defs: Seq[String]): Seq[BuildDef] = defs map { definition => loadDefinition(loader, definition) } - @deprecated("Use ModuleUtilities.getCheckedObject[Build].", "0.13.2") - def loadDefinition(loader: ClassLoader, definition: String): Build = - ModuleUtilities.getObject(definition, loader).asInstanceOf[Build] + @deprecated("Use ModuleUtilities.getCheckedObject[BuildDef].", "0.13.2") + def loadDefinition(loader: ClassLoader, definition: String): BuildDef = + ModuleUtilities.getObject(definition, loader).asInstanceOf[BuildDef] def loadPlugins(dir: File, data: PluginData, loader: ClassLoader): sbt.LoadedPlugins = new sbt.LoadedPlugins(dir, data, loader, PluginDiscovery.discoverAll(data, loader)) @@ -883,7 +884,7 @@ object Load { def findPlugins(analysis: Analysis): Seq[String] = discover(analysis, "sbt.Plugin") @deprecated("No longer used.", "0.13.2") - def findDefinitions(analysis: Analysis): Seq[String] = discover(analysis, "sbt.Build") + def findDefinitions(analysis: Analysis): Seq[String] = discover(analysis, "sbt.internal.BuildDef") @deprecated("Use PluginDiscovery.sourceModuleNames", "0.13.2") def discover(analysis: Analysis, subclasses: String*): Seq[String] = @@ -928,37 +929,9 @@ object Load { def referenced[PR <: ProjectReference](definitions: Seq[ProjectDefinition[PR]]): Seq[PR] = definitions flatMap { _.referenced } - @deprecated("LoadedBuildUnit is now top-level", "0.13.0") - type LoadedBuildUnit = sbt.LoadedBuildUnit - - @deprecated("BuildStructure is now top-level", "0.13.0") - type BuildStructure = sbt.BuildStructure - - @deprecated("StructureIndex is now top-level", "0.13.0") - type StructureIndex = sbt.StructureIndex - - @deprecated("LoadBuildConfiguration is now top-level", "0.13.0") - type LoadBuildConfiguration = sbt.LoadBuildConfiguration - @deprecated("LoadBuildConfiguration is now top-level", "0.13.0") - val LoadBuildConfiguration = sbt.LoadBuildConfiguration - final class EvaluatedConfigurations(val eval: Eval, val settings: Seq[Setting[_]]) final case class InjectSettings(global: Seq[Setting[_]], project: Seq[Setting[_]], projectLoaded: ClassLoader => Seq[Setting[_]]) - @deprecated("LoadedDefinitions is now top-level", "0.13.0") - type LoadedDefinitions = sbt.LoadedDefinitions - @deprecated("LoadedPlugins is now top-level", "0.13.0") - type LoadedPlugins = sbt.LoadedPlugins - @deprecated("BuildUnit is now top-level", "0.13.0") - type BuildUnit = sbt.BuildUnit - @deprecated("LoadedBuild is now top-level", "0.13.0") - type LoadedBuild = sbt.LoadedBuild - @deprecated("PartBuild is now top-level", "0.13.0") - type PartBuild = sbt.PartBuild - @deprecated("BuildUnitBase is now top-level", "0.13.0") - type BuildUnitBase = sbt.BuildUnitBase - @deprecated("PartBuildUnit is now top-level", "0.13.0") - type PartBuildUnit = sbt.PartBuildUnit @deprecated("Use BuildUtil.apply", "0.13.0") def buildUtil(root: URI, units: Map[URI, sbt.LoadedBuildUnit], keyIndex: KeyIndex, data: Settings[Scope]): BuildUtil[ResolvedProject] = BuildUtil(root, units, keyIndex, data) } From 87bd9c6df0f9d84c97fca6717fc359dc1eb2327b Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 12:02:04 -0400 Subject: [PATCH 02/70] Port actions/state --- sbt/src/sbt-test/actions/state/build.sbt | 48 +++++++++++++++++ .../actions/state/project/Build.scala | 51 ------------------- 2 files changed, 48 insertions(+), 51 deletions(-) create mode 100644 sbt/src/sbt-test/actions/state/build.sbt delete mode 100644 sbt/src/sbt-test/actions/state/project/Build.scala diff --git a/sbt/src/sbt-test/actions/state/build.sbt b/sbt/src/sbt-test/actions/state/build.sbt new file mode 100644 index 000000000..01c346e49 --- /dev/null +++ b/sbt/src/sbt-test/actions/state/build.sbt @@ -0,0 +1,48 @@ +import Import._ +import complete.Parser +import complete.DefaultParsers._ +import sbinary.DefaultProtocol._ +import Project.Initialize + +val keep = TaskKey[Int]("keep") +val persisted = TaskKey[Int]("persist") +val checkKeep = InputKey[Unit]("check-keep") +val checkPersisted = InputKey[Unit]("check-persist") + +val updateDemo = TaskKey[Int]("demo") +val check = InputKey[Unit]("check") +val sample = AttributeKey[Int]("demo-key") + +def updateDemoInit = state map { s => (s get sample getOrElse 9) + 1 } + +lazy val root = (project in file(".")). + settings( + updateDemo <<= updateDemoInit updateState demoState, + check <<= checkInit, + inMemorySetting, + persistedSetting, + inMemoryCheck, + persistedCheck + ) + +def demoState(s: State, i: Int): State = s put (sample, i + 1) + +def checkInit: Initialize[InputTask[Unit]] = InputTask( (_: State) => token(Space ~> IntBasic) ~ token(Space ~> IntBasic).?) { key => + (key, updateDemo, state) map { case ((curExpected, prevExpected), value, s) => + val prev = s get sample + assert(value == curExpected, "Expected current value to be " + curExpected + ", got " + value) + assert(prev == prevExpected, "Expected previous value to be " + prevExpected + ", got " + prev) + } +} + +def inMemorySetting = keep <<= getPrevious(keep) map { case None => 3; case Some(x) => x + 1} keepAs(keep) +def persistedSetting = persisted <<= loadPrevious(persisted) map { case None => 17; case Some(x) => x + 1} storeAs(persisted) + +def inMemoryCheck = checkKeep <<= inputCheck( (ctx, s) => Space ~> str(getFromContext(keep, ctx, s)) ) +def persistedCheck = checkPersisted <<= inputCheck( (ctx, s) => Space ~> str(loadFromContext(persisted, ctx, s)) ) + +def inputCheck[T](f: (ScopedKey[_], State) => Parser[T]): Initialize[InputTask[Unit]] = + InputTask( resolvedScoped(ctx => (s: State) => f(ctx, s)) )( dummyTask ) + +def dummyTask = (key: Any) => maxErrors map { _ => () } +def str(o: Option[Int]) = o match { case None => "blue"; case Some(i) => i.toString } diff --git a/sbt/src/sbt-test/actions/state/project/Build.scala b/sbt/src/sbt-test/actions/state/project/Build.scala deleted file mode 100644 index 0426b4587..000000000 --- a/sbt/src/sbt-test/actions/state/project/Build.scala +++ /dev/null @@ -1,51 +0,0 @@ -import sbt._ -import Keys._ -import Import._ -import complete.Parser -import complete.DefaultParsers._ -import sbinary.DefaultProtocol._ -import Project.Initialize - -object MyBuild extends Build -{ - val keep = TaskKey[Int]("keep") - val persisted = TaskKey[Int]("persist") - val checkKeep = InputKey[Unit]("check-keep") - val checkPersisted = InputKey[Unit]("check-persist") - - val updateDemo = TaskKey[Int]("demo") - val check = InputKey[Unit]("check") - val sample = AttributeKey[Int]("demo-key") - - def updateDemoInit = state map { s => (s get sample getOrElse 9) + 1 } - - lazy val root = Project("root", file(".")) settings( - updateDemo <<= updateDemoInit updateState demoState, - check <<= checkInit, - inMemorySetting, - persistedSetting, - inMemoryCheck, - persistedCheck - ) - def demoState(s: State, i: Int): State = s put (sample, i + 1) - - def checkInit: Initialize[InputTask[Unit]] = InputTask( (_: State) => token(Space ~> IntBasic) ~ token(Space ~> IntBasic).?) { key => - (key, updateDemo, state) map { case ((curExpected, prevExpected), value, s) => - val prev = s get sample - assert(value == curExpected, "Expected current value to be " + curExpected + ", got " + value) - assert(prev == prevExpected, "Expected previous value to be " + prevExpected + ", got " + prev) - } - } - - def inMemorySetting = keep <<= getPrevious(keep) map { case None => 3; case Some(x) => x + 1} keepAs(keep) - def persistedSetting = persisted <<= loadPrevious(persisted) map { case None => 17; case Some(x) => x + 1} storeAs(persisted) - - def inMemoryCheck = checkKeep <<= inputCheck( (ctx, s) => Space ~> str(getFromContext(keep, ctx, s)) ) - def persistedCheck = checkPersisted <<= inputCheck( (ctx, s) => Space ~> str(loadFromContext(persisted, ctx, s)) ) - - def inputCheck[T](f: (ScopedKey[_], State) => Parser[T]): Initialize[InputTask[Unit]] = - InputTask( resolvedScoped(ctx => (s: State) => f(ctx, s)) )( dummyTask ) - - def dummyTask = (key: Any) => maxErrors map { _ => () } - def str(o: Option[Int]) = o match { case None => "blue"; case Some(i) => i.toString } -} From a1a1711106c6653086f3932b7b3a7a5c399b0be1 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 12:07:06 -0400 Subject: [PATCH 03/70] Port actions/update-state-fail --- .../actions/update-state-fail/build.sbt | 30 +++++++++++++++++++ .../update-state-fail/project/Build.scala | 28 ----------------- 2 files changed, 30 insertions(+), 28 deletions(-) create mode 100644 sbt/src/sbt-test/actions/update-state-fail/build.sbt delete mode 100644 sbt/src/sbt-test/actions/update-state-fail/project/Build.scala diff --git a/sbt/src/sbt-test/actions/update-state-fail/build.sbt b/sbt/src/sbt-test/actions/update-state-fail/build.sbt new file mode 100644 index 000000000..abd5c4db3 --- /dev/null +++ b/sbt/src/sbt-test/actions/update-state-fail/build.sbt @@ -0,0 +1,30 @@ +lazy val akey = AttributeKey[Int]("TestKey") +lazy val t = TaskKey[String]("test-task") +lazy val check = InputKey[Unit]("check") + +lazy val root = (project in file(".")). + aggregate(a, b). + settings( + check := checkState(checkParser.parsed, state.value) + ) + +lazy val a = project. + settings( + t := sys.error("Failing") + ) + +lazy val b = project. + settings( + t <<= Def.task("").updateState(updater) + ) + +def checkState(runs: Int, s: State): Unit = { + val stored = s.get(akey).getOrElse(0) + assert(stored == runs, "Expected " + runs + ", got " + stored) +} + +def updater(s: State, a: AnyRef): State = s.update(akey)(_.getOrElse(0) + 1) + +import complete.DefaultParsers._ + +lazy val checkParser = token(Space ~> IntBasic) diff --git a/sbt/src/sbt-test/actions/update-state-fail/project/Build.scala b/sbt/src/sbt-test/actions/update-state-fail/project/Build.scala deleted file mode 100644 index 5ded4bb08..000000000 --- a/sbt/src/sbt-test/actions/update-state-fail/project/Build.scala +++ /dev/null @@ -1,28 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object TestBuild extends Build -{ - lazy val akey = AttributeKey[Int]("TestKey") - lazy val t = TaskKey[String]("test-task") - lazy val check = InputKey[Unit]("check") - lazy val root = Project("root", file(".")).aggregate(a, b).settings( - check := checkState(checkParser.parsed, state.value) - ) - - lazy val a = Project("a", file("a")).settings(t := sys.error("Failing")) - - lazy val b = Project("b", file("b")).settings(t <<= Def.task("").updateState(updater)) - - def checkState(runs: Int, s: State): Unit = { - val stored = s.get(akey).getOrElse(0) - assert(stored == runs, "Expected " + runs + ", got " + stored) - } - - def updater(s: State, a: AnyRef): State = s.update(akey)(_.getOrElse(0) + 1) - - import complete.DefaultParsers._ - - lazy val checkParser = token(Space ~> IntBasic) -} From 33c7db17c5bb4dbe35f6ea438bf4893f4658dd0e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 12:50:37 -0400 Subject: [PATCH 04/70] Port dependency-management/cache-resolver --- .../cache-resolver/cache.sbt | 5 +--- .../cache-resolver/changes/both/build.sbt | 23 +++++++++++++++++++ .../cache-resolver/changes/def/Build.scala | 16 ------------- .../cache-resolver/changes/def/build.sbt | 20 ++++++++++++++++ .../cache-resolver/changes/use/build.sbt | 17 +++++++------- .../dependency-management/cache-resolver/test | 9 ++++---- 6 files changed, 57 insertions(+), 33 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/cache-resolver/changes/both/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Build.scala create mode 100644 sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/build.sbt diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt b/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt index f1c683ad9..1949b7de3 100644 --- a/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt @@ -2,9 +2,6 @@ ivyPaths in ThisBuild := { val base = (baseDirectory in ThisBuild).value new IvyPaths(base, Some(base / "ivy-cache")) } - managedScalaInstance in ThisBuild := false - autoScalaLibrary in ThisBuild := false - -crossPaths in ThisBuild := false \ No newline at end of file +crossPaths in ThisBuild := false diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/both/build.sbt b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/both/build.sbt new file mode 100644 index 000000000..1af0fabe2 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/both/build.sbt @@ -0,0 +1,23 @@ +lazy val root = (project in file(".")). + aggregate(a,b). + settings( + name := "use", + version := "1.0", + organization in ThisBuild := "org.example", + version in ThisBuild := "2.0-SNAPSHOT", + libraryDependencies += "org.example" % "b" % "2.0-SNAPSHOT", + ivyPaths := (ivyPaths in ThisBuild).value + ) + +lazy val a = project. + dependsOn(b). + settings( + name := "a", + ivyPaths := (ivyPaths in ThisBuild).value + ) + +lazy val b = project. + settings( + name := "b", + ivyPaths := (ivyPaths in ThisBuild).value + ) diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Build.scala b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Build.scala deleted file mode 100644 index 83ecc5b04..000000000 --- a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Build.scala +++ /dev/null @@ -1,16 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build { - - override def settings = super.settings ++ Seq( - organization := "org.example", - version := "2.0-SNAPSHOT" - ) - - lazy val root = proj("root", ".") aggregate(a,b) - lazy val a = proj("a", "a") dependsOn(b) - lazy val b = proj("b", "b") - private[this] def proj(id: String, f: String): Project = Project(id, file(f)).settings( ivyPaths <<= ivyPaths in ThisBuild ) -} diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/build.sbt b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/build.sbt new file mode 100644 index 000000000..e58d9f25b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/build.sbt @@ -0,0 +1,20 @@ +lazy val root = (project in file(".")). + aggregate(a,b). + settings( + organization in ThisBuild := "org.example", + version in ThisBuild := "2.0-SNAPSHOT", + ivyPaths := (ivyPaths in ThisBuild).value + ) + +lazy val a = project. + dependsOn(b). + settings( + name := "a", + ivyPaths := (ivyPaths in ThisBuild).value + ) + +lazy val b = project. + settings( + name := "b", + ivyPaths := (ivyPaths in ThisBuild).value + ) diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/build.sbt b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/build.sbt index 943590924..f590da3e8 100644 --- a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/build.sbt +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/build.sbt @@ -1,9 +1,8 @@ -name := "use" - -organization := "org.example" - -version := "1.0" - -libraryDependencies += "org.example" % "b" % "2.0-SNAPSHOT" - -ivyPaths <<= ivyPaths in ThisBuild \ No newline at end of file +lazy val root = (project in file(".")). + settings( + name := "use", + organization := "org.example", + version := "1.0", + libraryDependencies += "org.example" % "b" % "2.0-SNAPSHOT", + ivyPaths := (ivyPaths in ThisBuild).value + ) diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/test b/sbt/src/sbt-test/dependency-management/cache-resolver/test index ca3066023..82c7ea83d 100644 --- a/sbt/src/sbt-test/dependency-management/cache-resolver/test +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/test @@ -1,6 +1,6 @@ # Publish the def/{a,b} projects to the local repository -$ copy-file changes/def/Build.scala project/Build.scala +$ copy-file changes/def/build.sbt build.sbt $ copy-file changes/def/Def.java b/Def.java > reload > publish-local @@ -11,7 +11,7 @@ $ copy-file changes/def/Def.java b/Def.java # The resolver will be marked as local in the cache # The dependency on def/b will be properly resolved -$ delete project/Build.scala +$ delete build.sbt $ delete b/Def.java $ copy-file changes/use/build.sbt build.sbt $ copy-file changes/use/Use.java Use.java @@ -23,7 +23,8 @@ $ copy-file changes/use/Use.java Use.java # Publish the def/{a,b} projects to the local repository again # This will change the resolver in the cache to be inter-project -$ copy-file changes/def/Build.scala project/Build.scala +$ delete build.sbt +$ copy-file changes/both/build.sbt build.sbt $ copy-file changes/def/Def.java b/Def.java > reload > publish-local @@ -33,7 +34,7 @@ $ copy-file changes/def/Def.java b/Def.java # Resolve from local again. This will succeed, but the jars # won't be on the classpath if the resolver isn't ignoredy. -$ delete project/Build.scala +$ delete build.sbt $ delete b/Def.java $ copy-file changes/use/build.sbt build.sbt $ copy-file changes/use/Use.java Use.java From 380b22f7fd635eac81c983bee0dd9c5f38ab0556 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 13:00:43 -0400 Subject: [PATCH 05/70] Port dependency-management/delegate --- .../sbt-test/dependency-management/delegate/build.sbt | 8 ++++++++ .../dependency-management/delegate/project/Build.scala | 10 ---------- 2 files changed, 8 insertions(+), 10 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/delegate/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/delegate/project/Build.scala diff --git a/sbt/src/sbt-test/dependency-management/delegate/build.sbt b/sbt/src/sbt-test/dependency-management/delegate/build.sbt new file mode 100644 index 000000000..fd76508a0 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/delegate/build.sbt @@ -0,0 +1,8 @@ +lazy val root = (project in file(".")). + aggregate(logic, ui) + +lazy val logic = (project in file("logic")). + delegateTo(LocalProject("root")) + +lazy val ui = (project in file("ui")). + delegateTo(LocalProject("root")) diff --git a/sbt/src/sbt-test/dependency-management/delegate/project/Build.scala b/sbt/src/sbt-test/dependency-management/delegate/project/Build.scala deleted file mode 100644 index 0e9e3ad78..000000000 --- a/sbt/src/sbt-test/dependency-management/delegate/project/Build.scala +++ /dev/null @@ -1,10 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val root: Project = Project("root", file(".")) aggregate(logic, ui) - lazy val logic: Project = Project("logic", file("logic"), delegates = root :: Nil) - lazy val ui: Project = Project("ui", file("ui"), delegates = root :: Nil) dependsOn(logic) -} \ No newline at end of file From 91950e7188c64329547676e3205f5d2d889b5cd1 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 13:10:48 -0400 Subject: [PATCH 06/70] Port dependency-management/ivy-settings-multi-b --- .../dependency-management/ivy-settings-multi-b/build.sbt | 5 +++++ .../ivy-settings-multi-b/project/Build.scala | 9 --------- 2 files changed, 5 insertions(+), 9 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/project/Build.scala diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/build.sbt b/sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/build.sbt new file mode 100644 index 000000000..8a7846582 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/build.sbt @@ -0,0 +1,5 @@ +lazy val a = (project in file(".")). + settings(externalIvySettings()) dependsOn(b) + +lazy val b = (project in file("b")). + settings(externalIvySettings( (baseDirectory in ThisBuild) / "ivysettings.xml" )) diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/project/Build.scala b/sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/project/Build.scala deleted file mode 100644 index b9a293f6d..000000000 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-multi-b/project/Build.scala +++ /dev/null @@ -1,9 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object Build extends Build -{ - lazy val a = Project("a", file(".")) settings(externalIvySettings()) dependsOn(b) - lazy val b = Project("b", file("b")) settings(externalIvySettings( (baseDirectory in ThisBuild) / "ivysettings.xml" )) -} \ No newline at end of file From b4ac9f4a87188c672688b2b4a794508d6f867976 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 13:58:48 -0400 Subject: [PATCH 07/70] Port dependency-management/make-pom-type --- .../make-pom-type/build.sbt | 45 +++++++++++++++++ .../make-pom-type/project/Build.scala | 50 ------------------- 2 files changed, 45 insertions(+), 50 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/make-pom-type/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/make-pom-type/project/Build.scala diff --git a/sbt/src/sbt-test/dependency-management/make-pom-type/build.sbt b/sbt/src/sbt-test/dependency-management/make-pom-type/build.sbt new file mode 100644 index 000000000..79a809bff --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/make-pom-type/build.sbt @@ -0,0 +1,45 @@ +lazy val p1 = (project in file("p1")). + settings( + checkTask(expectedMongo), + libraryDependencies += "org.mongodb" %% "casbah" % "2.4.1" pomOnly(), + inThisBuild(List( + organization := "org.example", + version := "1.0", + scalaVersion := "2.9.2", + autoScalaLibrary := false + )) + ) + +lazy val p2 = (project in file("p2")). + dependsOn(p1). + settings( + checkTask(expectedInter) + ) + +lazy val expectedMongo = + + org.mongodb + casbah_2.9.2 + 2.4.1 + pom + + +lazy val expectedInter = + + org.example + p1_2.9.2 + 1.0 + + +def checkTask(expectedDep: xml.Elem) = TaskKey[Unit]("check-pom") <<= makePom map { file => + val pom = xml.XML.loadFile(file) + val actual = pom \\ "dependencies" + val expected = + {expectedDep} + + def dropTopElem(s:String): String = s.split("""\n""").drop(1).dropRight(1).mkString("\n") + val pp = new xml.PrettyPrinter(Int.MaxValue, 0) + val expectedString = dropTopElem(pp.format(expected)) + val actualString = dropTopElem(pp.formatNodes(actual)) + assert(expectedString == actualString, "Expected dependencies section:\n" + expectedString + "\n\nActual:\n" + actualString) +} diff --git a/sbt/src/sbt-test/dependency-management/make-pom-type/project/Build.scala b/sbt/src/sbt-test/dependency-management/make-pom-type/project/Build.scala deleted file mode 100644 index 3cc1aa174..000000000 --- a/sbt/src/sbt-test/dependency-management/make-pom-type/project/Build.scala +++ /dev/null @@ -1,50 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - override def settings = super.settings ++ Seq( - organization := "org.example", - version := "1.0", - scalaVersion := "2.9.2", - autoScalaLibrary := false - ) - - lazy val p1 = Project("p1",file("p1")) settings( - checkTask(expectedMongo), - libraryDependencies += "org.mongodb" %% "casbah" % "2.4.1" pomOnly() - ) - lazy val p2 = Project("p2", file("p2")) dependsOn(p1) settings( - checkTask(expectedInter) - ) - - lazy val expectedMongo = - - org.mongodb - casbah_2.9.2 - 2.4.1 - pom - - - lazy val expectedInter = - - org.example - p1_2.9.2 - 1.0 - - - def checkTask(expectedDep: xml.Elem) = TaskKey[Unit]("check-pom") <<= makePom map { file => - val pom = xml.XML.loadFile(file) - val actual = pom \\ "dependencies" - val expected = - {expectedDep} - - def dropTopElem(s:String): String = s.split("""\n""").drop(1).dropRight(1).mkString("\n") - val pp = new xml.PrettyPrinter(Int.MaxValue, 0) - val expectedString = dropTopElem(pp.format(expected)) - val actualString = dropTopElem(pp.formatNodes(actual)) - assert(expectedString == actualString, "Expected dependencies section:\n" + expectedString + "\n\nActual:\n" + actualString) - } - -} - From 4d86a4b3f844c06c94521017b38b9fd23fcdfb79 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 14:05:27 -0400 Subject: [PATCH 08/70] Port dependency-management/pom-classpaths --- .../pom-classpaths/build.sbt | 34 +++++++++++++++++ .../pom-classpaths/project/Build.scala | 38 ------------------- 2 files changed, 34 insertions(+), 38 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/pom-classpaths/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/pom-classpaths/project/Build.scala diff --git a/sbt/src/sbt-test/dependency-management/pom-classpaths/build.sbt b/sbt/src/sbt-test/dependency-management/pom-classpaths/build.sbt new file mode 100644 index 000000000..cd5d8fb2b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-classpaths/build.sbt @@ -0,0 +1,34 @@ +import complete._ +import complete.DefaultParsers._ + +lazy val root = (project in file(".")). + settings( + externalPom(), + scalaVersion := "2.9.0-1", + check <<= checkTask, + managedClasspath in Provided <<= (classpathTypes, update) map { (cpts, report) => Classpaths.managedJars(Provided, cpts, report) } + ) + +def checkTask = InputTask(_ => parser ) { result => + (result, managedClasspath in Provided, fullClasspath in Compile, fullClasspath in Test, fullClasspath in Runtime) map { case ((conf, names), p, c, t, r) => + println("Checking: " + conf.name) + checkClasspath(conf match { + case Provided => p + case Compile => c + case Test => t + case Runtime => r + }, names.toSet) + } + } + +lazy val check = InputKey[Unit]("check") +def parser: Parser[(Configuration,Seq[String])] = (Space ~> token(cp(Compile) | cp(Runtime) | cp(Provided) | cp(Test))) ~ spaceDelimited("") +def cp(c: Configuration): Parser[Configuration] = c.name ^^^ c +def checkClasspath(cp: Seq[Attributed[File]], names: Set[String]) = +{ + val fs = cp.files filter { _.getName endsWith ".jar" } + val intersect = fs filter { f => names exists { f.getName startsWith _ } } + assert(intersect == fs, "Expected:" + seqStr(names.toSeq) + "Got: " + seqStr(fs)) + () +} +def seqStr(s: Seq[_]) = s.mkString("\n\t", "\n\t", "\n") diff --git a/sbt/src/sbt-test/dependency-management/pom-classpaths/project/Build.scala b/sbt/src/sbt-test/dependency-management/pom-classpaths/project/Build.scala deleted file mode 100644 index c8633ba71..000000000 --- a/sbt/src/sbt-test/dependency-management/pom-classpaths/project/Build.scala +++ /dev/null @@ -1,38 +0,0 @@ -import sbt._ -import Import._ -import Keys._ -import complete._ -import complete.DefaultParsers._ - -object MyBuild extends Build -{ - lazy val root = Project("root", file(".")) settings( externalPom() :_*) settings( - scalaVersion := "2.9.0-1", - check <<= checkTask, - managedClasspath in Provided <<= (classpathTypes, update) map { (cpts, report) => Classpaths.managedJars(Provided, cpts, report) } - ) - - def checkTask = InputTask(_ => parser ) { result => - (result, managedClasspath in Provided, fullClasspath in Compile, fullClasspath in Test, fullClasspath in Runtime) map { case ((conf, names), p, c, t, r) => - println("Checking: " + conf.name) - checkClasspath(conf match { - case Provided => p - case Compile => c - case Test => t - case Runtime => r - }, names.toSet) - } - } - - lazy val check = InputKey[Unit]("check") - def parser: Parser[(Configuration,Seq[String])] = (Space ~> token(cp(Compile) | cp(Runtime) | cp(Provided) | cp(Test))) ~ spaceDelimited("") - def cp(c: Configuration): Parser[Configuration] = c.name ^^^ c - def checkClasspath(cp: Seq[Attributed[File]], names: Set[String]) = - { - val fs = cp.files filter { _.getName endsWith ".jar" } - val intersect = fs filter { f => names exists { f.getName startsWith _ } } - assert(intersect == fs, "Expected:" + seqStr(names.toSeq) + "Got: " + seqStr(fs)) - () - } - def seqStr(s: Seq[_]) = s.mkString("\n\t", "\n\t", "\n") -} From e92324ead861164e134e33e5964ea57cf8b3371e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 14:09:53 -0400 Subject: [PATCH 09/70] Remove project/build-loaders test --- .../project/build-loaders/project/build.scala | 13 ------------- sbt/src/sbt-test/project/build-loaders/test | 2 -- 2 files changed, 15 deletions(-) delete mode 100644 sbt/src/sbt-test/project/build-loaders/project/build.scala delete mode 100644 sbt/src/sbt-test/project/build-loaders/test diff --git a/sbt/src/sbt-test/project/build-loaders/project/build.scala b/sbt/src/sbt-test/project/build-loaders/project/build.scala deleted file mode 100644 index 625235a91..000000000 --- a/sbt/src/sbt-test/project/build-loaders/project/build.scala +++ /dev/null @@ -1,13 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object EmptyLoaderBuild extends Build { - override def buildLoaders = BuildLoader.transform(_.unit) :: Nil - lazy val root = ( - project in file(".") - settings( - name := "foo" - ) - ) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/project/build-loaders/test b/sbt/src/sbt-test/project/build-loaders/test deleted file mode 100644 index e4529e533..000000000 --- a/sbt/src/sbt-test/project/build-loaders/test +++ /dev/null @@ -1,2 +0,0 @@ -# Just making sure the build compiles is enough of a test. -> name \ No newline at end of file From cd0c5465d5fb129e9b3f8925e7b2b2da1e801de2 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 14:13:45 -0400 Subject: [PATCH 10/70] Port project/console --- sbt/src/sbt-test/project/console/build.sbt | 4 ++++ sbt/src/sbt-test/project/console/project/Build.scala | 10 ---------- 2 files changed, 4 insertions(+), 10 deletions(-) create mode 100644 sbt/src/sbt-test/project/console/build.sbt delete mode 100644 sbt/src/sbt-test/project/console/project/Build.scala diff --git a/sbt/src/sbt-test/project/console/build.sbt b/sbt/src/sbt-test/project/console/build.sbt new file mode 100644 index 000000000..6e41add22 --- /dev/null +++ b/sbt/src/sbt-test/project/console/build.sbt @@ -0,0 +1,4 @@ +lazy val root = (project in file(".")) +lazy val sub1 = (project in file("sub1")) +lazy val sub2 = (project in file("sub2")) +lazy val sub3 = (project in file("sub3")) diff --git a/sbt/src/sbt-test/project/console/project/Build.scala b/sbt/src/sbt-test/project/console/project/Build.scala deleted file mode 100644 index 844ab45b1..000000000 --- a/sbt/src/sbt-test/project/console/project/Build.scala +++ /dev/null @@ -1,10 +0,0 @@ -import sbt._ -import Import._ - -object B extends Build -{ - lazy val root = Project("root", file(".")) - lazy val sub1 = Project("sub1", file("sub1")) - lazy val sub2 = Project("sub2", file("sub2")) - lazy val sub3 = Project("sub3", file("sub3")) -} \ No newline at end of file From 8cdf197254e8d44ac02e6b01862548accdc5dd17 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 14:19:42 -0400 Subject: [PATCH 11/70] Remove project/delegate_config test --- .../delegate_config/project/Build.scala | 29 ------------------- sbt/src/sbt-test/project/delegate_config/test | 11 ------- 2 files changed, 40 deletions(-) delete mode 100644 sbt/src/sbt-test/project/delegate_config/project/Build.scala delete mode 100644 sbt/src/sbt-test/project/delegate_config/test diff --git a/sbt/src/sbt-test/project/delegate_config/project/Build.scala b/sbt/src/sbt-test/project/delegate_config/project/Build.scala deleted file mode 100644 index 2dacae404..000000000 --- a/sbt/src/sbt-test/project/delegate_config/project/Build.scala +++ /dev/null @@ -1,29 +0,0 @@ -import sbt._ -import Import._ -import complete.DefaultParsers._ -import Keys._ -import AddSettings._ - -object B extends Build -{ - // This configuration is added to 'sub' only. - // This verifies that delegation works when a configuration is not defined in the project that is being delegated to - val newConfig = config("sample") - - val sample = SettingKey[Int]("sample") - val check = TaskKey[Unit]("check") - - lazy val root = Project("root", file("."), settings = Nil).settingSets() - lazy val sub = Project("sub", file("."), - delegates = root :: Nil, - configurations = newConfig :: Nil, - settings = incSample :: checkTask(4) :: Nil).settingSets(buildScalaFiles) - override lazy val settings = - (sample in newConfig := 3) :: - checkTask(3) :: - Nil - - def incSample = sample <<= sample in newConfig apply (_ + 1) - def checkTask(expected: Int) = check <<= sample in newConfig map ( i => assert(i == expected, "Expected " + expected + ", got " + i ) ) - -} diff --git a/sbt/src/sbt-test/project/delegate_config/test b/sbt/src/sbt-test/project/delegate_config/test deleted file mode 100644 index 3d6dacc78..000000000 --- a/sbt/src/sbt-test/project/delegate_config/test +++ /dev/null @@ -1,11 +0,0 @@ --> root/sample -> sub/sample - --> root/*:sample -> sub/*:sample - -> root/*:check -> root/check - -> sub/*:check -> sub/check From 3e56fed29bf3d3535a322a373cbd797f3dc645f5 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 14:23:44 -0400 Subject: [PATCH 12/70] Port project/delegates --- sbt/src/sbt-test/project/delegates/build.sbt | 14 ++++++++++++++ .../project/delegates/project/Build.scala | 18 ------------------ 2 files changed, 14 insertions(+), 18 deletions(-) create mode 100644 sbt/src/sbt-test/project/delegates/build.sbt delete mode 100644 sbt/src/sbt-test/project/delegates/project/Build.scala diff --git a/sbt/src/sbt-test/project/delegates/build.sbt b/sbt/src/sbt-test/project/delegates/build.sbt new file mode 100644 index 000000000..a30926515 --- /dev/null +++ b/sbt/src/sbt-test/project/delegates/build.sbt @@ -0,0 +1,14 @@ +import complete.DefaultParsers._ + +val check = InputKey[Unit]("check-max-errors") + +lazy val root = (project in file(".")) +lazy val sub = (project in file("sub")). + delegateTo(root). + settings(check <<= checkTask) + +lazy val checkTask = InputTask(_ => Space ~> NatBasic) { result => + (result, maxErrors) map { (i, max) => + if(i != max) sys.error("Expected max-errors to be " + i + ", but it was " + max) + } +} diff --git a/sbt/src/sbt-test/project/delegates/project/Build.scala b/sbt/src/sbt-test/project/delegates/project/Build.scala deleted file mode 100644 index 75bf40e42..000000000 --- a/sbt/src/sbt-test/project/delegates/project/Build.scala +++ /dev/null @@ -1,18 +0,0 @@ -import sbt._ -import Import._ -import complete.DefaultParsers._ -import Keys._ - -object B extends Build -{ - val check = InputKey[Unit]("check-max-errors") - - lazy val root = Project("root", file(".")) - lazy val sub = Project("sub", file("sub")) delegateTo(root) settings(check <<= checkTask) - - lazy val checkTask = InputTask(_ => Space ~> NatBasic) { result => - (result, maxErrors) map { (i, max) => - if(i != max) sys.error("Expected max-errors to be " + i + ", but it was " + max) - } - } -} From f976c4b04f293af43f9d892a93179828b0c64b67 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 16:48:30 -0400 Subject: [PATCH 13/70] Remove project/external-conflict test --- .../project/external-conflict/A.scala | 3 --- .../project/external-conflict/build.sbt | 11 -------- .../project/external-conflict/changes/A.scala | 3 --- .../project/external-conflict/changes/B.scala | 11 -------- .../external-conflict/changes/Build.scala | 26 ------------------ .../project/external-conflict/changes/ext.sbt | 9 ------- .../sbt-test/project/external-conflict/test | 27 ------------------- 7 files changed, 90 deletions(-) delete mode 100644 sbt/src/sbt-test/project/external-conflict/A.scala delete mode 100644 sbt/src/sbt-test/project/external-conflict/build.sbt delete mode 100644 sbt/src/sbt-test/project/external-conflict/changes/A.scala delete mode 100644 sbt/src/sbt-test/project/external-conflict/changes/B.scala delete mode 100644 sbt/src/sbt-test/project/external-conflict/changes/Build.scala delete mode 100644 sbt/src/sbt-test/project/external-conflict/changes/ext.sbt delete mode 100644 sbt/src/sbt-test/project/external-conflict/test diff --git a/sbt/src/sbt-test/project/external-conflict/A.scala b/sbt/src/sbt-test/project/external-conflict/A.scala deleted file mode 100644 index 2a499fa7b..000000000 --- a/sbt/src/sbt-test/project/external-conflict/A.scala +++ /dev/null @@ -1,3 +0,0 @@ -object A { - val x = 3 -} diff --git a/sbt/src/sbt-test/project/external-conflict/build.sbt b/sbt/src/sbt-test/project/external-conflict/build.sbt deleted file mode 100644 index cb5b64a94..000000000 --- a/sbt/src/sbt-test/project/external-conflict/build.sbt +++ /dev/null @@ -1,11 +0,0 @@ -organization := "org.example" - -name := "app" - -version := "0.1.17" - -publishTo <<= baseDirectory(base => Some(Resolver.file("sample", base / "repo"))) - -resolvers <++= publishTo(_.toList) - -ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))) \ No newline at end of file diff --git a/sbt/src/sbt-test/project/external-conflict/changes/A.scala b/sbt/src/sbt-test/project/external-conflict/changes/A.scala deleted file mode 100644 index c3fa8f914..000000000 --- a/sbt/src/sbt-test/project/external-conflict/changes/A.scala +++ /dev/null @@ -1,3 +0,0 @@ -object A { - val x = 5 -} diff --git a/sbt/src/sbt-test/project/external-conflict/changes/B.scala b/sbt/src/sbt-test/project/external-conflict/changes/B.scala deleted file mode 100644 index 94ed22c90..000000000 --- a/sbt/src/sbt-test/project/external-conflict/changes/B.scala +++ /dev/null @@ -1,11 +0,0 @@ -object B -{ - def main(args: Array[String]) - { - val expected = args(0).toInt - val actual = A.x - println("Expected: " + expected) - println("Actual: " + actual) - assert(expected == actual, "Expected " + expected + ", got: " + actual) - } -} diff --git a/sbt/src/sbt-test/project/external-conflict/changes/Build.scala b/sbt/src/sbt-test/project/external-conflict/changes/Build.scala deleted file mode 100644 index 576964d51..000000000 --- a/sbt/src/sbt-test/project/external-conflict/changes/Build.scala +++ /dev/null @@ -1,26 +0,0 @@ -import sbt._ -import Import._ -import Keys._ - -object B extends Build -{ - override def projectDefinitions(f: File) = Seq( makeProject(f) ) - - def makeProject(f: File) = - { - val addBin = if(isBinary(f)) binaryDep(baseProject) else baseProject - if(isSource(f)) sourceDep(addBin) else addBin - } - - def isBinary(f: File) = f / "binary" exists; - def isSource(f: File) = f / "source" exists; - - def baseProject = Project("root", file(".")) settings( - ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))) - ) - def sourceDep(p: Project) = p dependsOn( file("ext") ) - def binaryDep(p: Project) = p settings( - libraryDependencies += "org.example" %% "app" % "0.1.17", - resolvers <+= baseDirectory(base => "sample" at (base / "repo").toURI.toString) - ) -} diff --git a/sbt/src/sbt-test/project/external-conflict/changes/ext.sbt b/sbt/src/sbt-test/project/external-conflict/changes/ext.sbt deleted file mode 100644 index 1e1823121..000000000 --- a/sbt/src/sbt-test/project/external-conflict/changes/ext.sbt +++ /dev/null @@ -1,9 +0,0 @@ -organization := "org.example" - -name := "app" - -version <<= baseDirectory { base => - if(base / "older" exists) "0.1.16" else "0.1.18" -} - -ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "../ivy-cache"))) \ No newline at end of file diff --git a/sbt/src/sbt-test/project/external-conflict/test b/sbt/src/sbt-test/project/external-conflict/test deleted file mode 100644 index f288246dd..000000000 --- a/sbt/src/sbt-test/project/external-conflict/test +++ /dev/null @@ -1,27 +0,0 @@ -> publish -$ delete A.scala build.sbt - -$ mkdir ext -$ copy-file changes/A.scala ext/A.scala -$ copy-file changes/B.scala B.scala -$ copy-file changes/Build.scala project/Build.scala -$ copy-file changes/ext.sbt ext/build.sbt - --> compile - -$ touch binary -> reload -> run 3 - -$ delete binary -$ touch source -> reload -> run 5 - -$ touch binary source -> reload -> run 5 - -$ touch ext/older -> reload -> run 5 \ No newline at end of file From c02b053c55f190b28485722364ad87853492e4f0 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 17:05:58 -0400 Subject: [PATCH 14/70] Port project/global-plugin --- .../project/global-plugin/changes/Build.scala | 21 ------------------- .../project/global-plugin/changes/build.sbt | 15 +++++++++++++ .../project/{Build.scala => Test.scala} | 0 sbt/src/sbt-test/project/global-plugin/test | 2 +- 4 files changed, 16 insertions(+), 22 deletions(-) delete mode 100644 sbt/src/sbt-test/project/global-plugin/changes/Build.scala create mode 100644 sbt/src/sbt-test/project/global-plugin/changes/build.sbt rename sbt/src/sbt-test/project/global-plugin/project/{Build.scala => Test.scala} (100%) diff --git a/sbt/src/sbt-test/project/global-plugin/changes/Build.scala b/sbt/src/sbt-test/project/global-plugin/changes/Build.scala deleted file mode 100644 index 13ba8e7af..000000000 --- a/sbt/src/sbt-test/project/global-plugin/changes/Build.scala +++ /dev/null @@ -1,21 +0,0 @@ -import sbt._ -import Import._ -import sbt.Keys._ - -object MyBuild extends Build { - lazy val mySettings = Defaults.defaultSettings ++ Seq( - name := "my-test-proj", - organization := "com.example", - check <<= update map checkVersion, - version := "0.1.0-SNAPSHOT") - - lazy val proj = Project("my-test-proj", file("."), settings = mySettings) - - lazy val check = taskKey[Unit]("Verifies that the junit dependency has the newer version (4.8)") - - def checkVersion(report: UpdateReport): Unit = { - for(mod <- report.allModules) { - if(mod.name == "junit") assert(mod.revision == "4.8", s"JUnit version (${mod.revision}) does not have the correct version") - } - } -} diff --git a/sbt/src/sbt-test/project/global-plugin/changes/build.sbt b/sbt/src/sbt-test/project/global-plugin/changes/build.sbt new file mode 100644 index 000000000..0ed1660fb --- /dev/null +++ b/sbt/src/sbt-test/project/global-plugin/changes/build.sbt @@ -0,0 +1,15 @@ +lazy val check = taskKey[Unit]("Verifies that the junit dependency has the newer version (4.8)") + +lazy val proj = (project in file(".")). + settings( + name := "my-test-proj", + organization := "com.example", + check <<= update map checkVersion, + version := "0.1.0-SNAPSHOT" + ) + +def checkVersion(report: UpdateReport): Unit = { + for(mod <- report.allModules) { + if(mod.name == "junit") assert(mod.revision == "4.8", s"JUnit version (${mod.revision}) does not have the correct version") + } +} diff --git a/sbt/src/sbt-test/project/global-plugin/project/Build.scala b/sbt/src/sbt-test/project/global-plugin/project/Test.scala similarity index 100% rename from sbt/src/sbt-test/project/global-plugin/project/Build.scala rename to sbt/src/sbt-test/project/global-plugin/project/Test.scala diff --git a/sbt/src/sbt-test/project/global-plugin/test b/sbt/src/sbt-test/project/global-plugin/test index f5ab8b106..cda5fc4b3 100644 --- a/sbt/src/sbt-test/project/global-plugin/test +++ b/sbt/src/sbt-test/project/global-plugin/test @@ -1,4 +1,4 @@ -$ copy-file changes/Build.scala project/Build.scala +$ copy-file changes/build.sbt build.sbt > reload # ensure that a new global dependency gets picked up From 55526c1f810dc280f2fef32c2ec026632654f0bc Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 17:20:50 -0400 Subject: [PATCH 15/70] Port project/isolated-build-definitions --- .../project/isolated-build-definitions/build.sbt | 12 ++++++++---- .../isolated-build-definitions/generator/build.sbt | 11 ++++++----- .../generator/project/Build.scala | 8 -------- .../isolated-build-definitions/project/Build.scala | 12 ------------ 4 files changed, 14 insertions(+), 29 deletions(-) delete mode 100644 sbt/src/sbt-test/project/isolated-build-definitions/generator/project/Build.scala delete mode 100644 sbt/src/sbt-test/project/isolated-build-definitions/project/Build.scala diff --git a/sbt/src/sbt-test/project/isolated-build-definitions/build.sbt b/sbt/src/sbt-test/project/isolated-build-definitions/build.sbt index 76d6c9554..5928ca7b5 100644 --- a/sbt/src/sbt-test/project/isolated-build-definitions/build.sbt +++ b/sbt/src/sbt-test/project/isolated-build-definitions/build.sbt @@ -1,5 +1,9 @@ -name := "project-runtime" +lazy val `project-runtime` = (project in file(".")). + dependsOn(projectGenerator % "optional"). + settings( + name := "project-runtime", + scalaVersion := "2.11.7", + crossPaths := false + ) -scalaVersion := "2.9.1" - -crossPaths := false +lazy val projectGenerator = ProjectRef(uri("generator/"), "project") diff --git a/sbt/src/sbt-test/project/isolated-build-definitions/generator/build.sbt b/sbt/src/sbt-test/project/isolated-build-definitions/generator/build.sbt index 7a1a4ec44..cbc8c6c17 100644 --- a/sbt/src/sbt-test/project/isolated-build-definitions/generator/build.sbt +++ b/sbt/src/sbt-test/project/isolated-build-definitions/generator/build.sbt @@ -1,5 +1,6 @@ -name := "project" - -scalaVersion := "2.9.1" - -crossPaths := false +lazy val project = (sbt.project in file(".")). + settings( + name := "project", + scalaVersion := "2.11.7", + crossPaths := false + ) diff --git a/sbt/src/sbt-test/project/isolated-build-definitions/generator/project/Build.scala b/sbt/src/sbt-test/project/isolated-build-definitions/generator/project/Build.scala deleted file mode 100644 index 9b47bb2a7..000000000 --- a/sbt/src/sbt-test/project/isolated-build-definitions/generator/project/Build.scala +++ /dev/null @@ -1,8 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build { -lazy val project = Project(id = "project", - base = file(".")) -} diff --git a/sbt/src/sbt-test/project/isolated-build-definitions/project/Build.scala b/sbt/src/sbt-test/project/isolated-build-definitions/project/Build.scala deleted file mode 100644 index 27856af2a..000000000 --- a/sbt/src/sbt-test/project/isolated-build-definitions/project/Build.scala +++ /dev/null @@ -1,12 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val projectRuntime = Project(id = "project-runtime", base = file(".")). - dependsOn(projectGenerator % "optional") - - - lazy val projectGenerator = ProjectRef(uri("generator/"),"project") -} From 7f6c44290820080642f0ecda2e2c1ea2905d653c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 18:01:03 -0400 Subject: [PATCH 16/70] Port project/scala-loader --- .../sbt-test/project/scala-loader/build.sbt | 40 +++++++++++++++++++ .../project/scala-loader/project/Build.scala | 21 ---------- 2 files changed, 40 insertions(+), 21 deletions(-) create mode 100644 sbt/src/sbt-test/project/scala-loader/build.sbt delete mode 100644 sbt/src/sbt-test/project/scala-loader/project/Build.scala diff --git a/sbt/src/sbt-test/project/scala-loader/build.sbt b/sbt/src/sbt-test/project/scala-loader/build.sbt new file mode 100644 index 000000000..a8b38b0f7 --- /dev/null +++ b/sbt/src/sbt-test/project/scala-loader/build.sbt @@ -0,0 +1,40 @@ +lazy val checkLoader = TaskKey[Unit]("check-loaders") + +def checkTask = subs.map(sub => scalaInstance in LocalProject(sub.id)).join.map { sis => + assert(sis.sliding(2).forall{ case Seq(x,y) => x.loader == y.loader }, "Not all ScalaInstances had the same class loader.") +} + +lazy val root = (project in file(".")). + settings( + checkLoader <<= checkTask, + concurrentRestrictions := Nil + ) + +lazy val x1 = newProject(1) +lazy val x2 = newProject(2) +lazy val x3 = newProject(3) +lazy val x4 = newProject(4) +lazy val x5 = newProject(5) +lazy val x6 = newProject(6) +lazy val x7 = newProject(7) +lazy val x8 = newProject(8) +lazy val x9 = newProject(9) +lazy val x10 = newProject(10) +lazy val x11 = newProject(11) +lazy val x12 = newProject(12) +lazy val x13 = newProject(13) +lazy val x14 = newProject(14) +lazy val x15 = newProject(15) +lazy val x16 = newProject(16) +lazy val x17 = newProject(17) +lazy val x18 = newProject(18) +lazy val x19 = newProject(19) +lazy val x20 = newProject(20) + +lazy val subs = Seq(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, + x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) + +def newProject(i: Int): Project = + Project("x" + i.toString, file(i.toString)).settings( + scalaVersion := "2.9.2" // this should be a Scala version different from the one sbt uses + ) diff --git a/sbt/src/sbt-test/project/scala-loader/project/Build.scala b/sbt/src/sbt-test/project/scala-loader/project/Build.scala deleted file mode 100644 index 43fc3e9e6..000000000 --- a/sbt/src/sbt-test/project/scala-loader/project/Build.scala +++ /dev/null @@ -1,21 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object Build extends Build { - - lazy val checkLoader = TaskKey[Unit]("check-loaders") - - def checkTask = subs.map(sub => scalaInstance in LocalProject(sub.id)).join.map { sis => - assert(sis.sliding(2).forall{ case Seq(x,y) => x.loader == y.loader }, "Not all ScalaInstances had the same class loader.") - } - - override def projects = root +: subs - lazy val root = Project("root", file(".")).settings( checkLoader <<= checkTask, concurrentRestrictions := Nil ) - - lazy val subs = ( for(i <- 1 to 20) yield newProject(i) ).toSeq - - def newProject(i: Int): Project = Project("x" + i.toString, file(i.toString)).settings( - scalaVersion := "2.9.2" // this should be a Scala version different from the one sbt uses - ) -} From 6d2fe00248b0c50a4caecd14fb0959b26ad1fb42 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 18:50:36 -0400 Subject: [PATCH 17/70] Port project/session-save --- sbt/src/sbt-test/project/session-save/build.sbt | 10 +++++++++- .../project/session-save/project/Build.scala | 12 ------------ 2 files changed, 9 insertions(+), 13 deletions(-) delete mode 100755 sbt/src/sbt-test/project/session-save/project/Build.scala diff --git a/sbt/src/sbt-test/project/session-save/build.sbt b/sbt/src/sbt-test/project/session-save/build.sbt index b0d216327..5e0d76851 100755 --- a/sbt/src/sbt-test/project/session-save/build.sbt +++ b/sbt/src/sbt-test/project/session-save/build.sbt @@ -1,3 +1,11 @@ +val k1 = TaskKey[Unit]("k1") +val k2 = TaskKey[Unit]("k2") +val k3 = TaskKey[Unit]("k3") +val k4 = TaskKey[Unit]("k4") +val k5 = TaskKey[Unit]("k4") + +lazy val root = (project in file(".")) + k1 := { } @@ -11,4 +19,4 @@ k3 := { () } -k4 := { }; k5 := () \ No newline at end of file +k4 := { }; k5 := () diff --git a/sbt/src/sbt-test/project/session-save/project/Build.scala b/sbt/src/sbt-test/project/session-save/project/Build.scala deleted file mode 100755 index eea0db9bf..000000000 --- a/sbt/src/sbt-test/project/session-save/project/Build.scala +++ /dev/null @@ -1,12 +0,0 @@ -import sbt._ -import Import._ - -object TestBuild extends Build { - val k1 = TaskKey[Unit]("k1") - val k2 = TaskKey[Unit]("k2") - val k3 = TaskKey[Unit]("k3") - val k4 = TaskKey[Unit]("k4") - val k5 = TaskKey[Unit]("k4") - - lazy val root = Project("root", file(".")) -} From 4b17730e833546ab17b86ebf9fb356c7b80a7c88 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 19:04:22 -0400 Subject: [PATCH 18/70] Port project/session-update-from-cmd --- .../project/session-update-from-cmd/build.check.1 | 10 +++++++++- .../project/session-update-from-cmd/build.check.2 | 10 +++++++++- .../sbt-test/project/session-update-from-cmd/build.sbt | 10 +++++++++- .../project/{build.scala => Common.scala} | 6 +----- 4 files changed, 28 insertions(+), 8 deletions(-) rename sbt/src/sbt-test/project/session-update-from-cmd/project/{build.scala => Common.scala} (90%) diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 b/sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 index 019984510..630f13723 100644 --- a/sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 +++ b/sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 @@ -1,3 +1,5 @@ +import Common._ + name := "projectName" k1 := { @@ -9,4 +11,10 @@ k2 := { println("This is k2") } -val x = 5; k3 := {}; k4 := {} \ No newline at end of file +val x = 5; k3 := {}; k4 := {} + + +lazy val root = (project in file(".")). + settings( + commands ++= Seq(UpdateK1, UpdateK3) + ) diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/build.check.2 b/sbt/src/sbt-test/project/session-update-from-cmd/build.check.2 index f9128e0be..0103c0c76 100644 --- a/sbt/src/sbt-test/project/session-update-from-cmd/build.check.2 +++ b/sbt/src/sbt-test/project/session-update-from-cmd/build.check.2 @@ -1,3 +1,5 @@ +import Common._ + name := "projectName" k1 := { @@ -12,4 +14,10 @@ k2 := { val x = 5; k3 := { // // -}; k4 := {} \ No newline at end of file +}; k4 := {} + + +lazy val root = (project in file(".")). + settings( + commands ++= Seq(UpdateK1, UpdateK3) + ) diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/build.sbt b/sbt/src/sbt-test/project/session-update-from-cmd/build.sbt index fdd333a83..9fa9bb3ed 100644 --- a/sbt/src/sbt-test/project/session-update-from-cmd/build.sbt +++ b/sbt/src/sbt-test/project/session-update-from-cmd/build.sbt @@ -1,3 +1,5 @@ +import Common._ + name := "projectName" k1 := {} @@ -6,4 +8,10 @@ k2 := { println("This is k2") } -val x = 5; k3 := {}; k4 := {} \ No newline at end of file +val x = 5; k3 := {}; k4 := {} + + +lazy val root = (project in file(".")). + settings( + commands ++= Seq(UpdateK1, UpdateK3) + ) diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/project/build.scala b/sbt/src/sbt-test/project/session-update-from-cmd/project/Common.scala similarity index 90% rename from sbt/src/sbt-test/project/session-update-from-cmd/project/build.scala rename to sbt/src/sbt-test/project/session-update-from-cmd/project/Common.scala index 76275dc8d..4d9fc6660 100644 --- a/sbt/src/sbt-test/project/session-update-from-cmd/project/build.scala +++ b/sbt/src/sbt-test/project/session-update-from-cmd/project/Common.scala @@ -2,7 +2,7 @@ import sbt._ import Keys._ import Import._ -object build extends Build { +object Common { lazy val k1 = taskKey[Unit]("") lazy val k2 = taskKey[Unit]("") lazy val k3 = taskKey[Unit]("") @@ -32,10 +32,6 @@ object build extends Build { // SessionSettings.writeSettings(ex.currentRef, session2, ex.session.original, ex.structure) SessionSettings.saveAllSettings(st1) } - - lazy val root = Project("root", file(".")) settings( - commands ++= Seq(UpdateK1, UpdateK3) - ) } // vim: set ts=4 sw=4 et: From f66e350e8cea6add77cf9a3743972311718c1a44 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 19:09:36 -0400 Subject: [PATCH 19/70] Port project/settings --- sbt/src/sbt-test/project/settings/changes/Build.scala | 10 ---------- sbt/src/sbt-test/project/settings/test | 5 ----- 2 files changed, 15 deletions(-) delete mode 100644 sbt/src/sbt-test/project/settings/changes/Build.scala diff --git a/sbt/src/sbt-test/project/settings/changes/Build.scala b/sbt/src/sbt-test/project/settings/changes/Build.scala deleted file mode 100644 index 1bb2e32f8..000000000 --- a/sbt/src/sbt-test/project/settings/changes/Build.scala +++ /dev/null @@ -1,10 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val root = Project("root", file(".")) settings( - maxErrors ~= (_ * 9) - ) -} diff --git a/sbt/src/sbt-test/project/settings/test b/sbt/src/sbt-test/project/settings/test index 82232b716..00562c54e 100644 --- a/sbt/src/sbt-test/project/settings/test +++ b/sbt/src/sbt-test/project/settings/test @@ -18,8 +18,3 @@ $ copy-file changes/local.sbt local.sbt $ copy-file changes/Global.scala global/plugins/Global.scala > reload > check 19 - -# multiply by 9 -$ copy-file changes/Build.scala project/Build.scala -> reload -> check 1299 From 06fa0c079e7b3e3c333257d19fe1b9c880148d38 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 19:15:00 -0400 Subject: [PATCH 20/70] Port project/source-plugins --- .../sbt-test/project/source-plugins/project/plugin.sbt | 5 +++++ .../project/source-plugins/project/project/Build.scala | 9 --------- 2 files changed, 5 insertions(+), 9 deletions(-) create mode 100644 sbt/src/sbt-test/project/source-plugins/project/plugin.sbt delete mode 100644 sbt/src/sbt-test/project/source-plugins/project/project/Build.scala diff --git a/sbt/src/sbt-test/project/source-plugins/project/plugin.sbt b/sbt/src/sbt-test/project/source-plugins/project/plugin.sbt new file mode 100644 index 000000000..381215651 --- /dev/null +++ b/sbt/src/sbt-test/project/source-plugins/project/plugin.sbt @@ -0,0 +1,5 @@ +lazy val proguard = uri("git://github.com/sbt/sbt-proguard.git#e7b4732969c137db1b5") +lazy val git = uri("git://github.com/sbt/sbt-git.git#2e7c2503850698d60bb") + +lazy val root = (project in file(".")). + dependsOn(proguard, git) diff --git a/sbt/src/sbt-test/project/source-plugins/project/project/Build.scala b/sbt/src/sbt-test/project/source-plugins/project/project/Build.scala deleted file mode 100644 index 212c8e8ac..000000000 --- a/sbt/src/sbt-test/project/source-plugins/project/project/Build.scala +++ /dev/null @@ -1,9 +0,0 @@ -import sbt._ -import Import._ - -object PluginDef extends Build { - override def projects = Seq(root) - lazy val root = Project("plugins", file(".")) dependsOn(proguard, git) - lazy val proguard = uri("git://github.com/sbt/sbt-proguard.git#e7b4732969c137db1b5") - lazy val git = uri("git://github.com/sbt/sbt-git.git#2e7c2503850698d60bb") -} \ No newline at end of file From 938de409aea041f1b8953658ffb998b547387003 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 20:39:59 -0400 Subject: [PATCH 21/70] Port source-dependencies/export-jars --- .../project/transitive-plugins/build.sbt | 15 +++++++++++++++ .../transitive-plugins/project/Build.scala | 19 ------------------- .../source-dependencies/export-jars/build.sbt | 4 ++++ .../export-jars/project/Build.scala | 8 -------- .../source-dependencies/export-jars/test | 2 +- 5 files changed, 20 insertions(+), 28 deletions(-) create mode 100644 sbt/src/sbt-test/project/transitive-plugins/build.sbt delete mode 100644 sbt/src/sbt-test/project/transitive-plugins/project/Build.scala create mode 100644 sbt/src/sbt-test/source-dependencies/export-jars/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/export-jars/project/Build.scala diff --git a/sbt/src/sbt-test/project/transitive-plugins/build.sbt b/sbt/src/sbt-test/project/transitive-plugins/build.sbt new file mode 100644 index 000000000..9a6a8b382 --- /dev/null +++ b/sbt/src/sbt-test/project/transitive-plugins/build.sbt @@ -0,0 +1,15 @@ +lazy val root = (project in file(".")) + +lazy val a = proj(project in file("a")) +lazy val b = proj(project in file("b")) +lazy val c = proj(project in file("c")) + +def proj(p: Project): Project = + p.settings( + ivyPaths <<= (baseDirectory in root, target in root)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), + resolvers <+= appConfiguration { app => // need this to resolve sbt + val ivyHome = Classpaths.bootIvyHome(app) getOrElse sys.error("Launcher did not provide the Ivy home directory.") + Resolver.file("real-local", ivyHome / "local")(Resolver.ivyStylePatterns) + }, + resolvers += Resolver.typesafeIvyRepo("releases") // not sure why this isn't included by default + ) diff --git a/sbt/src/sbt-test/project/transitive-plugins/project/Build.scala b/sbt/src/sbt-test/project/transitive-plugins/project/Build.scala deleted file mode 100644 index ba8a27023..000000000 --- a/sbt/src/sbt-test/project/transitive-plugins/project/Build.scala +++ /dev/null @@ -1,19 +0,0 @@ -import sbt._ -import Import._ -import Keys._ - -object Build extends Build -{ - lazy val root = Project("root", file(".")) - lazy val a = project("a") - lazy val b = project("b") - lazy val c = project("c") - def project(s: String) = Project(s, file(s)) settings( - ivyPaths <<= (baseDirectory in root, target in root)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), - resolvers <+= appConfiguration { app => // need this to resolve sbt - val ivyHome = Classpaths.bootIvyHome(app) getOrElse sys.error("Launcher did not provide the Ivy home directory.") - Resolver.file("real-local", ivyHome / "local")(Resolver.ivyStylePatterns) - }, - resolvers += Resolver.typesafeIvyRepo("releases") // not sure why this isn't included by default - ) -} diff --git a/sbt/src/sbt-test/source-dependencies/export-jars/build.sbt b/sbt/src/sbt-test/source-dependencies/export-jars/build.sbt new file mode 100644 index 000000000..aed35e96e --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/export-jars/build.sbt @@ -0,0 +1,4 @@ +lazy val root = (project in file(".")). + dependsOn(a) + +lazy val a = (project in file("a")) diff --git a/sbt/src/sbt-test/source-dependencies/export-jars/project/Build.scala b/sbt/src/sbt-test/source-dependencies/export-jars/project/Build.scala deleted file mode 100644 index cb6bb7de2..000000000 --- a/sbt/src/sbt-test/source-dependencies/export-jars/project/Build.scala +++ /dev/null @@ -1,8 +0,0 @@ -import sbt._ -import Import._ - -object Build extends Build -{ - lazy val root = Project("root", file(".")) dependsOn(a) - lazy val a = Project("a", file("a")) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/export-jars/test b/sbt/src/sbt-test/source-dependencies/export-jars/test index e06ce1ee5..3676fac5d 100644 --- a/sbt/src/sbt-test/source-dependencies/export-jars/test +++ b/sbt/src/sbt-test/source-dependencies/export-jars/test @@ -12,7 +12,7 @@ $ copy-file changes/A3.scala a/A.scala $ sleep 2000 > run 3 -$ copy-file changes/build2.sbt build.sbt +$ copy-file changes/build2.sbt build2.sbt > reload $ copy-file changes/A1.scala a/A.scala From 4b7521550d17ea300bb95ff5050b3080169d8343 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 22:43:44 -0400 Subject: [PATCH 22/70] Port source-dependencies/inherited-macros --- .../inherited-macros/build.sbt | 21 +++++++++++++ .../inherited-macros/project/build.scala | 30 ------------------- .../source-dependencies/inherited-macros/test | 6 ++-- 3 files changed, 24 insertions(+), 33 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/inherited-macros/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/inherited-macros/project/build.scala diff --git a/sbt/src/sbt-test/source-dependencies/inherited-macros/build.sbt b/sbt/src/sbt-test/source-dependencies/inherited-macros/build.sbt new file mode 100644 index 000000000..5ecf2dc5b --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/inherited-macros/build.sbt @@ -0,0 +1,21 @@ +val defaultSettings = Seq( + libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ )//, + //incOptions := incOptions.value.withNameHashing(true) +) + +lazy val root = (project in file(".")). + aggregate(macroProvider, macroClient). + settings( + defaultSettings + ) + +lazy val macroProvider = (project in file("macro-provider")). + settings( + defaultSettings + ) + +lazy val macroClient = (project in file("macro-client")). + dependsOn(macroProvider). + settings( + defaultSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/inherited-macros/project/build.scala b/sbt/src/sbt-test/source-dependencies/inherited-macros/project/build.scala deleted file mode 100644 index 59c3b10cb..000000000 --- a/sbt/src/sbt-test/source-dependencies/inherited-macros/project/build.scala +++ /dev/null @@ -1,30 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - val defaultSettings = Seq( - libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ )//, - //incOptions := incOptions.value.withNameHashing(true) - ) - - lazy val root = Project( - base = file("."), - id = "macro", - aggregate = Seq(macroProvider, macroClient), - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroProvider = Project( - base = file("macro-provider"), - id = "macro-provider", - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroClient = Project( - base = file("macro-client"), - id = "macro-client", - dependencies = Seq(macroProvider), - settings = Defaults.defaultSettings ++ defaultSettings - ) -} diff --git a/sbt/src/sbt-test/source-dependencies/inherited-macros/test b/sbt/src/sbt-test/source-dependencies/inherited-macros/test index 9a6e7dfcf..4a755b5b2 100644 --- a/sbt/src/sbt-test/source-dependencies/inherited-macros/test +++ b/sbt/src/sbt-test/source-dependencies/inherited-macros/test @@ -1,11 +1,11 @@ -> macro-provider/compile +> macroProvider/compile -> macro-client/compile +> macroClient/compile # Introduce a comment in Client, which inherits a macro from Provider $ copy-file changes/Client.scala macro-client/src/main/scala/Client.scala -> macro-client/compile +> macroClient/compile # Object Foo depends on Client via composition, thus a whitespace change to # Client shouldn't trigger its recompilation From 0c2e80626d309c23fcd215ef26cd77bb515c372d Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 22:47:50 -0400 Subject: [PATCH 23/70] Port source-dependencies/macro --- .../source-dependencies/macro/build.sbt | 21 ++++++++++++++ .../macro/project/build.scala | 29 ------------------- .../sbt-test/source-dependencies/macro/test | 4 +-- 3 files changed, 23 insertions(+), 31 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/macro/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/macro/project/build.scala diff --git a/sbt/src/sbt-test/source-dependencies/macro/build.sbt b/sbt/src/sbt-test/source-dependencies/macro/build.sbt new file mode 100644 index 000000000..5ecf2dc5b --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/build.sbt @@ -0,0 +1,21 @@ +val defaultSettings = Seq( + libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ )//, + //incOptions := incOptions.value.withNameHashing(true) +) + +lazy val root = (project in file(".")). + aggregate(macroProvider, macroClient). + settings( + defaultSettings + ) + +lazy val macroProvider = (project in file("macro-provider")). + settings( + defaultSettings + ) + +lazy val macroClient = (project in file("macro-client")). + dependsOn(macroProvider). + settings( + defaultSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/macro/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro/project/build.scala deleted file mode 100644 index 9d2da43b5..000000000 --- a/sbt/src/sbt-test/source-dependencies/macro/project/build.scala +++ /dev/null @@ -1,29 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - val defaultSettings = Seq( - libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ) - ) - - lazy val root = Project( - base = file("."), - id = "macro", - aggregate = Seq(macroProvider, macroClient), - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroProvider = Project( - base = file("macro-provider"), - id = "macro-provider", - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroClient = Project( - base = file("macro-client"), - id = "macro-client", - dependencies = Seq(macroProvider), - settings = Defaults.defaultSettings ++ defaultSettings - ) -} diff --git a/sbt/src/sbt-test/source-dependencies/macro/test b/sbt/src/sbt-test/source-dependencies/macro/test index 4c633a05d..7a3d278a8 100644 --- a/sbt/src/sbt-test/source-dependencies/macro/test +++ b/sbt/src/sbt-test/source-dependencies/macro/test @@ -7,9 +7,9 @@ $ copy-file macro-provider/changes/Provider.scala macro-provider/Provider.scala -> macro-provider/compile +> macroProvider/compile --> macro-client/compile +-> macroClient/compile > clean From 5158728b8a67a980260d90422b82bb15fc4dd559 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 22:55:33 -0400 Subject: [PATCH 24/70] Port source-dependencies/macro-annotation --- .../macro-annotation/build.sbt | 33 +++++++++++++ .../macro-annotation/project/Build.scala | 46 ------------------- 2 files changed, 33 insertions(+), 46 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/macro-annotation/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/macro-annotation/project/Build.scala diff --git a/sbt/src/sbt-test/source-dependencies/macro-annotation/build.sbt b/sbt/src/sbt-test/source-dependencies/macro-annotation/build.sbt new file mode 100644 index 000000000..08839d26b --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro-annotation/build.sbt @@ -0,0 +1,33 @@ +val paradiseVersion = "2.0.1" +val commonSettings = Seq( + version := "1.0.0", + scalacOptions ++= Seq(""), + scalaVersion := "2.11.4", + resolvers += Resolver.sonatypeRepo("snapshots"), + resolvers += Resolver.sonatypeRepo("releases"), + addCompilerPlugin("org.scalamacros" % "paradise" % paradiseVersion cross CrossVersion.full), + incOptions := incOptions.value.withNameHashing(true) +) + +lazy val root = (project in file(".")). + aggregate(macros, core). + settings( + commonSettings, + run <<= run in Compile in core + ) + +lazy val macros = (project in file("macros")). + settings( + commonSettings, + libraryDependencies <+= (scalaVersion)("org.scala-lang" % "scala-reflect" % _), + libraryDependencies ++= ( + if (scalaVersion.value.startsWith("2.10")) List("org.scalamacros" %% "quasiquotes" % paradiseVersion) + else Nil + ) + ) + +lazy val core = (project in file("core")). + dependsOn(macros). + settings( + commonSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/macro-annotation/project/Build.scala b/sbt/src/sbt-test/source-dependencies/macro-annotation/project/Build.scala deleted file mode 100644 index deadc9798..000000000 --- a/sbt/src/sbt-test/source-dependencies/macro-annotation/project/Build.scala +++ /dev/null @@ -1,46 +0,0 @@ -import sbt._ -import Import._ -import Keys._ - -object BuildSettings { - val paradiseVersion = "2.0.1" - val buildSettings = Defaults.defaultSettings ++ Seq( - version := "1.0.0", - scalacOptions ++= Seq(""), - scalaVersion := "2.11.4", - resolvers += Resolver.sonatypeRepo("snapshots"), - resolvers += Resolver.sonatypeRepo("releases"), - addCompilerPlugin("org.scalamacros" % "paradise" % paradiseVersion cross CrossVersion.full), - incOptions := incOptions.value.withNameHashing(true) - ) -} - -object MyBuild extends Build { - import BuildSettings._ - - lazy val root: Project = Project( - "root", - file("."), - settings = buildSettings ++ Seq( - run <<= run in Compile in core - ) - ) aggregate(macros, core) - - lazy val macros: Project = Project( - "macros", - file("macros"), - settings = buildSettings ++ Seq( - libraryDependencies <+= (scalaVersion)("org.scala-lang" % "scala-reflect" % _), - libraryDependencies ++= ( - if (scalaVersion.value.startsWith("2.10")) List("org.scalamacros" %% "quasiquotes" % paradiseVersion) - else Nil - ) - ) - ) - - lazy val core: Project = Project( - "core", - file("core"), - settings = buildSettings - ) dependsOn(macros) -} From 98fd0adcbcee3e6c27f5cbda3ccb4d63f8977644 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 22:59:54 -0400 Subject: [PATCH 25/70] Port source-dependencies/macro-arg-dep --- .../macro-arg-dep/build.sbt | 20 +++++++++++++ .../macro-arg-dep/project/build.scala | 30 ------------------- 2 files changed, 20 insertions(+), 30 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep/project/build.scala diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep/build.sbt b/sbt/src/sbt-test/source-dependencies/macro-arg-dep/build.sbt new file mode 100644 index 000000000..17be9b032 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro-arg-dep/build.sbt @@ -0,0 +1,20 @@ +val defaultSettings = Seq( + libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ) +) + +lazy val root = (project in file(".")). + aggregate(macroProvider, macroClient). + settings( + defaultSettings + ) + +lazy val macroProvider = (project in file("macro-provider")). + settings( + defaultSettings + ) + +lazy val macroClient = (project in file("macro-client")). + dependsOn(macroProvider). + settings( + defaultSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro-arg-dep/project/build.scala deleted file mode 100644 index ecc979eaa..000000000 --- a/sbt/src/sbt-test/source-dependencies/macro-arg-dep/project/build.scala +++ /dev/null @@ -1,30 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - val defaultSettings = Seq( - libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ), - incOptions := incOptions.value.withNameHashing(true) - ) - - lazy val root = Project( - base = file("."), - id = "macro", - aggregate = Seq(macroProvider, macroClient), - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroProvider = Project( - base = file("macro-provider"), - id = "macro-provider", - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroClient = Project( - base = file("macro-client"), - id = "macro-client", - dependencies = Seq(macroProvider), - settings = Defaults.defaultSettings ++ defaultSettings - ) -} From be4f965cd4e20f1e3a78b9f4f87db04443a1bff9 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 23:03:14 -0400 Subject: [PATCH 26/70] Port source-dependencies/macro-arg-dep-2-11 --- .../macro-arg-dep-2-11/build.sbt | 21 +++++++++++++ .../macro-arg-dep-2-11/project/build.scala | 31 ------------------- 2 files changed, 21 insertions(+), 31 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/project/build.scala diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/build.sbt b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/build.sbt new file mode 100644 index 000000000..ced00eb8d --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/build.sbt @@ -0,0 +1,21 @@ +val defaultSettings = Seq( + scalaVersion := "2.11.7", + libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ) +) + +lazy val root = (project in file(".")). + aggregate(macroProvider, macroClient). + settings( + defaultSettings + ) + +lazy val macroProvider = (project in file("macro-provider")). + settings( + defaultSettings + ) + +lazy val macroClient = (project in file("macro-client")). + dependsOn(macroProvider). + settings( + defaultSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/project/build.scala deleted file mode 100644 index e2411e8ba..000000000 --- a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-2-11/project/build.scala +++ /dev/null @@ -1,31 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - val defaultSettings = Seq( - libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ), - incOptions := incOptions.value.withNameHashing(true), - scalaVersion := "2.11.6" - ) - - lazy val root = Project( - base = file("."), - id = "macro", - aggregate = Seq(macroProvider, macroClient), - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroProvider = Project( - base = file("macro-provider"), - id = "macro-provider", - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroClient = Project( - base = file("macro-client"), - id = "macro-client", - dependencies = Seq(macroProvider), - settings = Defaults.defaultSettings ++ defaultSettings - ) -} From c2a1dfb910b45c149f50c7bcf9e18dfe625e38dc Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 23:06:12 -0400 Subject: [PATCH 27/70] Port source-dependencies/macro-arg-dep-nested --- .../macro-arg-dep-nested/build.sbt | 20 +++++++++++++ .../macro-arg-dep-nested/project/build.scala | 30 ------------------- .../macro-arg-dep-nested/test | 2 +- 3 files changed, 21 insertions(+), 31 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/project/build.scala diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/build.sbt b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/build.sbt new file mode 100644 index 000000000..17be9b032 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/build.sbt @@ -0,0 +1,20 @@ +val defaultSettings = Seq( + libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ) +) + +lazy val root = (project in file(".")). + aggregate(macroProvider, macroClient). + settings( + defaultSettings + ) + +lazy val macroProvider = (project in file("macro-provider")). + settings( + defaultSettings + ) + +lazy val macroClient = (project in file("macro-client")). + dependsOn(macroProvider). + settings( + defaultSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/project/build.scala deleted file mode 100644 index ecc979eaa..000000000 --- a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/project/build.scala +++ /dev/null @@ -1,30 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - val defaultSettings = Seq( - libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ), - incOptions := incOptions.value.withNameHashing(true) - ) - - lazy val root = Project( - base = file("."), - id = "macro", - aggregate = Seq(macroProvider, macroClient), - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroProvider = Project( - base = file("macro-provider"), - id = "macro-provider", - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroClient = Project( - base = file("macro-client"), - id = "macro-client", - dependencies = Seq(macroProvider), - settings = Defaults.defaultSettings ++ defaultSettings - ) -} diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/test b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/test index 231939418..2f81b1965 100644 --- a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/test +++ b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested/test @@ -6,7 +6,7 @@ $ copy-file macro-client/changes/Foo.scala macro-client/Foo.scala # we should recompile Foo.scala first and then fail to compile Client.scala due to missing # `Foo.str` --> macro-client/compile +-> macroClient/compile > clean From 4c50dc054afe4057937eda930c1dc4f085621a20 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 28 Mar 2016 23:11:02 -0400 Subject: [PATCH 28/70] Port source-dependencies/macro-arg-dep-stackoverflow --- .../macro-arg-dep-nested-2-11/build.sbt | 21 +++++++++++++ .../project/build.scala | 31 ------------------- .../macro-arg-dep-stackoverflow/build.sbt | 20 ++++++++++++ .../project/build.scala | 30 ------------------ 4 files changed, 41 insertions(+), 61 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/project/build.scala create mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/project/build.scala diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/build.sbt b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/build.sbt new file mode 100644 index 000000000..1a2374c55 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/build.sbt @@ -0,0 +1,21 @@ +val defaultSettings = Seq( + scalaVersion := "2.11.7", + libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ) +) + +lazy val root = (project in file(".")). + aggregate(macroProvider, macroClient). + settings( + defaultSettings + ) + +lazy val macroProvider = (project in file("macro-provider")). + settings( + defaultSettings + ) + +lazy val macroClient = (project in file("macro-client")). + dependsOn(macroProvider). + settings( + defaultSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/project/build.scala deleted file mode 100644 index e2411e8ba..000000000 --- a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-nested-2-11/project/build.scala +++ /dev/null @@ -1,31 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - val defaultSettings = Seq( - libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ), - incOptions := incOptions.value.withNameHashing(true), - scalaVersion := "2.11.6" - ) - - lazy val root = Project( - base = file("."), - id = "macro", - aggregate = Seq(macroProvider, macroClient), - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroProvider = Project( - base = file("macro-provider"), - id = "macro-provider", - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroClient = Project( - base = file("macro-client"), - id = "macro-client", - dependencies = Seq(macroProvider), - settings = Defaults.defaultSettings ++ defaultSettings - ) -} diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/build.sbt b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/build.sbt new file mode 100644 index 000000000..17be9b032 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/build.sbt @@ -0,0 +1,20 @@ +val defaultSettings = Seq( + libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ) +) + +lazy val root = (project in file(".")). + aggregate(macroProvider, macroClient). + settings( + defaultSettings + ) + +lazy val macroProvider = (project in file("macro-provider")). + settings( + defaultSettings + ) + +lazy val macroClient = (project in file("macro-client")). + dependsOn(macroProvider). + settings( + defaultSettings + ) diff --git a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/project/build.scala deleted file mode 100644 index ecc979eaa..000000000 --- a/sbt/src/sbt-test/source-dependencies/macro-arg-dep-stackoverflow/project/build.scala +++ /dev/null @@ -1,30 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object build extends Build { - val defaultSettings = Seq( - libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-reflect" % _ ), - incOptions := incOptions.value.withNameHashing(true) - ) - - lazy val root = Project( - base = file("."), - id = "macro", - aggregate = Seq(macroProvider, macroClient), - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroProvider = Project( - base = file("macro-provider"), - id = "macro-provider", - settings = Defaults.defaultSettings ++ defaultSettings - ) - - lazy val macroClient = Project( - base = file("macro-client"), - id = "macro-client", - dependencies = Seq(macroProvider), - settings = Defaults.defaultSettings ++ defaultSettings - ) -} From c60578e2972b05a7a13e2eedbf5861c2d21aba21 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:03:12 -0400 Subject: [PATCH 29/70] Port actions/aggregate --- sbt/src/sbt-test/actions/aggregate/build.sbt | 1 + .../actions/aggregate/changes/build.sbt | 7 +++++ .../actions/aggregate/project/Marker.scala | 26 +++++++++++-------- .../aggregate/project/TestProject.scala | 10 ------- sbt/src/sbt-test/actions/aggregate/test | 1 + 5 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 sbt/src/sbt-test/actions/aggregate/build.sbt create mode 100644 sbt/src/sbt-test/actions/aggregate/changes/build.sbt delete mode 100644 sbt/src/sbt-test/actions/aggregate/project/TestProject.scala diff --git a/sbt/src/sbt-test/actions/aggregate/build.sbt b/sbt/src/sbt-test/actions/aggregate/build.sbt new file mode 100644 index 000000000..c128b140e --- /dev/null +++ b/sbt/src/sbt-test/actions/aggregate/build.sbt @@ -0,0 +1 @@ +lazy val root = (project in file(".")) diff --git a/sbt/src/sbt-test/actions/aggregate/changes/build.sbt b/sbt/src/sbt-test/actions/aggregate/changes/build.sbt new file mode 100644 index 000000000..d369e4f9c --- /dev/null +++ b/sbt/src/sbt-test/actions/aggregate/changes/build.sbt @@ -0,0 +1,7 @@ +lazy val root = (project in file(".")). + aggregate((if(file("aggregate").exists) Seq(sub: sbt.ProjectReference) else Nil): _*) + +lazy val sub = (project in file("sub")). + aggregate(sub2) + +lazy val sub2 = (project in file("sub") / "sub") diff --git a/sbt/src/sbt-test/actions/aggregate/project/Marker.scala b/sbt/src/sbt-test/actions/aggregate/project/Marker.scala index b142c4576..91d73a39b 100644 --- a/sbt/src/sbt-test/actions/aggregate/project/Marker.scala +++ b/sbt/src/sbt-test/actions/aggregate/project/Marker.scala @@ -3,16 +3,20 @@ import Keys._ import Import._ import Project.Initialize -trait Marker +object Marker extends AutoPlugin { - final lazy val Mark = TaskKey[Unit]("mark") - final def mark: Initialize[Task[Unit]] = mark(baseDirectory) - final def mark(project: Reference): Initialize[Task[Unit]] = mark(baseDirectory in project) - final def mark(baseKey: SettingKey[File]): Initialize[Task[Unit]] = baseKey map { base => - val toMark = base / "ran" - if(toMark.exists) - error("Already ran (" + toMark + " exists)") - else - IO touch toMark - } + override def trigger = allRequirements + override def requires = sbt.plugins.JvmPlugin + object autoImport { + final lazy val Mark = TaskKey[Unit]("mark") + final def mark: Initialize[Task[Unit]] = mark(baseDirectory) + final def mark(project: Reference): Initialize[Task[Unit]] = mark(baseDirectory in project) + final def mark(baseKey: SettingKey[File]): Initialize[Task[Unit]] = baseKey map { base => + val toMark = base / "ran" + if(toMark.exists) + error("Already ran (" + toMark + " exists)") + else + IO touch toMark + } + } } diff --git a/sbt/src/sbt-test/actions/aggregate/project/TestProject.scala b/sbt/src/sbt-test/actions/aggregate/project/TestProject.scala deleted file mode 100644 index fd7076bb3..000000000 --- a/sbt/src/sbt-test/actions/aggregate/project/TestProject.scala +++ /dev/null @@ -1,10 +0,0 @@ -import sbt._ -import Import._ - -object SingleBuild extends Build with Marker -{ - override def projects = if(file("multi").exists) Seq(root, sub, sub2) else Seq(root) - lazy val root = Project("root", file("."), aggregate = if(file("aggregate").exists) Seq(sub) else Nil ) - lazy val sub = Project("sub", file("sub"), aggregate = Seq(sub2)) - lazy val sub2 = Project("sub2", file("sub") / "sub") -} diff --git a/sbt/src/sbt-test/actions/aggregate/test b/sbt/src/sbt-test/actions/aggregate/test index af3e2a5d8..054847bc4 100644 --- a/sbt/src/sbt-test/actions/aggregate/test +++ b/sbt/src/sbt-test/actions/aggregate/test @@ -22,6 +22,7 @@ $ delete ran # switch to multi-project, no aggregation yet. 'reload' will drop session settings $ touch multi +$ copy-file changes/build.sbt build.sbt $ mkdir sub sub/sub > reload From f0ed145058329095ee4dd9c44b840146f6035dfc Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:06:48 -0400 Subject: [PATCH 30/70] Port actions/depends-on --- sbt/src/sbt-test/actions/depends-on/build.sbt | 25 ++++++++++++++++ .../actions/depends-on/project/B.scala | 29 ------------------- 2 files changed, 25 insertions(+), 29 deletions(-) create mode 100644 sbt/src/sbt-test/actions/depends-on/build.sbt delete mode 100644 sbt/src/sbt-test/actions/depends-on/project/B.scala diff --git a/sbt/src/sbt-test/actions/depends-on/build.sbt b/sbt/src/sbt-test/actions/depends-on/build.sbt new file mode 100644 index 000000000..2a2dfbf7f --- /dev/null +++ b/sbt/src/sbt-test/actions/depends-on/build.sbt @@ -0,0 +1,25 @@ +// tests that errors are properly propagated for dependsOn, map, and flatMap + +lazy val root = (project in file(".")). + settings( + a <<= baseDirectory map (b => if( (b / "succeed").exists) () else sys.error("fail")), + b <<= a.task(at => nop dependsOn(at) ), + c <<= a map { _ => () }, + d <<= a flatMap { _ => task { () } } + ) +lazy val a = TaskKey[Unit]("a") +lazy val b = TaskKey[Unit]("b") +lazy val c = TaskKey[Unit]("c") +lazy val d = TaskKey[Unit]("d") + +lazy val input = (project in file("input")). + settings( + f <<= inputTask { _ map { args => if(args(0) == "succeed") () else sys.error("fail") } }, + j := sys.error("j"), + g <<= f dependsOn(j), + h <<= f map { _ => IO.touch(file("h")) } + ) +lazy val f = InputKey[Unit]("f") +lazy val g = InputKey[Unit]("g") +lazy val h = InputKey[Unit]("h") +lazy val j = TaskKey[Unit]("j") diff --git a/sbt/src/sbt-test/actions/depends-on/project/B.scala b/sbt/src/sbt-test/actions/depends-on/project/B.scala deleted file mode 100644 index 76120f6aa..000000000 --- a/sbt/src/sbt-test/actions/depends-on/project/B.scala +++ /dev/null @@ -1,29 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -// tests that errors are properly propagated for dependsOn, map, and flatMap -object B extends Build -{ - lazy val root = Project("root", file(".")) settings( - a <<= baseDirectory map (b => if( (b / "succeed").exists) () else sys.error("fail")), - b <<= a.task(at => nop dependsOn(at) ), - c <<= a map { _ => () }, - d <<= a flatMap { _ => task { () } } - ) - lazy val a = TaskKey[Unit]("a") - lazy val b = TaskKey[Unit]("b") - lazy val c = TaskKey[Unit]("c") - lazy val d = TaskKey[Unit]("d") - - lazy val input = Project("input", file("input")) settings( - f <<= inputTask { _ map { args => if(args(0) == "succeed") () else sys.error("fail") } }, - j := sys.error("j"), - g <<= f dependsOn(j), - h <<= f map { _ => IO.touch(file("h")) } - ) - lazy val f = InputKey[Unit]("f") - lazy val g = InputKey[Unit]("g") - lazy val h = InputKey[Unit]("h") - lazy val j = TaskKey[Unit]("j") -} \ No newline at end of file From c1246d6fc30c8a71f0f20788af85f99b7b3b384c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:12:38 -0400 Subject: [PATCH 31/70] Port actions/reload --- sbt/src/sbt-test/actions/reload/build.sbt | 10 ++++++++++ .../sbt-test/actions/reload/changes/Changed.scala | 8 -------- sbt/src/sbt-test/actions/reload/changes/changed.sbt | 4 ++++ sbt/src/sbt-test/actions/reload/external/build.sbt | 4 ++++ .../actions/reload/external/project/Ext.scala | 9 --------- .../actions/reload/project/TestProject.scala | 12 ------------ sbt/src/sbt-test/actions/reload/test | 2 +- 7 files changed, 19 insertions(+), 30 deletions(-) create mode 100755 sbt/src/sbt-test/actions/reload/build.sbt delete mode 100755 sbt/src/sbt-test/actions/reload/changes/Changed.scala create mode 100755 sbt/src/sbt-test/actions/reload/changes/changed.sbt create mode 100755 sbt/src/sbt-test/actions/reload/external/build.sbt delete mode 100755 sbt/src/sbt-test/actions/reload/external/project/Ext.scala delete mode 100755 sbt/src/sbt-test/actions/reload/project/TestProject.scala diff --git a/sbt/src/sbt-test/actions/reload/build.sbt b/sbt/src/sbt-test/actions/reload/build.sbt new file mode 100755 index 000000000..955ea4615 --- /dev/null +++ b/sbt/src/sbt-test/actions/reload/build.sbt @@ -0,0 +1,10 @@ +lazy val root = (project in file(".")). + aggregate(sub). + settings( + TaskKey[Unit]("f") := sys.error("f") + ) + +lazy val sub = (project in file("sub")). + settings( + TaskKey[Unit]("f") := {} + ) diff --git a/sbt/src/sbt-test/actions/reload/changes/Changed.scala b/sbt/src/sbt-test/actions/reload/changes/Changed.scala deleted file mode 100755 index e3bdec504..000000000 --- a/sbt/src/sbt-test/actions/reload/changes/Changed.scala +++ /dev/null @@ -1,8 +0,0 @@ -import sbt._ -import Import._ - -object TestBuild extends Build -{ - lazy val root1 = Project("root1", file(".")) dependsOn(root2) - lazy val root2 = ProjectRef(uri("external"), "root2") -} diff --git a/sbt/src/sbt-test/actions/reload/changes/changed.sbt b/sbt/src/sbt-test/actions/reload/changes/changed.sbt new file mode 100755 index 000000000..fbffa92c3 --- /dev/null +++ b/sbt/src/sbt-test/actions/reload/changes/changed.sbt @@ -0,0 +1,4 @@ +lazy val root1 = (project in file(".")). + aggregate(root2) + +lazy val root2 = ProjectRef(uri("external"), "root2") diff --git a/sbt/src/sbt-test/actions/reload/external/build.sbt b/sbt/src/sbt-test/actions/reload/external/build.sbt new file mode 100755 index 000000000..b2c185fb2 --- /dev/null +++ b/sbt/src/sbt-test/actions/reload/external/build.sbt @@ -0,0 +1,4 @@ +lazy val root2 = (project in file("root2")). + settings( + TaskKey[Unit]("g") := {} + ) diff --git a/sbt/src/sbt-test/actions/reload/external/project/Ext.scala b/sbt/src/sbt-test/actions/reload/external/project/Ext.scala deleted file mode 100755 index b8a512f7e..000000000 --- a/sbt/src/sbt-test/actions/reload/external/project/Ext.scala +++ /dev/null @@ -1,9 +0,0 @@ -import sbt._ -import Import._ - -object Ext extends Build -{ - lazy val root2 = Project("root2", file("root2")) settings( - TaskKey[Unit]("g") := {} - ) -} diff --git a/sbt/src/sbt-test/actions/reload/project/TestProject.scala b/sbt/src/sbt-test/actions/reload/project/TestProject.scala deleted file mode 100755 index ccfe73cae..000000000 --- a/sbt/src/sbt-test/actions/reload/project/TestProject.scala +++ /dev/null @@ -1,12 +0,0 @@ -import sbt._ -import Import._ - -object TestBuild extends Build -{ - lazy val root = Project("root", file("."), aggregate = Seq(sub)) settings( - TaskKey[Unit]("f") := sys.error("f") - ) - lazy val sub = Project("sub", file("sub")) settings( - TaskKey[Unit]("f") := {} - ) -} diff --git a/sbt/src/sbt-test/actions/reload/test b/sbt/src/sbt-test/actions/reload/test index 0e8bb10b2..04351a33e 100755 --- a/sbt/src/sbt-test/actions/reload/test +++ b/sbt/src/sbt-test/actions/reload/test @@ -6,7 +6,7 @@ > f > reload > f -$ copy-file changes/Changed.scala project/TestProject.scala +$ copy-file changes/changed.sbt build.sbt > reload -> f > project {external}root2 From 48e24688c1476a529152db158a9e96fcb76adbaf Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:17:56 -0400 Subject: [PATCH 32/70] Port actions/run-task --- sbt/src/sbt-test/actions/run-task/build.sbt | 13 +++++++++++++ .../sbt-test/actions/run-task/project/B.scala | 19 ------------------- 2 files changed, 13 insertions(+), 19 deletions(-) create mode 100644 sbt/src/sbt-test/actions/run-task/build.sbt delete mode 100644 sbt/src/sbt-test/actions/run-task/project/B.scala diff --git a/sbt/src/sbt-test/actions/run-task/build.sbt b/sbt/src/sbt-test/actions/run-task/build.sbt new file mode 100644 index 000000000..6d71b2bbb --- /dev/null +++ b/sbt/src/sbt-test/actions/run-task/build.sbt @@ -0,0 +1,13 @@ +lazy val root = (project in file(".")). + settings( + myRun, + fork in demo := true, + javaOptions in demo := "-Dsbt.check.forked=true" :: Nil, + myIn + ) + +lazy val demoIn = InputKey[Unit]("demo-in", "Demo run input task", demo) +lazy val demo = TaskKey[Unit]("demo", "Demo run task") + +def myRun = fullRunTask( demo, Compile, "A", "1", "1") +def myIn = fullRunInputTask( demoIn, Compile, "A", "1") diff --git a/sbt/src/sbt-test/actions/run-task/project/B.scala b/sbt/src/sbt-test/actions/run-task/project/B.scala deleted file mode 100644 index 5e42051ee..000000000 --- a/sbt/src/sbt-test/actions/run-task/project/B.scala +++ /dev/null @@ -1,19 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val root = Project("root", file(".")) settings( - myRun, - fork in demo := true, - javaOptions in demo := "-Dsbt.check.forked=true" :: Nil, - myIn - ) - - lazy val demoIn = InputKey[Unit]("demo-in", "Demo run input task", demo) - lazy val demo = TaskKey[Unit]("demo", "Demo run task") - - def myRun = fullRunTask( demo, Compile, "A", "1", "1") - def myIn = fullRunInputTask( demoIn, Compile, "A", "1") -} From b2b5048282440b19705a03643eb85945c7ac54a7 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:18:05 -0400 Subject: [PATCH 33/70] Port dependency-management/exclude-transitive --- .../exclude-transitive/build.sbt | 24 +++++++++++++++ .../project/TestProject.scala | 30 ------------------- 2 files changed, 24 insertions(+), 30 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt b/sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt new file mode 100644 index 000000000..fc2b5379b --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt @@ -0,0 +1,24 @@ +lazy val root = (project in file(".")). + settings( + ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), + libraryDependencies <+= baseDirectory(transitive("javax.mail" % "mail" % "1.4.1")), + TaskKey[Unit]("check-transitive") <<= check(true), + TaskKey[Unit]("check-intransitive") <<= check(false) + ) + +def transitive(dep: ModuleID)(base: File) = + if((base / "transitive").exists) dep else dep.intransitive() + +def check(transitive: Boolean) = + (dependencyClasspath in Compile) map { downloaded => + val jars = downloaded.size + if(transitive) { + if (jars <= 2) + sys.error(s"Transitive dependencies not downloaded, found:\n * ${downloaded.mkString("\n * ")}") + else () + } else { + if (jars > 2) + sys.error(s"Transitive dependencies not downloaded, found:\n * ${downloaded.mkString("\n * ")}") + else () + } + } diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala b/sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala deleted file mode 100644 index 9abda8694..000000000 --- a/sbt/src/sbt-test/dependency-management/exclude-transitive/project/TestProject.scala +++ /dev/null @@ -1,30 +0,0 @@ - import sbt._ - import Import._ - import Keys._ - -object TestProject extends Build -{ - lazy val root = Project("root", file(".")) settings( - ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), - libraryDependencies <+= baseDirectory(transitive("javax.mail" % "mail" % "1.4.1")), - TaskKey[Unit]("check-transitive") <<= check(true), - TaskKey[Unit]("check-intransitive") <<= check(false) - ) - - def transitive(dep: ModuleID)(base: File) = - if((base / "transitive").exists) dep else dep.intransitive() - - private def check(transitive: Boolean) = - (dependencyClasspath in Compile) map { downloaded => - val jars = downloaded.size - if(transitive) { - if (jars <= 2) - sys.error(s"Transitive dependencies not downloaded, found:\n * ${downloaded.mkString("\n * ")}") - else () - } else { - if (jars > 2) - sys.error(s"Transitive dependencies not downloaded, found:\n * ${downloaded.mkString("\n * ")}") - else () - } - } -} From 63b11243d386a213824b622a37d78be185c7decf Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:19:59 -0400 Subject: [PATCH 34/70] Port dependency-management/force --- .../dependency-management/force/build.sbt | 21 +++++++++++++++ .../force/project/TestProject.scala | 27 ------------------- 2 files changed, 21 insertions(+), 27 deletions(-) create mode 100755 sbt/src/sbt-test/dependency-management/force/build.sbt delete mode 100755 sbt/src/sbt-test/dependency-management/force/project/TestProject.scala diff --git a/sbt/src/sbt-test/dependency-management/force/build.sbt b/sbt/src/sbt-test/dependency-management/force/build.sbt new file mode 100755 index 000000000..3d49d87a9 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/force/build.sbt @@ -0,0 +1,21 @@ +lazy val root = (project in file(".")). + settings( + ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), + libraryDependencies <++= baseDirectory (libraryDeps), + TaskKey[Unit]("check-forced") <<= check("1.2.14"), + TaskKey[Unit]("check-depend") <<= check("1.2.13") + ) + +def libraryDeps(base: File) = { + val slf4j = Seq("org.slf4j" % "slf4j-log4j12" % "1.1.0") // Uses log4j 1.2.13 + if ((base / "force").exists) slf4j :+ ("log4j" % "log4j" % "1.2.14" force()) else slf4j +} + +def check(ver: String) = + (dependencyClasspath in Compile) map { jars => + val log4j = jars map (_.data) collect { + case f if f.getName contains "log4j-" => f.getName + } + if (log4j.size != 1 || !log4j.head.contains(ver)) + error("Did not download the correct jar.") + } diff --git a/sbt/src/sbt-test/dependency-management/force/project/TestProject.scala b/sbt/src/sbt-test/dependency-management/force/project/TestProject.scala deleted file mode 100755 index e914f17af..000000000 --- a/sbt/src/sbt-test/dependency-management/force/project/TestProject.scala +++ /dev/null @@ -1,27 +0,0 @@ -import sbt._ -import Import._ -import Keys._ - -object TestProject extends Build -{ - lazy val root = Project("root", file(".")) settings( - ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), - libraryDependencies <++= baseDirectory (libraryDeps), - TaskKey[Unit]("check-forced") <<= check("1.2.14"), - TaskKey[Unit]("check-depend") <<= check("1.2.13") - ) - - def libraryDeps(base: File) = { - val slf4j = Seq("org.slf4j" % "slf4j-log4j12" % "1.1.0") // Uses log4j 1.2.13 - if ((base / "force").exists) slf4j :+ ("log4j" % "log4j" % "1.2.14" force()) else slf4j - } - - def check(ver: String) = - (dependencyClasspath in Compile) map { jars => - val log4j = jars map (_.data) collect { - case f if f.getName contains "log4j-" => f.getName - } - if (log4j.size != 1 || !log4j.head.contains(ver)) - error("Did not download the correct jar.") - } -} From 7520bd99a50e9b81aecead2e79e067e1fbaac54e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:22:55 -0400 Subject: [PATCH 35/70] Port dependency-management/info --- .../dependency-management/info/build.sbt | 40 +++++++++++++++++ .../info/project/InfoTest.scala | 43 ------------------- 2 files changed, 40 insertions(+), 43 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/info/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala diff --git a/sbt/src/sbt-test/dependency-management/info/build.sbt b/sbt/src/sbt-test/dependency-management/info/build.sbt new file mode 100644 index 000000000..b1387ed93 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/info/build.sbt @@ -0,0 +1,40 @@ +import scala.xml._ + +lazy val root = (project in file(".")). + settings( + ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), + ivyXML <<= (customInfo, organization, moduleName, version) apply inlineXML, + scalaVersion := "2.9.1", + projectID ~= (_ cross false), + customInfo <<= baseDirectory{_ / "info" exists }, + TaskKey[Unit]("check-download") <<= checkDownload, + delivered <<= deliverLocal map XML.loadFile, + TaskKey[Unit]("check-info") <<= checkInfo + ) + +lazy val delivered = TaskKey[NodeSeq]("delivered") +lazy val customInfo = SettingKey[Boolean]("custom-info") + +def inlineXML(addInfo: Boolean, organization: String, moduleID: String, version: String): NodeSeq = + if(addInfo) + ( + + + ScalaQuery is a type-safe database query API for Scala. + + + ) + else + + +def checkDownload = (dependencyClasspath in Compile) map { cp => if(cp.isEmpty) sys.error("Dependency not downloaded"); () } +def checkInfo = (customInfo, delivered) map { (addInfo, d) => + if((d \ "info").isEmpty) + sys.error("No info tag generated") + else if(addInfo) { + if( !deliveredWithCustom(d) ) sys.error("Expected 'license' and 'description' tags in info tag, got: \n" + (d \ "info")) else () + } else + if( deliveredWithCustom(d) ) sys.error("Expected empty 'info' tag, got: \n" + (d \ "info")) else () +} +def deliveredWithCustom(d: NodeSeq) = (d \ "info" \ "license").nonEmpty && (d \ "info" \ "description").nonEmpty + diff --git a/sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala b/sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala deleted file mode 100644 index 504dc23b0..000000000 --- a/sbt/src/sbt-test/dependency-management/info/project/InfoTest.scala +++ /dev/null @@ -1,43 +0,0 @@ - import sbt._ - import Import._ - import Keys._ - import scala.xml._ - -object InfoTest extends Build -{ - lazy val root = Project("root", file(".")) settings( - ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), - ivyXML <<= (customInfo, organization, moduleName, version) apply inlineXML, - scalaVersion := "2.9.1", - projectID ~= (_ cross false), - customInfo <<= baseDirectory{_ / "info" exists }, - TaskKey[Unit]("check-download") <<= checkDownload, - delivered <<= deliverLocal map XML.loadFile, - TaskKey[Unit]("check-info") <<= checkInfo - ) - lazy val delivered = TaskKey[NodeSeq]("delivered") - lazy val customInfo = SettingKey[Boolean]("custom-info") - - def inlineXML(addInfo: Boolean, organization: String, moduleID: String, version: String): NodeSeq = - if(addInfo) - ( - - - ScalaQuery is a type-safe database query API for Scala. - - - ) - else - - - def checkDownload = (dependencyClasspath in Compile) map { cp => if(cp.isEmpty) sys.error("Dependency not downloaded"); () } - def checkInfo = (customInfo, delivered) map { (addInfo, d) => - if((d \ "info").isEmpty) - sys.error("No info tag generated") - else if(addInfo) { - if( !deliveredWithCustom(d) ) sys.error("Expected 'license' and 'description' tags in info tag, got: \n" + (d \ "info")) else () - } else - if( deliveredWithCustom(d) ) sys.error("Expected empty 'info' tag, got: \n" + (d \ "info")) else () - } - def deliveredWithCustom(d: NodeSeq) = (d \ "info" \ "license").nonEmpty && (d \ "info" \ "description").nonEmpty -} From e244cd695c851e8a2e5d59c141d49af714ed8ef4 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:23:13 -0400 Subject: [PATCH 36/70] Port dependency-management/ivy-settings-c --- .../ivy-settings-c/build.sbt | 32 ++++++++++++++++++ .../ivy-settings-c/project/P.scala | 33 ------------------- 2 files changed, 32 insertions(+), 33 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/ivy-settings-c/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/ivy-settings-c/project/P.scala diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-c/build.sbt b/sbt/src/sbt-test/dependency-management/ivy-settings-c/build.sbt new file mode 100644 index 000000000..074279b36 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ivy-settings-c/build.sbt @@ -0,0 +1,32 @@ +lazy val commonSettings = Seq( + autoScalaLibrary := false, + ivyScala := None, + unmanagedJars in Compile <++= scalaInstance map (_.allJars.toSeq), + publishArtifact in packageSrc := false, + publishArtifact in packageDoc := false, + publishMavenStyle := false +) + +lazy val dep = project. + settings( + commonSettings, + organization := "org.example", + version := "1.0", + publishTo <<= baseDirectory in ThisBuild apply { base => + Some(Resolver.file("file", base / "repo")(Resolver.ivyStylePatterns)) + } + ) + +lazy val use = project. + settings( + commonSettings, + libraryDependencies += "org.example" %% "dep" % "1.0", + externalIvySettings(), + publishTo <<= baseDirectory { base => + Some(Resolver.file("file", base / "repo")(Resolver.ivyStylePatterns)) + }, + TaskKey[Unit]("check") <<= baseDirectory map {base => + val inCache = ( (base / "target" / "use-cache") ** "*.jar").get + assert(inCache.isEmpty, "Cache contained jars: " + inCache) + } + ) diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-c/project/P.scala b/sbt/src/sbt-test/dependency-management/ivy-settings-c/project/P.scala deleted file mode 100644 index 9f2ba487b..000000000 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-c/project/P.scala +++ /dev/null @@ -1,33 +0,0 @@ -import sbt._ -import Import._ -import Keys._ - -object B extends Build -{ - lazy val dep = Project("dep", file("dep")) settings( baseSettings : _*) settings( - organization := "org.example", - version := "1.0", - publishTo <<= baseDirectory in ThisBuild apply { base => - Some(Resolver.file("file", base / "repo")(Resolver.ivyStylePatterns)) - } - ) - lazy val use = Project("use", file("use")) settings(baseSettings : _*) settings( - libraryDependencies += "org.example" %% "dep" % "1.0", - externalIvySettings(), - publishTo <<= baseDirectory { base => - Some(Resolver.file("file", base / "repo")(Resolver.ivyStylePatterns)) - }, - TaskKey[Unit]("check") <<= baseDirectory map {base => - val inCache = ( (base / "target" / "use-cache") ** "*.jar").get - assert(inCache.isEmpty, "Cache contained jars: " + inCache) - } - ) - lazy val baseSettings = Seq( - autoScalaLibrary := false, - ivyScala := None, - unmanagedJars in Compile <++= scalaInstance map (_.allJars.toSeq), - publishArtifact in packageSrc := false, - publishArtifact in packageDoc := false, - publishMavenStyle := false - ) -} From 7db47d073bf3650ce330841d35022f162741abe9 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:26:37 -0400 Subject: [PATCH 37/70] Port dependency-management/ivy-settings-multi-a --- .../ivy-settings-multi-a/build.sbt | 19 +++++++++++++++++++ .../ivy-settings-multi-a/project/P.scala | 19 ------------------- 2 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/project/P.scala diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/build.sbt b/sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/build.sbt new file mode 100644 index 000000000..28330f49c --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/build.sbt @@ -0,0 +1,19 @@ +lazy val commonSettings = Seq( + autoScalaLibrary := false, + unmanagedJars in Compile <++= scalaInstance map (_.allJars.toSeq) +) + +lazy val dep = project. + settings( + commonSettings, + organization := "org.example", + version := "1.0" + ) + +lazy val use = project. + dependsOn(dep). + settings( + commonSettings, + libraryDependencies += "junit" % "junit" % "4.5", + externalIvySettings() + ) diff --git a/sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/project/P.scala b/sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/project/P.scala deleted file mode 100644 index c4dfc7bec..000000000 --- a/sbt/src/sbt-test/dependency-management/ivy-settings-multi-a/project/P.scala +++ /dev/null @@ -1,19 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val dep = Project("dep", file("dep")) settings( baseSettings : _*) settings( - organization := "org.example", - version := "1.0" - ) - lazy val use = Project("use", file("use")) dependsOn(dep) settings(baseSettings : _*) settings( - libraryDependencies += "junit" % "junit" % "4.5", - externalIvySettings() - ) - lazy val baseSettings = Seq( - autoScalaLibrary := false, - unmanagedJars in Compile <++= scalaInstance map (_.allJars.toSeq) - ) -} From 826787d7ad8885ad51612c66cc65ac48a8e9004c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:30:14 -0400 Subject: [PATCH 38/70] Port dependency-management/make-pom --- .../dependency-management/make-pom/build.sbt | 72 +++++++++++++++++ .../make-pom/project/MakePomTest.scala | 77 ------------------- 2 files changed, 72 insertions(+), 77 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/make-pom/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala diff --git a/sbt/src/sbt-test/dependency-management/make-pom/build.sbt b/sbt/src/sbt-test/dependency-management/make-pom/build.sbt new file mode 100644 index 000000000..48b9c916c --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/make-pom/build.sbt @@ -0,0 +1,72 @@ +import scala.xml._ + +lazy val root = (project in file(".")). + settings( + readPom <<= makePom map XML.loadFile, + TaskKey[Unit]("check-pom") <<= checkPom, + TaskKey[Unit]("check-extra") <<= checkExtra, + TaskKey[Unit]("check-version-plus-mapping") <<= checkVersionPlusMapping, + resolvers += Resolver.sonatypeRepo("snapshots"), + makePomConfiguration ~= { _.copy(extra = ) }, + libraryDependencies += "com.google.code.findbugs" % "jsr305" % "1.3.+" + ) + +val readPom = TaskKey[Elem]("read-pom") + +val fakeName = "fake" +val fakeURL = "http://example.org" +val fakeRepo = fakeName at fakeURL +def extraTagName = "extra-tag" + +def checkProject(pom: Elem) = if(pom.label != "project") sys.error("Top level element was not 'project': " + pom.label) + +def withRepositories[T](pomXML: Elem)(f: NodeSeq => T) = +{ + val repositoriesElement = pomXML \ "repositories" + if(repositoriesElement.size == 1) f(repositoriesElement) else sys.error("'repositories' element not found in generated pom") +} + +lazy val checkExtra = readPom map { pomXML => + checkProject(pomXML) + val extra = pomXML \ extraTagName + if(extra.isEmpty) sys.error("'" + extraTagName + "' not found in generated pom.xml.") else () +} + +lazy val checkVersionPlusMapping = (readPom) map { (pomXml) => + var found = false + for { + dep <- pomXml \ "dependencies" \ "dependency" + if (dep \ "artifactId").text == "jsr305" + // TODO - Ignore space here. + if (dep \ "version").text != "[1.3,1.4)" + } sys.error(s"Found dependency with invalid maven version: $dep") + () +} + +lazy val checkPom = (readPom, fullResolvers) map { (pomXML, ivyRepositories) => + checkProject(pomXML) + withRepositories(pomXML) { repositoriesElement => + val repositories = repositoriesElement \ "repository" + val writtenRepositories = repositories.map(read).distinct + val mavenStyleRepositories = ivyRepositories.collect { + case x: MavenRepository if (x.name != "public") && (x.name != "jcenter") => normalize(x) + } distinct; + + lazy val explain = (("Written:" +: writtenRepositories) ++ ("Declared:" +: mavenStyleRepositories)).mkString("\n\t") + + if( writtenRepositories != mavenStyleRepositories ) + sys.error("Written repositories did not match declared repositories.\n\t" + explain) + else + () + } +} + +def read(repository: xml.Node): MavenRepository = + (repository \ "name").text at normalize((repository \ "url").text) + +def normalize(url: String): String = + { + val base = uri( url ).normalize.toString + if(base.endsWith("/")) base else (base + "/") + } +def normalize(repo: MavenRepository): MavenRepository = new MavenRepository(repo.name, normalize(repo.root)) diff --git a/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala b/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala deleted file mode 100644 index 3309a4b16..000000000 --- a/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala +++ /dev/null @@ -1,77 +0,0 @@ - import sbt.{Node =>_,_} - import Import._ - import Keys._ - import scala.xml._ - -object MakePomTest extends Build -{ - lazy val root = Project("root", file(".")) settings( - readPom <<= makePom map XML.loadFile, - TaskKey[Unit]("check-pom") <<= checkPom, - TaskKey[Unit]("check-extra") <<= checkExtra, - TaskKey[Unit]("check-version-plus-mapping") <<= checkVersionPlusMapping, - resolvers += Resolver.sonatypeRepo("snapshots"), - makePomConfiguration ~= { _.copy(extra = ) }, - libraryDependencies += "com.google.code.findbugs" % "jsr305" % "1.3.+" - ) - - val readPom = TaskKey[Elem]("read-pom") - - val fakeName = "fake" - val fakeURL = "http://example.org" - val fakeRepo = fakeName at fakeURL - def extraTagName = "extra-tag" - - def checkProject(pom: Elem) = if(pom.label != "project") sys.error("Top level element was not 'project': " + pom.label) - - def withRepositories[T](pomXML: Elem)(f: NodeSeq => T) = - { - val repositoriesElement = pomXML \ "repositories" - if(repositoriesElement.size == 1) f(repositoriesElement) else sys.error("'repositories' element not found in generated pom") - } - - lazy val checkExtra = readPom map { pomXML => - checkProject(pomXML) - val extra = pomXML \ extraTagName - if(extra.isEmpty) sys.error("'" + extraTagName + "' not found in generated pom.xml.") else () - } - - lazy val checkVersionPlusMapping = (readPom) map { (pomXml) => - var found = false - for { - dep <- pomXml \ "dependencies" \ "dependency" - if (dep \ "artifactId").text == "jsr305" - // TODO - Ignore space here. - if (dep \ "version").text != "[1.3,1.4)" - } sys.error(s"Found dependency with invalid maven version: $dep") - () - } - - lazy val checkPom = (readPom, fullResolvers) map { (pomXML, ivyRepositories) => - checkProject(pomXML) - withRepositories(pomXML) { repositoriesElement => - val repositories = repositoriesElement \ "repository" - val writtenRepositories = repositories.map(read).distinct - val mavenStyleRepositories = ivyRepositories.collect { - case x: MavenRepository if (x.name != "public") && (x.name != "jcenter") => normalize(x) - } distinct; - - lazy val explain = (("Written:" +: writtenRepositories) ++ ("Declared:" +: mavenStyleRepositories)).mkString("\n\t") - - if( writtenRepositories != mavenStyleRepositories ) - sys.error("Written repositories did not match declared repositories.\n\t" + explain) - else - () - } - } - - def read(repository: Node): MavenRepository = - (repository \ "name").text at normalize((repository \ "url").text) - - def normalize(url: String): String = - { - val base = uri( url ).normalize.toString - if(base.endsWith("/")) base else (base + "/") - } - def normalize(repo: MavenRepository): MavenRepository = new MavenRepository(repo.name, normalize(repo.root)) -} From 4ada116c3de5a56ff52a0400d5a8e8ebce18208a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:35:51 -0400 Subject: [PATCH 39/70] Port dependency-management/parent-publish --- .../parent-publish/build.sbt | 23 +++++++++++++++++++ .../parent-publish/project/Parent.scala | 10 -------- 2 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/parent-publish/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/parent-publish/project/Parent.scala diff --git a/sbt/src/sbt-test/dependency-management/parent-publish/build.sbt b/sbt/src/sbt-test/dependency-management/parent-publish/build.sbt new file mode 100644 index 000000000..605b3b42f --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/parent-publish/build.sbt @@ -0,0 +1,23 @@ +lazy val parent = (project in file(".")). + aggregate(core, reporters). + settings( + name := "Flowmodel" + ) + +lazy val core = (project in file("core")). + settings( + name := "Flowmodel-core" + ) + +lazy val reporters = (project in file("reporters")). + aggregate(jfreechart). + dependsOn(jfreechart). + settings( + name := "Extra-reporters" + ) + +lazy val jfreechart = (project in file("jfreechart")). + dependsOn(core). + settings( + name := "JFreeChart-reporters" + ) diff --git a/sbt/src/sbt-test/dependency-management/parent-publish/project/Parent.scala b/sbt/src/sbt-test/dependency-management/parent-publish/project/Parent.scala deleted file mode 100644 index cde8b19e8..000000000 --- a/sbt/src/sbt-test/dependency-management/parent-publish/project/Parent.scala +++ /dev/null @@ -1,10 +0,0 @@ - import sbt._ - import Import._ - -object ParentTest extends Build -{ - lazy val parent: Project = Project("Flowmodel", file(".")) aggregate(core, reporters) - lazy val core: Project = Project("Flowmodel-core", file("core"), delegates = parent :: Nil) - lazy val reporters: Project = Project("Extra-reporters", file("reporters"), delegates = parent :: Nil) aggregate(jfreechart) dependsOn(jfreechart) - lazy val jfreechart: Project = Project("JFreeChart-reporters", file("jfreechart")/*, delegates = reporters :: Nil*/) dependsOn(core) -} From 23eb8c4ee267622f4d60692ae2fe0b226757e0f5 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:37:45 -0400 Subject: [PATCH 40/70] Port dependency-management/pom-advanced --- .../pom-advanced/build.sbt | 33 ++++++++++++++++ .../pom-advanced/project/PomRepoTest.scala | 38 ------------------- 2 files changed, 33 insertions(+), 38 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/pom-advanced/project/PomRepoTest.scala diff --git a/sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt b/sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt new file mode 100644 index 000000000..96b2d46f9 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt @@ -0,0 +1,33 @@ +import complete.DefaultParsers._ + +lazy val root = (project in file(".")). + settings( + resolvers ++= Seq(local, Resolver.sonatypeRepo("releases"), Resolver.sonatypeRepo("snapshots")), + InputKey[Unit]("check-pom") <<= InputTask(_ => spaceDelimited("")) { result => (makePom, result, streams) map checkPomRepositories }, + makePomConfiguration <<= (makePomConfiguration, baseDirectory) { (conf, base) => + conf.copy(filterRepositories = pomIncludeRepository(base, conf.filterRepositories) ) + }, + ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy-home"))) + ) + +val local = "local-maven-repo" at "file://" + (Path.userHome / ".m2" /"repository").absolutePath + +def pomIncludeRepository(base: File, prev: MavenRepository => Boolean) = (r: MavenRepository) => + if(base / "repo.none" exists) false else if(base / "repo.all" exists) true else prev(r) + +def addSlash(s: String): String = + s match { + case s if s endsWith "/" => s + case _ => s + "/" + } + +def checkPomRepositories(file: File, args: Seq[String], s: TaskStreams) +{ + val repositories = scala.xml.XML.loadFile(file) \\ "repository" + val extracted = repositories.map { repo => MavenRepository(repo \ "name" text, addSlash(repo \ "url" text)) } + val expected = args.map(GlobFilter.apply) + s.log.info("Extracted: " + extracted.mkString("\n\t", "\n\t", "\n")) + s.log.info("Expected: " + args.mkString("\n\t", "\n\t", "\n")) + extracted.find { e => !expected.exists(_.accept(e.root)) } map { "Repository should not be exported: " + _ } orElse + (expected.find { e => !extracted.exists(r => e.accept(r.root)) } map { "Repository should be exported: " + _ } ) foreach error +} diff --git a/sbt/src/sbt-test/dependency-management/pom-advanced/project/PomRepoTest.scala b/sbt/src/sbt-test/dependency-management/pom-advanced/project/PomRepoTest.scala deleted file mode 100644 index f2d303be4..000000000 --- a/sbt/src/sbt-test/dependency-management/pom-advanced/project/PomRepoTest.scala +++ /dev/null @@ -1,38 +0,0 @@ - import sbt._ - import Import._ - import Keys._ - import complete.DefaultParsers._ - -object PomRepoTest extends Build -{ - lazy val root = Project("root", file(".")) settings( - resolvers ++= Seq(local, Resolver.sonatypeRepo("releases"), Resolver.sonatypeRepo("snapshots")), - InputKey[Unit]("check-pom") <<= InputTask(_ => spaceDelimited("")) { result => (makePom, result, streams) map checkPomRepositories }, - makePomConfiguration <<= (makePomConfiguration, baseDirectory) { (conf, base) => - conf.copy(filterRepositories = pomIncludeRepository(base, conf.filterRepositories) ) - }, - ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy-home"))) - ) - - val local = "local-maven-repo" at "file://" + (Path.userHome / ".m2" /"repository").absolutePath - - def pomIncludeRepository(base: File, prev: MavenRepository => Boolean) = (r: MavenRepository) => - if(base / "repo.none" exists) false else if(base / "repo.all" exists) true else prev(r) - - def addSlash(s: String): String = - s match { - case s if s endsWith "/" => s - case _ => s + "/" - } - - def checkPomRepositories(file: File, args: Seq[String], s: TaskStreams) - { - val repositories = scala.xml.XML.loadFile(file) \\ "repository" - val extracted = repositories.map { repo => MavenRepository(repo \ "name" text, addSlash(repo \ "url" text)) } - val expected = args.map(GlobFilter.apply) - s.log.info("Extracted: " + extracted.mkString("\n\t", "\n\t", "\n")) - s.log.info("Expected: " + args.mkString("\n\t", "\n\t", "\n")) - extracted.find { e => !expected.exists(_.accept(e.root)) } map { "Repository should not be exported: " + _ } orElse - (expected.find { e => !extracted.exists(r => e.accept(r.root)) } map { "Repository should be exported: " + _ } ) foreach error - } -} From 1e2b2ec594650c25d79402ba3590bcaa9d00bda7 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:51:11 -0400 Subject: [PATCH 41/70] Port dependency-management/pom-packaging --- .../pom-packaging/build.sbt | 35 +++++++++++++++++++ .../pom-packaging/project/PomTest.scala | 25 ------------- .../dependency-management/pom-packaging/test | 2 +- 3 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/pom-packaging/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/pom-packaging/project/PomTest.scala diff --git a/sbt/src/sbt-test/dependency-management/pom-packaging/build.sbt b/sbt/src/sbt-test/dependency-management/pom-packaging/build.sbt new file mode 100644 index 000000000..547d5bc8a --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-packaging/build.sbt @@ -0,0 +1,35 @@ +import sbt.Def.Initialize + +lazy val checkPom = taskKey[Unit]("") + +lazy val root = (project in file(".")). + settings( + checkPom in ThisBuild := checkPomTask.value + ) + +lazy val subJar = (project in file("subJar")) + +lazy val subWar = (project in file("subWar")). + settings( + warArtifact + ) + +lazy val subParent = (project in file("subParent")). + settings( + publishArtifact in Compile := false + ) + +def art(p: ProjectReference) = makePom in p +def checkPomTask: Initialize[Task[Unit]] = + (art(subJar), art(subWar), art(subParent)) map { (jar, war, pom) => + checkPackaging(jar, "jar") + checkPackaging(war, "war") + checkPackaging(pom, "pom") + } + +def checkPackaging(pom: File, expected: String) = +{ + val packaging = (xml.XML.loadFile(pom) \\ "packaging").text + if(packaging != expected) sys.error("Incorrect packaging for '" + pom + "'. Expected '" + expected + "', but got '" + packaging + "'") +} +def warArtifact = artifact in (Compile, packageBin) ~= { _.copy(`type` = "war", extension = "war") } diff --git a/sbt/src/sbt-test/dependency-management/pom-packaging/project/PomTest.scala b/sbt/src/sbt-test/dependency-management/pom-packaging/project/PomTest.scala deleted file mode 100644 index 5eeb2e202..000000000 --- a/sbt/src/sbt-test/dependency-management/pom-packaging/project/PomTest.scala +++ /dev/null @@ -1,25 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object PomTest extends Build -{ - override def settings = super.settings :+ (TaskKey[Unit]("check-pom") <<= checkPom) - - lazy val subJar = Project("sub-jar", file("subJar")) - lazy val subWar = Project("sub-war", file("subWar")) settings( warArtifact) - lazy val subParent = Project("sub-parent", file("subParent")) settings( publishArtifact in Compile := false ) - - def art(p: ProjectReference) = makePom in p - def checkPom = (art(subJar), art(subWar), art(subParent)) map { (jar, war, pom) => - checkPackaging(jar, "jar") - checkPackaging(war, "war") - checkPackaging(pom, "pom") - } - def checkPackaging(pom: File, expected: String) = - { - val packaging = (xml.XML.loadFile(pom) \\ "packaging").text - if(packaging != expected) sys.error("Incorrect packaging for '" + pom + "'. Expected '" + expected + "', but got '" + packaging + "'") - } - def warArtifact = artifact in (Compile, packageBin) ~= { _.copy(`type` = "war", extension = "war") } -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/pom-packaging/test b/sbt/src/sbt-test/dependency-management/pom-packaging/test index c8edbfbcd..0e9f0f7b6 100644 --- a/sbt/src/sbt-test/dependency-management/pom-packaging/test +++ b/sbt/src/sbt-test/dependency-management/pom-packaging/test @@ -1 +1 @@ -> check-pom \ No newline at end of file +> checkPom \ No newline at end of file From 541604ac04242f4ac2a917b6ad02a7fe4139f290 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:53:33 -0400 Subject: [PATCH 42/70] Port dependency-management/pom-scope --- .../dependency-management/pom-scope/build.sbt | 42 ++++++++++++++++ .../pom-scope/project/PomTest.scala | 48 ------------------- 2 files changed, 42 insertions(+), 48 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/pom-scope/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala diff --git a/sbt/src/sbt-test/dependency-management/pom-scope/build.sbt b/sbt/src/sbt-test/dependency-management/pom-scope/build.sbt new file mode 100644 index 000000000..c562e6403 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/pom-scope/build.sbt @@ -0,0 +1,42 @@ +lazy val custom = config("custom") + +lazy val root = (project in file(".")). + configs(custom). + settings( + TaskKey[Unit]("check-pom") <<= checkPom, + libraryDependencies ++= Seq( + "a" % "a" % "1.0", + "b" % "b" % "1.0" % "runtime,optional", + "c" % "c" % "1.0" % "optional", + "d" % "d" % "1.0" % "test", + "e" % "e" % "1.0" % "custom", + "f" % "f" % "1.0" % "custom,optional,runtime", + "g" % "g" % "1.0" % "custom,runtime" classifier "foo", + "h" % "h" % "1.0" % "custom,optional,runtime" classifier "foo" + ) + ) + +def checkPom = makePom map { pom => + val expected = Seq( + ("a", None, false, None), + ("b", Some("runtime"), true, None), + ("c", None, true, None), + ("d", Some("test"), false, None), + ("e", None, false, None), + ("f", Some("runtime"), true, None), + ("g", Some("runtime"), false, Some("foo")), + ("h", Some("runtime"), true, Some("foo")) + ) + val loaded = xml.XML.loadFile(pom) + val deps = loaded \\ "dependency" + expected foreach { case (id, scope, opt, classifier) => + val dep = deps.find(d => (d \ "artifactId").text == id).getOrElse( sys.error("Dependency '" + id + "' not written to pom:\n" + loaded)) + val actualOpt = java.lang.Boolean.parseBoolean( (dep \\ "optional").text ) + assert(opt == actualOpt, "Invalid 'optional' section '" + (dep \\ "optional") + "' for " + id + ", expected optional=" + opt) + + val actualScope = (dep \\ "scope") match { case Seq() => None; case x => Some(x.text) } + val actualClassifier = (dep \\ "classifier") match { case Seq() => None; case x => Some(x.text) } + assert(actualScope == scope, "Invalid 'scope' section '" + (dep \\ "scope") + "' for " + id + ", expected scope=" + scope) + assert(actualClassifier == classifier, "Invalid 'classifier' section '" + (dep \\ "classifier") + "' for " + id + ", expected classifier=" + classifier) + } +} diff --git a/sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala b/sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala deleted file mode 100644 index 6f9b5b7f6..000000000 --- a/sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala +++ /dev/null @@ -1,48 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object PomTest extends Build -{ - lazy val custom = config("custom") - lazy val root = Project("root", file("root")) configs(custom) settings( - TaskKey[Unit]("check-pom") <<= checkPom, - libraryDependencies ++= Seq( - "a" % "a" % "1.0", - "b" % "b" % "1.0" % "runtime,optional", - "c" % "c" % "1.0" % "optional", - "d" % "d" % "1.0" % "test", - "e" % "e" % "1.0" % "custom", - "f" % "f" % "1.0" % "custom,optional,runtime", - "g" % "g" % "1.0" % "custom,runtime" classifier "foo", - "h" % "h" % "1.0" % "custom,optional,runtime" classifier "foo" - ) - ) - - - - def checkPom = makePom map { pom => - val expected = Seq( - ("a", None, false, None), - ("b", Some("runtime"), true, None), - ("c", None, true, None), - ("d", Some("test"), false, None), - ("e", None, false, None), - ("f", Some("runtime"), true, None), - ("g", Some("runtime"), false, Some("foo")), - ("h", Some("runtime"), true, Some("foo")) - ) - val loaded = xml.XML.loadFile(pom) - val deps = loaded \\ "dependency" - expected foreach { case (id, scope, opt, classifier) => - val dep = deps.find(d => (d \ "artifactId").text == id).getOrElse( sys.error("Dependency '" + id + "' not written to pom:\n" + loaded)) - val actualOpt = java.lang.Boolean.parseBoolean( (dep \\ "optional").text ) - assert(opt == actualOpt, "Invalid 'optional' section '" + (dep \\ "optional") + "' for " + id + ", expected optional=" + opt) - - val actualScope = (dep \\ "scope") match { case Seq() => None; case x => Some(x.text) } - val actualClassifier = (dep \\ "classifier") match { case Seq() => None; case x => Some(x.text) } - assert(actualScope == scope, "Invalid 'scope' section '" + (dep \\ "scope") + "' for " + id + ", expected scope=" + scope) - assert(actualClassifier == classifier, "Invalid 'classifier' section '" + (dep \\ "classifier") + "' for " + id + ", expected classifier=" + classifier) - } - } -} From 1f73d9eadc1ffc4ff91ed26c4c201fc864932a60 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 00:56:59 -0400 Subject: [PATCH 43/70] Port dependency-management/provided --- .../dependency-management/provided/build.sbt | 30 ++++++++++++++++ .../provided/project/TestProject.scala | 35 ------------------- 2 files changed, 30 insertions(+), 35 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/provided/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/provided/project/TestProject.scala diff --git a/sbt/src/sbt-test/dependency-management/provided/build.sbt b/sbt/src/sbt-test/dependency-management/provided/build.sbt new file mode 100644 index 000000000..c5d4a8def --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/provided/build.sbt @@ -0,0 +1,30 @@ +import complete.DefaultParsers._ + +val provided = SettingKey[Boolean]("provided") +val check = InputKey[Unit]("check") + +lazy val root = (project in file(".")). + settings( + provided <<= baseDirectory(_ / "useProvided" exists), + configuration <<= provided(p => if(p) Provided else Compile), + libraryDependencies <+= configuration(c => "javax.servlet" % "servlet-api" % "2.5" % c.name), + managedClasspath in Provided <<= (classpathTypes, update) map { (cpts, report) => Classpaths.managedJars(Provided, cpts, report) }, + check <<= InputTask(_ => Space ~> token(Compile.name.id | Runtime.name | Provided.name | Test.name) ~ token(Space ~> Bool)) { result => + (result, managedClasspath in Provided, fullClasspath in Runtime, fullClasspath in Compile, fullClasspath in Test) map { case ((conf, expected), p, r, c, t) => + val cp = if(conf == Compile.name) c else if(conf == Runtime.name) r else if(conf == Provided.name) p else if(conf == Test.name) t else sys.error("Invalid config: " + conf) + checkServletAPI(cp.files, expected, conf) + } + } + ) + +def checkServletAPI(paths: Seq[File], shouldBeIncluded: Boolean, label: String) = + { + val servletAPI = paths.find(_.getName contains "servlet-api") + if(shouldBeIncluded) + { + if(servletAPI.isEmpty) + sys.error("Servlet API should have been included in " + label + ".") + } + else + servletAPI.foreach(s => sys.error(s + " incorrectly included in " + label + ".")) + } diff --git a/sbt/src/sbt-test/dependency-management/provided/project/TestProject.scala b/sbt/src/sbt-test/dependency-management/provided/project/TestProject.scala deleted file mode 100644 index bdff38488..000000000 --- a/sbt/src/sbt-test/dependency-management/provided/project/TestProject.scala +++ /dev/null @@ -1,35 +0,0 @@ -import sbt._ -import Import._ -import Keys._ -import complete.DefaultParsers._ - -object TestProject extends Build -{ - val provided = SettingKey[Boolean]("provided") - val check = InputKey[Unit]("check") - - lazy val root = Project("root", file(".")) settings( - provided <<= baseDirectory(_ / "useProvided" exists), - configuration <<= provided(p => if(p) Provided else Compile), - libraryDependencies <+= configuration(c => "javax.servlet" % "servlet-api" % "2.5" % c.name), - managedClasspath in Provided <<= (classpathTypes, update) map { (cpts, report) => Classpaths.managedJars(Provided, cpts, report) }, - check <<= InputTask(_ => Space ~> token(Compile.name.id | Runtime.name | Provided.name | Test.name) ~ token(Space ~> Bool)) { result => - (result, managedClasspath in Provided, fullClasspath in Runtime, fullClasspath in Compile, fullClasspath in Test) map { case ((conf, expected), p, r, c, t) => - val cp = if(conf == Compile.name) c else if(conf == Runtime.name) r else if(conf == Provided.name) p else if(conf == Test.name) t else sys.error("Invalid config: " + conf) - checkServletAPI(cp.files, expected, conf) - } - } - ) - - private def checkServletAPI(paths: Seq[File], shouldBeIncluded: Boolean, label: String) = - { - val servletAPI = paths.find(_.getName contains "servlet-api") - if(shouldBeIncluded) - { - if(servletAPI.isEmpty) - sys.error("Servlet API should have been included in " + label + ".") - } - else - servletAPI.foreach(s => sys.error(s + " incorrectly included in " + label + ".")) - } -} From 3f4195022da67373b9686ba95ecbd4f3fec042ae Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:02:32 -0400 Subject: [PATCH 44/70] Port dependency-management/provided-multi --- .../provided-multi/changes/P.scala | 25 ------------------- .../provided-multi/changes/p.sbt | 19 ++++++++++++++ .../dependency-management/provided-multi/test | 8 +++--- 3 files changed, 23 insertions(+), 29 deletions(-) delete mode 100644 sbt/src/sbt-test/dependency-management/provided-multi/changes/P.scala create mode 100644 sbt/src/sbt-test/dependency-management/provided-multi/changes/p.sbt diff --git a/sbt/src/sbt-test/dependency-management/provided-multi/changes/P.scala b/sbt/src/sbt-test/dependency-management/provided-multi/changes/P.scala deleted file mode 100644 index 1c3a6530b..000000000 --- a/sbt/src/sbt-test/dependency-management/provided-multi/changes/P.scala +++ /dev/null @@ -1,25 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object P extends Build -{ - override def settings = super.settings ++ Seq( - scalaBinaryVersion in update := "2.9.0" - ) - - def configIvyScala = - ivyScala ~= { _.map(_.copy(checkExplicit = false)) } - - val declared = SettingKey[Boolean]("declared") - lazy val a = Project("A", file("a")) settings( - libraryDependencies += "org.scala-tools.sbinary" %% "sbinary" % "0.4.0" % "provided", - configIvyScala - ) - - lazy val b = Project("B", file("b")) dependsOn(a) settings( - libraryDependencies <<= declared(d => if(d) Seq("org.scala-tools.sbinary" %% "sbinary" % "0.4.0" % "provided") else Nil), - declared <<= baseDirectory(_ / "declare.lib" exists), - configIvyScala - ) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/provided-multi/changes/p.sbt b/sbt/src/sbt-test/dependency-management/provided-multi/changes/p.sbt new file mode 100644 index 000000000..3dc6dc210 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/provided-multi/changes/p.sbt @@ -0,0 +1,19 @@ +def configIvyScala = + ivyScala ~= { _.map(_.copy(checkExplicit = false)) } + +val declared = SettingKey[Boolean]("declared") +lazy val a = project. + settings( + libraryDependencies += "org.scala-tools.sbinary" %% "sbinary" % "0.4.0" % "provided", + configIvyScala, + scalaBinaryVersion in update := "2.9.0" + ) + +lazy val b = project. + dependsOn(a). + settings( + libraryDependencies <<= declared(d => if(d) Seq("org.scala-tools.sbinary" %% "sbinary" % "0.4.0" % "provided") else Nil), + declared <<= baseDirectory(_ / "declare.lib" exists), + configIvyScala, + scalaBinaryVersion in update := "2.9.0" + ) diff --git a/sbt/src/sbt-test/dependency-management/provided-multi/test b/sbt/src/sbt-test/dependency-management/provided-multi/test index 17c17ebd2..211dd1327 100644 --- a/sbt/src/sbt-test/dependency-management/provided-multi/test +++ b/sbt/src/sbt-test/dependency-management/provided-multi/test @@ -1,11 +1,11 @@ -$ copy-file changes/P.scala project/P.scala +$ copy-file changes/p.sbt p.sbt $ copy-file changes/A.scala a/src/main/scala/A.scala $ copy-file changes/B.scala b/src/main/scala/B.scala > reload -> A/compile --> B/compile +> a/compile +-> b/compile $ touch b/declare.lib > reload -> compile \ No newline at end of file +> compile From 94c2c993da63fb48f9cc1f298e557d1ecf089e49 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:09:14 -0400 Subject: [PATCH 45/70] Port dependency-management/publish-local --- .../publish-local/build.sbt | 24 +++++++++++++++++ .../publish-local/changes/RetrieveTest.sbt | 20 ++++++++++++++ .../publish-local/changes/RetrieveTest.scala | 27 ------------------- .../project/MultiPublishTest.scala | 22 --------------- 4 files changed, 44 insertions(+), 49 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/publish-local/build.sbt create mode 100644 sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.scala delete mode 100644 sbt/src/sbt-test/dependency-management/publish-local/project/MultiPublishTest.scala diff --git a/sbt/src/sbt-test/dependency-management/publish-local/build.sbt b/sbt/src/sbt-test/dependency-management/publish-local/build.sbt new file mode 100644 index 000000000..4e5fa7e4c --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/publish-local/build.sbt @@ -0,0 +1,24 @@ +lazy val root = (project in file(".")). + dependsOn(sub). + aggregate(sub). + settings(inThisBuild(List( + organization := "A", + version := "1.0", + ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy" / "cache")) ), + externalResolvers <<= baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil } + )), + mavenStyle, + interProject, + name := "Publish Test" + ) + +lazy val sub = project. + settings( + mavenStyle, + name := "Sub Project" + ) + +lazy val mavenStyle = publishMavenStyle <<= baseDirectory { base => (base / "mavenStyle") exists } + +def interProject = + projectDependencies <<= (publishMavenStyle, publishMavenStyle in sub, projectDependencies) map { (style, subStyle, pd) => if(style == subStyle) pd else Nil } diff --git a/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt b/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt new file mode 100644 index 000000000..6ff7b2501 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt @@ -0,0 +1,20 @@ +lazy val root = (project in file(".")). + settings(inThisBuild(List( + organization := "A", + version := "1.0", + ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy" / "cache")) ), + externalResolvers <<= baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil } + )), + mavenStyle, + name := "Retrieve Test", + libraryDependencies <<= publishMavenStyle { style => if(style) mavenStyleDependencies else ivyStyleDependencies } + ) + + +lazy val mavenStyle = publishMavenStyle <<= baseDirectory { base => (base / "mavenStyle") exists } + +def ivyStyleDependencies = parentDep("A") :: subDep("A") :: subDep("B") ::parentDep("D") :: Nil +def mavenStyleDependencies = parentDep("B") :: parentDep("C") :: subDep("C") :: subDep("D") :: Nil + +def parentDep(org: String) = org %% "publish-test" % "1.0" +def subDep(org: String) = org %% "sub-project" % "1.0" diff --git a/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.scala b/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.scala deleted file mode 100644 index b166ce7a9..000000000 --- a/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.scala +++ /dev/null @@ -1,27 +0,0 @@ - import sbt._ - import Import._ - import Keys._ - -object MultiPublishTest extends Build -{ - override lazy val settings = super.settings ++ Seq( - organization := "A", - version := "1.0", - ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy" / "cache")) ), - externalResolvers <<= baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil } - ) - - lazy val root = Project("root", file(".")) settings( - name := "Retrieve Test", - mavenStyle, - libraryDependencies <<= publishMavenStyle { style => if(style) mavenStyleDependencies else ivyStyleDependencies } - ) - - lazy val mavenStyle = publishMavenStyle <<= baseDirectory { base => (base / "mavenStyle") exists } - - def ivyStyleDependencies = parentDep("A") :: subDep("A") :: subDep("B") ::parentDep("D") :: Nil - def mavenStyleDependencies = parentDep("B") :: parentDep("C") :: subDep("C") :: subDep("D") :: Nil - - def parentDep(org: String) = org %% "publish-test" % "1.0" - def subDep(org: String) = org %% "sub-project" % "1.0" -} diff --git a/sbt/src/sbt-test/dependency-management/publish-local/project/MultiPublishTest.scala b/sbt/src/sbt-test/dependency-management/publish-local/project/MultiPublishTest.scala deleted file mode 100644 index 94c4c8ad2..000000000 --- a/sbt/src/sbt-test/dependency-management/publish-local/project/MultiPublishTest.scala +++ /dev/null @@ -1,22 +0,0 @@ - import sbt._ - import Import._ - import Keys._ - -object MultiPublishTest extends Build -{ - override lazy val settings = super.settings ++ Seq( - organization := "A", - version := "1.0", - ivyPaths <<= baseDirectory( dir => new IvyPaths(dir, Some(dir / "ivy" / "cache")) ), - externalResolvers <<= baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil } - ) - - lazy val root = Project("root", file(".")) dependsOn(sub) aggregate(sub) settings( mavenStyle, interProject, name := "Publish Test" ) - - lazy val sub = Project("sub", file("sub")) settings( mavenStyle, name := "Sub Project" ) - - lazy val mavenStyle = publishMavenStyle <<= baseDirectory { base => (base / "mavenStyle") exists } - - def interProject = - projectDependencies <<= (publishMavenStyle, publishMavenStyle in sub, projectDependencies) map { (style, subStyle, pd) => if(style == subStyle) pd else Nil } -} From fa5e087ba10ba55f29c8b15cb5aae95914a263e3 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:11:05 -0400 Subject: [PATCH 46/70] Port dependency-management/sources --- .../dependency-management/sources/build.sbt | 31 +++++++++++++++++ .../sources/project/Test.scala | 33 ------------------- 2 files changed, 31 insertions(+), 33 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/sources/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/sources/project/Test.scala diff --git a/sbt/src/sbt-test/dependency-management/sources/build.sbt b/sbt/src/sbt-test/dependency-management/sources/build.sbt new file mode 100644 index 000000000..7c204d337 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/sources/build.sbt @@ -0,0 +1,31 @@ +import sbt.internal.librarymanagement.syntax._ + +lazy val root = (project in file(".")). + settings( + libraryDependencies += "net.liftweb" % "lift-webkit" % "1.0" intransitive(), + libraryDependencies += "org.scalacheck" % "scalacheck" % "1.5" intransitive(), + autoScalaLibrary := false, + managedScalaInstance := false, + transitiveClassifiers := Seq("sources"), + TaskKey[Unit]("check-sources") <<= updateClassifiers map checkSources, + TaskKey[Unit]("check-binaries") <<= update map checkBinaries + ) + +def getSources(report: UpdateReport) = report.matching(artifactFilter(`classifier` = "sources") ) +def checkSources(report: UpdateReport): Unit = +{ + val srcs = getSources(report) + if(srcs.isEmpty) + sys.error("No sources retrieved") + else if(srcs.size != 2) + sys.error("Incorrect sources retrieved:\n\t" + srcs.mkString("\n\t")) + else + () +} + +def checkBinaries(report: UpdateReport): Unit = + { + val srcs = getSources(report) + if(srcs.nonEmpty) sys.error("Sources retrieved:\n\t" + srcs.mkString("\n\t")) + else () + } diff --git a/sbt/src/sbt-test/dependency-management/sources/project/Test.scala b/sbt/src/sbt-test/dependency-management/sources/project/Test.scala deleted file mode 100644 index 2342d9233..000000000 --- a/sbt/src/sbt-test/dependency-management/sources/project/Test.scala +++ /dev/null @@ -1,33 +0,0 @@ -import sbt._ -import Import._ -import Keys._ -import sbt.internal.librarymanagement.syntax._ - -object Test extends Build -{ - lazy val root = Project("root", file(".")) settings( - libraryDependencies += "net.liftweb" % "lift-webkit" % "1.0" intransitive(), - libraryDependencies += "org.scalacheck" % "scalacheck" % "1.5" intransitive(), - autoScalaLibrary := false, - managedScalaInstance := false, - transitiveClassifiers := Seq("sources"), - TaskKey[Unit]("check-sources") <<= updateClassifiers map checkSources, - TaskKey[Unit]("check-binaries") <<= update map checkBinaries - ) - def getSources(report: UpdateReport) = report.matching(artifactFilter(`classifier` = "sources") ) - def checkSources(report: UpdateReport): Unit = - { - val srcs = getSources(report) - if(srcs.isEmpty) - sys.error("No sources retrieved") - else if(srcs.size != 2) - sys.error("Incorrect sources retrieved:\n\t" + srcs.mkString("\n\t")) - else - () - } - def checkBinaries(report: UpdateReport): Unit = - { - val srcs = getSources(report) - if(srcs.nonEmpty) sys.error("Sources retrieved:\n\t" + srcs.mkString("\n\t")) else () - } -} From d7d3ae4f2b17d3025ef97235ca32ca11627da644 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:13:26 -0400 Subject: [PATCH 47/70] Port dependency-management/url --- .../dependency-management/url/build.sbt | 23 +++++++++++++++ .../url/project/TestProject.scala | 28 ------------------- 2 files changed, 23 insertions(+), 28 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/url/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/url/project/TestProject.scala diff --git a/sbt/src/sbt-test/dependency-management/url/build.sbt b/sbt/src/sbt-test/dependency-management/url/build.sbt new file mode 100644 index 000000000..ecba7534d --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/url/build.sbt @@ -0,0 +1,23 @@ +import classpath.ClasspathUtilities + +lazy val root = (project in file(".")). + settings( + ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), + libraryDependencies += "slinky" % "slinky" % "2.1" % "test" from "http://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar", + TaskKey[Unit]("check-in-test") <<= checkClasspath(Test), + TaskKey[Unit]("check-in-compile") <<= checkClasspath(Compile) + ) + +def checkClasspath(conf: Configuration) = + fullClasspath in conf map { cp => + try + { + val loader = ClasspathUtilities.toLoader(cp.files) + Class.forName("slinky.http.Application", false, loader) + () + } + catch + { + case _: ClassNotFoundException => sys.error("Dependency not downloaded.") + } + } diff --git a/sbt/src/sbt-test/dependency-management/url/project/TestProject.scala b/sbt/src/sbt-test/dependency-management/url/project/TestProject.scala deleted file mode 100644 index e30eb8ef7..000000000 --- a/sbt/src/sbt-test/dependency-management/url/project/TestProject.scala +++ /dev/null @@ -1,28 +0,0 @@ - import sbt._ - import Import._ - import Keys._ - import classpath.ClasspathUtilities - -object TestProject extends Build -{ - lazy val root = Project("root", file(".")) settings( - ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))), - libraryDependencies += "slinky" % "slinky" % "2.1" % "test" from "http://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar", - TaskKey[Unit]("check-in-test") <<= checkClasspath(Test), - TaskKey[Unit]("check-in-compile") <<= checkClasspath(Compile) - ) - - private def checkClasspath(conf: Configuration) = - fullClasspath in conf map { cp => - try - { - val loader = ClasspathUtilities.toLoader(cp.files) - Class.forName("slinky.http.Application", false, loader) - () - } - catch - { - case _: ClassNotFoundException => sys.error("Dependency not downloaded.") - } - } -} From c635049f22673d9066533afe32d0dc19aafaaae3 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:29:48 -0400 Subject: [PATCH 48/70] Port project/auto-settings --- .../sbt-test/project/auto-settings/build.sbt | 37 +++++++++++++++++++ .../project/auto-settings/{test => disabled} | 0 .../project/auto-settings/project/P.scala | 32 ---------------- 3 files changed, 37 insertions(+), 32 deletions(-) create mode 100644 sbt/src/sbt-test/project/auto-settings/build.sbt rename sbt/src/sbt-test/project/auto-settings/{test => disabled} (100%) delete mode 100644 sbt/src/sbt-test/project/auto-settings/project/P.scala diff --git a/sbt/src/sbt-test/project/auto-settings/build.sbt b/sbt/src/sbt-test/project/auto-settings/build.sbt new file mode 100644 index 000000000..7d4a01490 --- /dev/null +++ b/sbt/src/sbt-test/project/auto-settings/build.sbt @@ -0,0 +1,37 @@ +import AddSettings._ + +// version should be from explicit/a.txt +lazy val root = proj("root", "1.4").settingSets( + buildScalaFiles, + userSettings, + sbtFiles(file("explicit/a.txt")) +) + +// version should be from global/user.sbt +lazy val a = proj("a", "1.1"). + settingSets( buildScalaFiles, userSettings ) + +// version should be the default 0.1-SNAPSHOT +lazy val b = proj("b", "0.1-SNAPSHOT"). + settingSets(buildScalaFiles) + +// version should be from the explicit settings call +lazy val c = proj("c", "0.9").settings(version := "0.9"). + settingSets(buildScalaFiles) + +// version should be from d/build.sbt +lazy val d = proj("d", "1.3").settings(version := "0.9"). + settingSets( buildScalaFiles, defaultSbtFiles ) + +// version should be from global/user.sbt +lazy val e = proj("e", "1.1").settings(version := "0.9"). + settingSets( buildScalaFiles, defaultSbtFiles, sbtFiles(file("../explicit/a.txt")), userSettings ) + +def proj(id: String, expectedVersion: String): Project = + Project(id, if(id == "root") file(".") else file(id)). + settings( + TaskKey[Unit]("check") := { + assert(version.value == expectedVersion, + "Expected version '" + expectedVersion + "', got: " + version.value + " in " + id) + } + ) diff --git a/sbt/src/sbt-test/project/auto-settings/test b/sbt/src/sbt-test/project/auto-settings/disabled similarity index 100% rename from sbt/src/sbt-test/project/auto-settings/test rename to sbt/src/sbt-test/project/auto-settings/disabled diff --git a/sbt/src/sbt-test/project/auto-settings/project/P.scala b/sbt/src/sbt-test/project/auto-settings/project/P.scala deleted file mode 100644 index 7eff57a14..000000000 --- a/sbt/src/sbt-test/project/auto-settings/project/P.scala +++ /dev/null @@ -1,32 +0,0 @@ - import sbt._ - import Keys._ - - import AddSettings._ - import Import._ - -object B extends Build -{ - // version should be from explicit/a.txt - lazy val root = project("root", "1.4") settingSets( buildScalaFiles, userSettings, sbtFiles(file("explicit/a.txt")) ) - - // version should be from global/user.sbt - lazy val a = project("a", "1.1") settingSets( buildScalaFiles, userSettings ) - - // version should be the default 0.1-SNAPSHOT - lazy val b = project("b", "0.1-SNAPSHOT") settingSets(buildScalaFiles) - - // version should be from the explicit settings call - lazy val c = project("c", "0.9") settings(version := "0.9") settingSets(buildScalaFiles) - - // version should be from d/build.sbt - lazy val d = project("d", "1.3") settings(version := "0.9") settingSets( buildScalaFiles, defaultSbtFiles ) - - // version should be from global/user.sbt - lazy val e = project("e", "1.1") settings(version := "0.9") settingSets( buildScalaFiles, defaultSbtFiles, sbtFiles(file("../explicit/a.txt")), userSettings ) - - def project(id: String, expectedVersion: String): Project = Project(id, if(id == "root") file(".") else file(id)) settings( - TaskKey[Unit]("check") <<= version map { v => - assert(v == expectedVersion, "Expected version '" + expectedVersion + "', got: " + v) - } - ) -} From a2011fda6c0a1d835ed29ce0a3a16971e27f7ebf Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:43:41 -0400 Subject: [PATCH 49/70] Port project/binary-plugin --- sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala b/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala index 49783505c..c1293a3cf 100644 --- a/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala +++ b/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala @@ -22,7 +22,3 @@ object A extends AutoPlugin { check := {} ) } - -object B extends Build { - lazy val extra = project.enablePlugins(bN) -} From 174116b604b7ac0a736e513fb706686e29e31cef Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:47:20 -0400 Subject: [PATCH 50/70] Port project/build-deps --- sbt/src/sbt-test/project/build-deps/build.sbt | 3 +++ sbt/src/sbt-test/project/build-deps/changes/b.sbt | 2 +- sbt/src/sbt-test/project/build-deps/project/B.scala | 10 ---------- 3 files changed, 4 insertions(+), 11 deletions(-) create mode 100644 sbt/src/sbt-test/project/build-deps/build.sbt delete mode 100644 sbt/src/sbt-test/project/build-deps/project/B.scala diff --git a/sbt/src/sbt-test/project/build-deps/build.sbt b/sbt/src/sbt-test/project/build-deps/build.sbt new file mode 100644 index 000000000..6777c4eb3 --- /dev/null +++ b/sbt/src/sbt-test/project/build-deps/build.sbt @@ -0,0 +1,3 @@ +lazy val root = (project in file(".")) +lazy val a = project +lazy val b = project diff --git a/sbt/src/sbt-test/project/build-deps/changes/b.sbt b/sbt/src/sbt-test/project/build-deps/changes/b.sbt index 0a7be5cd6..a316d19df 100644 --- a/sbt/src/sbt-test/project/build-deps/changes/b.sbt +++ b/sbt/src/sbt-test/project/build-deps/changes/b.sbt @@ -1,3 +1,3 @@ -buildDependencies in Global <<= (buildDependencies in Global, thisProjectRef, thisProjectRef in a) { (deps, refB, refA) => +buildDependencies in Global <<= (buildDependencies in Global, thisProjectRef, thisProjectRef in LocalProject("a")) { (deps, refB, refA) => deps.addClasspath(refA, ResolvedClasspathDependency(refB, None)) } diff --git a/sbt/src/sbt-test/project/build-deps/project/B.scala b/sbt/src/sbt-test/project/build-deps/project/B.scala deleted file mode 100644 index 720fa8b7b..000000000 --- a/sbt/src/sbt-test/project/build-deps/project/B.scala +++ /dev/null @@ -1,10 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val root = Project("root", file(".")) - lazy val a = Project("a", file("a")) - lazy val b = Project("b", file("b")) -} From 32d21d0685f5695c7366e544f67707baf7eee018 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:48:40 -0400 Subject: [PATCH 51/70] Port project/circular --- sbt/src/sbt-test/project/circular/build.sbt | 5 +++++ .../sbt-test/project/circular/project/P.scala | 18 ------------------ 2 files changed, 5 insertions(+), 18 deletions(-) create mode 100644 sbt/src/sbt-test/project/circular/build.sbt delete mode 100644 sbt/src/sbt-test/project/circular/project/P.scala diff --git a/sbt/src/sbt-test/project/circular/build.sbt b/sbt/src/sbt-test/project/circular/build.sbt new file mode 100644 index 000000000..77bc210a1 --- /dev/null +++ b/sbt/src/sbt-test/project/circular/build.sbt @@ -0,0 +1,5 @@ +lazy val root = (project in file(".")). + aggregate(LocalProject("sub")) + +lazy val sub = project. + dependsOn(root) diff --git a/sbt/src/sbt-test/project/circular/project/P.scala b/sbt/src/sbt-test/project/circular/project/P.scala deleted file mode 100644 index 9a25d0fd8..000000000 --- a/sbt/src/sbt-test/project/circular/project/P.scala +++ /dev/null @@ -1,18 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object Build extends Build { - - lazy val root: Project = Project( - "root", - file("."), - aggregate = Seq(sub) - ) - - lazy val sub: Project = Project( - "sub", - file("sub"), - dependencies = Seq(root) - ) -} From d01f8d3c1b15b5988e775d920a8805e7eb95266f Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:54:58 -0400 Subject: [PATCH 52/70] Port project/extra --- .../main/scala/sbt/internal/BuildDef.scala | 2 +- sbt/src/sbt-test/project/extra/build.sbt | 43 +++++++++++++++++ .../sbt-test/project/extra/project/B.scala | 46 ------------------- 3 files changed, 44 insertions(+), 47 deletions(-) create mode 100644 sbt/src/sbt-test/project/extra/build.sbt delete mode 100644 sbt/src/sbt-test/project/extra/project/B.scala diff --git a/main/src/main/scala/sbt/internal/BuildDef.scala b/main/src/main/scala/sbt/internal/BuildDef.scala index 0e7f2370b..1825071ae 100644 --- a/main/src/main/scala/sbt/internal/BuildDef.scala +++ b/main/src/main/scala/sbt/internal/BuildDef.scala @@ -11,7 +11,7 @@ import sbt.io.Hash import sbt.internal.util.Attributed import sbt.internal.inc.ReflectUtilities -private[sbt] trait BuildDef { +trait BuildDef { def projectDefinitions(baseDirectory: File): Seq[Project] = projects def projects: Seq[Project] = ReflectUtilities.allVals[Project](this).values.toSeq // TODO: Should we grab the build core setting shere or in a plugin? diff --git a/sbt/src/sbt-test/project/extra/build.sbt b/sbt/src/sbt-test/project/extra/build.sbt new file mode 100644 index 000000000..03087c247 --- /dev/null +++ b/sbt/src/sbt-test/project/extra/build.sbt @@ -0,0 +1,43 @@ +lazy val root = (project in file(".")). + settings( + autoScalaLibrary := false, + libraryDependencies += "log4j" % "log4j" % "1.2.16", + retrieveManaged := true, + commands ++= Seq( + addExtra("add1", addExtra1), + addExtra("add2", addExtra2), + checkExtra + ) + ) + +def addExtra(name: String, f: (State, Seq[File]) => State) = + Command.command(name) { s => + f(s, (file("lib_managed") ** "*.jar").get) + } +def checkExtra = + Command.command("check") { s => + val loader = Class.forName("org.apache.log4j.Level").getClassLoader + val sbtLoader = classOf[sbt.internal.BuildDef].getClassLoader + assert(loader eq sbtLoader, "Different loader for sbt and extra: " + sbtLoader + " and " + loader) + s + } +def addExtra1(s: State, extra: Seq[File]): State = + { + val cs = s.configuration.provider.components() + val copied = cs.addToComponent("extra", extra.toArray) + if(copied) s.reload else s + } +def addExtra2(s: State, extra: Seq[File]): State = + { + val reload = State.defaultReload(s) + val currentID = reload.app + val currentExtra = currentID.classpathExtra + val newExtra = (currentExtra ++ extra).distinct + if(newExtra.length == currentExtra.length) + s + else + { + val newID = ApplicationID(currentID).copy(extra = extra) + s.setResult(Some(reload.copy(app = newID))) + } + } diff --git a/sbt/src/sbt-test/project/extra/project/B.scala b/sbt/src/sbt-test/project/extra/project/B.scala deleted file mode 100644 index 7cbf9495d..000000000 --- a/sbt/src/sbt-test/project/extra/project/B.scala +++ /dev/null @@ -1,46 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - lazy val root = Project("root", file(".")) settings( - autoScalaLibrary := false, - libraryDependencies += "log4j" % "log4j" % "1.2.16", - retrieveManaged := true, - commands ++= Seq( - addExtra("add1", addExtra1), - addExtra("add2", addExtra2), - checkExtra - ) - ) - def addExtra(name: String, f: (State, Seq[File]) => State) = Command.command(name) { s => - f(s, (file("lib_managed") ** "*.jar").get) - } - def checkExtra = Command.command("check") { s => - val loader = Class.forName("org.apache.log4j.Level").getClassLoader - val sbtLoader = classOf[sbt.Build].getClassLoader - assert(loader eq sbtLoader, "Different loader for sbt and extra: " + sbtLoader + " and " + loader) - s - } - def addExtra1(s: State, extra: Seq[File]): State = - { - val cs = s.configuration.provider.components() - val copied = cs.addToComponent("extra", extra.toArray) - if(copied) s.reload else s - } - def addExtra2(s: State, extra: Seq[File]): State = - { - val reload = State.defaultReload(s) - val currentID = reload.app - val currentExtra = currentID.classpathExtra - val newExtra = (currentExtra ++ extra).distinct - if(newExtra.length == currentExtra.length) - s - else - { - val newID = ApplicationID(currentID).copy(extra = extra) - s.setResult(Some(reload.copy(app = newID))) - } - } -} \ No newline at end of file From 5cbb2edceed70a85961b4d79001df2f1b522cc9a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:58:06 -0400 Subject: [PATCH 53/70] Port project/flatten --- sbt/src/sbt-test/project/flatten/build.sbt | 25 ++++++++++++++++ .../project/flatten/project/Flat.scala | 29 ------------------- 2 files changed, 25 insertions(+), 29 deletions(-) create mode 100644 sbt/src/sbt-test/project/flatten/build.sbt delete mode 100644 sbt/src/sbt-test/project/flatten/project/Flat.scala diff --git a/sbt/src/sbt-test/project/flatten/build.sbt b/sbt/src/sbt-test/project/flatten/build.sbt new file mode 100644 index 000000000..22b63a657 --- /dev/null +++ b/sbt/src/sbt-test/project/flatten/build.sbt @@ -0,0 +1,25 @@ +import Configurations.{Compile, Test} + +lazy val root = (project in file(".")). + settings( + forConfig(Compile, "src"), + forConfig(Test, "test-src"), + baseSettings + ) + +def baseSettings = Seq( + scalaVersion := "2.8.1", + libraryDependencies += "org.scala-tools.testing" %% "scalacheck" % "1.8" % "test", + includeFilter in unmanagedSources := "*.java" | "*.scala" +) + +def forConfig(conf: Configuration, name: String) = Project.inConfig(conf)( unpackageSettings(name) ) + +def unpackageSettings(name: String) = Seq( + unmanagedSourceDirectories := (baseDirectory.value / name) :: Nil, + excludeFilter in unmanagedResources := (includeFilter in unmanagedSources).value, + unmanagedResourceDirectories := unmanagedSourceDirectories.value, + unpackage := IO.unzip(artifactPath in packageSrc value, baseDirectory.value / name) +) + +val unpackage = TaskKey[Unit]("unpackage") diff --git a/sbt/src/sbt-test/project/flatten/project/Flat.scala b/sbt/src/sbt-test/project/flatten/project/Flat.scala deleted file mode 100644 index f65bc8b0f..000000000 --- a/sbt/src/sbt-test/project/flatten/project/Flat.scala +++ /dev/null @@ -1,29 +0,0 @@ -import sbt._ -import Import._ -import Keys._ -import Configurations.{Compile, Test} - -object Flat extends Build -{ - lazy val root = Project("root", file("."), - settings = Defaults.defaultSettings ++ forConfig(Compile, "src") ++ forConfig(Test, "test-src") ++ baseSettings - ) - - def baseSettings = Seq( - scalaVersion := "2.8.1", - libraryDependencies += "org.scala-tools.testing" %% "scalacheck" % "1.8" % "test", - includeFilter in unmanagedSources := "*.java" | "*.scala" - ) - - def forConfig(conf: Configuration, name: String) = Project.inConfig(conf)( unpackageSettings(name) ) - - def unpackageSettings(name: String) = Seq( - unmanagedSourceDirectories := (baseDirectory.value / name) :: Nil, - excludeFilter in unmanagedResources := (includeFilter in unmanagedSources).value, - unmanagedResourceDirectories := unmanagedSourceDirectories.value, - unpackage := IO.unzip(artifactPath in packageSrc value, baseDirectory.value / name) - ) - - val unpackage = TaskKey[Unit]("unpackage") -} - From 060f06d23ede7d8285e6af3abc9687dee7d42da5 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 01:58:58 -0400 Subject: [PATCH 54/70] Remove old style multi project test --- .../project/multi/changes/Build1.scala | 13 --------- .../project/multi/changes/Build2.scala | 17 ----------- sbt/src/sbt-test/project/multi/changes/a.sbt | 1 - sbt/src/sbt-test/project/multi/changes/b.sbt | 1 - sbt/src/sbt-test/project/multi/changes/b2.sbt | 1 - sbt/src/sbt-test/project/multi/test | 29 ------------------- 6 files changed, 62 deletions(-) delete mode 100644 sbt/src/sbt-test/project/multi/changes/Build1.scala delete mode 100644 sbt/src/sbt-test/project/multi/changes/Build2.scala delete mode 100644 sbt/src/sbt-test/project/multi/changes/a.sbt delete mode 100644 sbt/src/sbt-test/project/multi/changes/b.sbt delete mode 100644 sbt/src/sbt-test/project/multi/changes/b2.sbt delete mode 100644 sbt/src/sbt-test/project/multi/test diff --git a/sbt/src/sbt-test/project/multi/changes/Build1.scala b/sbt/src/sbt-test/project/multi/changes/Build1.scala deleted file mode 100644 index d2aa4b9b2..000000000 --- a/sbt/src/sbt-test/project/multi/changes/Build1.scala +++ /dev/null @@ -1,13 +0,0 @@ -import sbt._ -import Keys.name -import AddSettings._ -import Import._ - -object TestBuild extends Build -{ - override def projects = Seq( - proj("a", "."), - proj("b", "b") - ) - def proj(id: String, dir: String) = Project(id, file(dir), settings = Seq( name := id ) ).settingSets(buildScalaFiles) -} diff --git a/sbt/src/sbt-test/project/multi/changes/Build2.scala b/sbt/src/sbt-test/project/multi/changes/Build2.scala deleted file mode 100644 index aa21b29e6..000000000 --- a/sbt/src/sbt-test/project/multi/changes/Build2.scala +++ /dev/null @@ -1,17 +0,0 @@ -import sbt._ -import Keys.name -import Import._ - -object TestBuild extends MakeBuild -{ - lazy val a = proj("a", ".") -} -object SecondBuild extends MakeBuild -{ - lazy val b = proj("b", "b") -} -trait MakeBuild extends Build -{ - import AddSettings._ - def proj(id: String, dir: String) = Project(id, file(dir), settings = Seq( name := id ) ).settingSets(buildScalaFiles, defaultSbtFiles) -} diff --git a/sbt/src/sbt-test/project/multi/changes/a.sbt b/sbt/src/sbt-test/project/multi/changes/a.sbt deleted file mode 100644 index ff6074adf..000000000 --- a/sbt/src/sbt-test/project/multi/changes/a.sbt +++ /dev/null @@ -1 +0,0 @@ -TaskKey[Unit]("example") := {} \ No newline at end of file diff --git a/sbt/src/sbt-test/project/multi/changes/b.sbt b/sbt/src/sbt-test/project/multi/changes/b.sbt deleted file mode 100644 index 5e889b0d2..000000000 --- a/sbt/src/sbt-test/project/multi/changes/b.sbt +++ /dev/null @@ -1 +0,0 @@ -TaskKey[Unit]("sample") := {} \ No newline at end of file diff --git a/sbt/src/sbt-test/project/multi/changes/b2.sbt b/sbt/src/sbt-test/project/multi/changes/b2.sbt deleted file mode 100644 index e61638a83..000000000 --- a/sbt/src/sbt-test/project/multi/changes/b2.sbt +++ /dev/null @@ -1 +0,0 @@ -TaskKey[Unit]("sample2") := {} \ No newline at end of file diff --git a/sbt/src/sbt-test/project/multi/test b/sbt/src/sbt-test/project/multi/test deleted file mode 100644 index 09a5fe171..000000000 --- a/sbt/src/sbt-test/project/multi/test +++ /dev/null @@ -1,29 +0,0 @@ -# A single project definition with projects only defining a name -$ copy-file changes/Build1.scala project/Build.scala -> reload -> a/name --> a/compile -> b/name --> b/compile -$ delete project/Build.scala - -# Two separate project definitions, implemented using a trait -# Only the modules should be discovered. -# A .sbt file should be used in each -$ copy-file changes/Build2.scala project/Build.scala -$ copy-file changes/a.sbt a.sbt -$ copy-file changes/b.sbt b/b.sbt -$ copy-file changes/b2.sbt b/b2.sbt -> reload - -> a/name --> a/compile -> a/example --> a/sample --> a/sample2 - -> b/name --> b/compile -> b/sample -> b/sample2 --> b/example From 576bb4d42f3e55f107685d236c73cec046eb4989 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:04:16 -0400 Subject: [PATCH 55/70] Port project/provided --- sbt/src/sbt-test/project/provided/build.sbt | 36 +++++++++++++++++++ .../sbt-test/project/provided/project/P.scala | 33 ----------------- 2 files changed, 36 insertions(+), 33 deletions(-) create mode 100644 sbt/src/sbt-test/project/provided/build.sbt delete mode 100644 sbt/src/sbt-test/project/provided/project/P.scala diff --git a/sbt/src/sbt-test/project/provided/build.sbt b/sbt/src/sbt-test/project/provided/build.sbt new file mode 100644 index 000000000..f4565ac12 --- /dev/null +++ b/sbt/src/sbt-test/project/provided/build.sbt @@ -0,0 +1,36 @@ +lazy val superRoot = (project in file("super")). + dependsOn(rootRef) + +lazy val root = (project in file(".")). + dependsOn(sub % "provided->test"). + settings( + rootSettings + ) + +lazy val sub = project + +lazy val rootRef = LocalProject("root") + +def rootSettings = Defaults.defaultSettings :+ ( TaskKey[Unit]("check") <<= checkTask ) +def checkTask = (fullClasspath in (rootRef, Compile), fullClasspath in (rootRef, Runtime), fullClasspath in (rootRef, Test), fullClasspath in (sub, Test), fullClasspath in (superRoot, Compile)) map { (rc, rr, rt, st, pr) => + check0(st, "sub test", true) + check0(pr, "superRoot main", false) + check0(rc, "root main", true) + check0(rr, "root runtime", false) + check0(rt, "root test", true) +} + +def check0(cp: Seq[Attributed[File]], label: String, shouldSucceed: Boolean): Unit = +{ + val loader = classpath.ClasspathUtilities.toLoader(cp.files) + println("Checking " + label) + val err = try { Class.forName("org.example.ProvidedTest", false, loader); None } + catch { case e: Exception => Some(e) } + + (err, shouldSucceed) match + { + case (None, true) | (Some(_), false) => () + case (None, false) => sys.error("Expected failure") + case (Some(x), true) => throw x + } +} diff --git a/sbt/src/sbt-test/project/provided/project/P.scala b/sbt/src/sbt-test/project/provided/project/P.scala deleted file mode 100644 index a59b7658e..000000000 --- a/sbt/src/sbt-test/project/provided/project/P.scala +++ /dev/null @@ -1,33 +0,0 @@ -import sbt._ -import Import._ -import Keys._ - -object P extends Build -{ - lazy val superRoot = Project("super-root", file("super")) dependsOn(root) - lazy val root: Project = Project("root", file("."), settings = rootSettings, dependencies = (sub % "provided->test") :: Nil) - lazy val sub = Project("sub", file("sub")) - - def rootSettings = Defaults.defaultSettings :+ ( TaskKey[Unit]("check") <<= checkTask ) - def checkTask = (fullClasspath in (root, Compile), fullClasspath in (root, Runtime), fullClasspath in (root, Test), fullClasspath in (sub, Test), fullClasspath in (superRoot, Compile)) map { (rc, rr, rt, st, pr) => - check0(st, "sub test", true) - check0(pr, "super main", false) - check0(rc, "root main", true) - check0(rr, "root runtime", false) - check0(rt, "root test", true) - } - def check0(cp: Seq[Attributed[File]], label: String, shouldSucceed: Boolean): Unit = - { - val loader = classpath.ClasspathUtilities.toLoader(cp.files) - println("Checking " + label) - val err = try { Class.forName("org.example.ProvidedTest", false, loader); None } - catch { case e: Exception => Some(e) } - - (err, shouldSucceed) match - { - case (None, true) | (Some(_), false) => () - case (None, false) => sys.error("Expected failure") - case (Some(x), true) => throw x - } - } -} From 8e3f7f5f100e2672c6ccbe7f49386f72c9e05503 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:07:12 -0400 Subject: [PATCH 56/70] Remove old style rootProject test --- .../project/root-project/changes/RootA.scala | 15 --------------- .../project/root-project/changes/RootD.scala | 15 --------------- sbt/src/sbt-test/project/root-project/test | 11 ----------- 3 files changed, 41 deletions(-) delete mode 100644 sbt/src/sbt-test/project/root-project/changes/RootA.scala delete mode 100644 sbt/src/sbt-test/project/root-project/changes/RootD.scala delete mode 100644 sbt/src/sbt-test/project/root-project/test diff --git a/sbt/src/sbt-test/project/root-project/changes/RootA.scala b/sbt/src/sbt-test/project/root-project/changes/RootA.scala deleted file mode 100644 index 3d70a5c07..000000000 --- a/sbt/src/sbt-test/project/root-project/changes/RootA.scala +++ /dev/null @@ -1,15 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - override def rootProject = Some(a) - - lazy val a = Project("a", file("a")) settings( - TaskKey[Unit]("taskA") := {} - ) - lazy val b = Project("b", file("b")) settings( - TaskKey[Unit]("taskB") := {} - ) -} diff --git a/sbt/src/sbt-test/project/root-project/changes/RootD.scala b/sbt/src/sbt-test/project/root-project/changes/RootD.scala deleted file mode 100644 index dd6f7e80e..000000000 --- a/sbt/src/sbt-test/project/root-project/changes/RootD.scala +++ /dev/null @@ -1,15 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build -{ - override def rootProject = Some(d) - - lazy val c = Project("c", file("c")) settings( - TaskKey[Unit]("taskC") := {} - ) - lazy val d = Project("d", file("d")) settings( - TaskKey[Unit]("taskD") := {} - ) -} diff --git a/sbt/src/sbt-test/project/root-project/test b/sbt/src/sbt-test/project/root-project/test deleted file mode 100644 index 1848bfe41..000000000 --- a/sbt/src/sbt-test/project/root-project/test +++ /dev/null @@ -1,11 +0,0 @@ -$ copy-file changes/RootA.scala project/P.scala -> reload -> taskA --> taskB -> b/taskB - -$ copy-file changes/RootD.scala project/P.scala -> reload -> taskD --> taskC -> c/taskC From 8d608a2a84c75caeff22666b18cbab0d2285c824 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:10:44 -0400 Subject: [PATCH 57/70] Port project/sbt-file-projects --- .../sbt-test/project/sbt-file-projects/build.sbt | 5 +++-- .../project/sbt-file-projects/changes/Basic.sbt | 1 + .../project/sbt-file-projects/changes/Basic.scala | 7 ------- .../sbt-file-projects/changes/Restricted.scala | 9 --------- .../sbt-test/project/sbt-file-projects/other.sbt | 2 +- sbt/src/sbt-test/project/sbt-file-projects/test | 13 +------------ 6 files changed, 6 insertions(+), 31 deletions(-) create mode 100644 sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.sbt delete mode 100644 sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.scala delete mode 100644 sbt/src/sbt-test/project/sbt-file-projects/changes/Restricted.scala diff --git a/sbt/src/sbt-test/project/sbt-file-projects/build.sbt b/sbt/src/sbt-test/project/sbt-file-projects/build.sbt index 500a32076..9b5410eff 100644 --- a/sbt/src/sbt-test/project/sbt-file-projects/build.sbt +++ b/sbt/src/sbt-test/project/sbt-file-projects/build.sbt @@ -2,8 +2,9 @@ val a = "a" val f = file("a") val g = taskKey[Unit]("A task in the root project") -val p = Project(a, f).settingSets(AddSettings.autoPlugins, AddSettings.sbtFiles( file("a.sbt") )) +val p = Project(a, f). + settingSets(AddSettings.autoPlugins, AddSettings.sbtFiles( file("a.sbt") )) -val b = Project("b", file("b")) +val b = (project in file("b")) g := println("Hello.") diff --git a/sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.sbt b/sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.sbt new file mode 100644 index 000000000..c128b140e --- /dev/null +++ b/sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.sbt @@ -0,0 +1 @@ +lazy val root = (project in file(".")) diff --git a/sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.scala b/sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.scala deleted file mode 100644 index 4b8ae9c25..000000000 --- a/sbt/src/sbt-test/project/sbt-file-projects/changes/Basic.scala +++ /dev/null @@ -1,7 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build { - lazy val root = Project("root", file(".")) -} \ No newline at end of file diff --git a/sbt/src/sbt-test/project/sbt-file-projects/changes/Restricted.scala b/sbt/src/sbt-test/project/sbt-file-projects/changes/Restricted.scala deleted file mode 100644 index 02e9609b9..000000000 --- a/sbt/src/sbt-test/project/sbt-file-projects/changes/Restricted.scala +++ /dev/null @@ -1,9 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object B extends Build { - lazy val root = Project("root", file(".")).settingSets( - AddSettings.autoPlugins, - AddSettings.sbtFiles( file("other.sbt") )) // ignore build.sbt -} diff --git a/sbt/src/sbt-test/project/sbt-file-projects/other.sbt b/sbt/src/sbt-test/project/sbt-file-projects/other.sbt index c9166192a..94e5f2363 100644 --- a/sbt/src/sbt-test/project/sbt-file-projects/other.sbt +++ b/sbt/src/sbt-test/project/sbt-file-projects/other.sbt @@ -1 +1 @@ -val c = Project("c", file("c")) \ No newline at end of file +val c = project diff --git a/sbt/src/sbt-test/project/sbt-file-projects/test b/sbt/src/sbt-test/project/sbt-file-projects/test index 07d74c340..d7bf3e913 100644 --- a/sbt/src/sbt-test/project/sbt-file-projects/test +++ b/sbt/src/sbt-test/project/sbt-file-projects/test @@ -7,7 +7,7 @@ > b/h > c/compile -$ copy-file changes/Basic.scala project/Build.scala +$ copy-file changes/Basic.sbt basic.sbt > reload > g > root/compile @@ -16,14 +16,3 @@ $ copy-file changes/Basic.scala project/Build.scala > b/compile > b/h > c/compile - -$ copy-file changes/Restricted.scala project/Build.scala -> reload -> root/compile --> g --> h --> a/compile --> a/aa --> b/compile --> b/h -> c/compile \ No newline at end of file From 0571b8ec17f0019e0b66281ac87040a8f0f6b644 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:13:03 -0400 Subject: [PATCH 58/70] Port project/src-plugins --- sbt/src/sbt-test/project/src-plugins/project/p.sbt | 2 ++ .../sbt-test/project/src-plugins/project/project/P.scala | 7 ------- 2 files changed, 2 insertions(+), 7 deletions(-) create mode 100644 sbt/src/sbt-test/project/src-plugins/project/p.sbt delete mode 100644 sbt/src/sbt-test/project/src-plugins/project/project/P.scala diff --git a/sbt/src/sbt-test/project/src-plugins/project/p.sbt b/sbt/src/sbt-test/project/src-plugins/project/p.sbt new file mode 100644 index 000000000..09360a6a8 --- /dev/null +++ b/sbt/src/sbt-test/project/src-plugins/project/p.sbt @@ -0,0 +1,2 @@ +lazy val root = (project in file(".")). + dependsOn(file("../plugin")) diff --git a/sbt/src/sbt-test/project/src-plugins/project/project/P.scala b/sbt/src/sbt-test/project/src-plugins/project/project/P.scala deleted file mode 100644 index 1dd23930b..000000000 --- a/sbt/src/sbt-test/project/src-plugins/project/project/P.scala +++ /dev/null @@ -1,7 +0,0 @@ -import sbt._ -import Import._ - -object B extends Build -{ - lazy val root = Project("root", file(".")).dependsOn( file("../plugin") ) -} \ No newline at end of file From cc507a0cb71ab67e5bea47517b0dbf64531495af Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:16:02 -0400 Subject: [PATCH 59/70] Port source-dependencies/binary --- sbt/src/sbt-test/source-dependencies/binary/build.sbt | 6 ++++++ .../source-dependencies/binary/project/P.scala | 11 ----------- 2 files changed, 6 insertions(+), 11 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/binary/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/binary/project/P.scala diff --git a/sbt/src/sbt-test/source-dependencies/binary/build.sbt b/sbt/src/sbt-test/source-dependencies/binary/build.sbt new file mode 100644 index 000000000..00acecef9 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/binary/build.sbt @@ -0,0 +1,6 @@ +lazy val dep = project + +lazy val use = project. + settings( + unmanagedJars in Compile <+= packageBin in (dep, Compile) map Attributed.blank + ) diff --git a/sbt/src/sbt-test/source-dependencies/binary/project/P.scala b/sbt/src/sbt-test/source-dependencies/binary/project/P.scala deleted file mode 100644 index 6a931f2e8..000000000 --- a/sbt/src/sbt-test/source-dependencies/binary/project/P.scala +++ /dev/null @@ -1,11 +0,0 @@ -import sbt._ -import Import._ -import Keys._ - -object B extends Build -{ - lazy val dep = Project("dep", file("dep")) - lazy val use = Project("use", file("use")) settings( - unmanagedJars in Compile <+= packageBin in (dep, Compile) map Attributed.blank - ) -} From 2c6138753ec8636c7d4d85b8b2a3e5c68bbfb272 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:17:19 -0400 Subject: [PATCH 60/70] Port source-dependencies/replace-test-a --- .../replace-test-a/build.sbt | 14 +++++++++++++ .../replace-test-a/project/Build.scala | 20 ------------------- 2 files changed, 14 insertions(+), 20 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/replace-test-a/build.sbt delete mode 100644 sbt/src/sbt-test/source-dependencies/replace-test-a/project/Build.scala diff --git a/sbt/src/sbt-test/source-dependencies/replace-test-a/build.sbt b/sbt/src/sbt-test/source-dependencies/replace-test-a/build.sbt new file mode 100644 index 000000000..c719d724b --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/replace-test-a/build.sbt @@ -0,0 +1,14 @@ +import java.net.URLClassLoader + +lazy val root = (project in file(".")). + settings( + TaskKey[Unit]("check-first") <<= checkTask("First"), + TaskKey[Unit]("check-second") <<= checkTask("Second") + ) + +def checkTask(className: String) = + fullClasspath in Configurations.Runtime map { runClasspath => + val cp = runClasspath.map(_.data.toURI.toURL).toArray + Class.forName(className, false, new URLClassLoader(cp)) + () + } diff --git a/sbt/src/sbt-test/source-dependencies/replace-test-a/project/Build.scala b/sbt/src/sbt-test/source-dependencies/replace-test-a/project/Build.scala deleted file mode 100644 index 2739316a4..000000000 --- a/sbt/src/sbt-test/source-dependencies/replace-test-a/project/Build.scala +++ /dev/null @@ -1,20 +0,0 @@ -import sbt._ -import Import._ -import Keys._ -import java.net.URLClassLoader - -object B extends Build -{ - lazy val root = Project("root", file(".")) settings( ss : _*) - - def ss = Seq( - TaskKey[Unit]("check-first") <<= checkTask("First"), - TaskKey[Unit]("check-second") <<= checkTask("Second") - ) - private def checkTask(className: String) = - fullClasspath in Configurations.Runtime map { runClasspath => - val cp = runClasspath.map(_.data.toURI.toURL).toArray - Class.forName(className, false, new URLClassLoader(cp)) - () - } -} From 0802e102acb83595209b8630d4137504531cf389 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:19:54 -0400 Subject: [PATCH 61/70] Port tests/fork --- sbt/src/sbt-test/tests/fork/build.sbt | 31 ++++++++++++++++ .../tests/fork/project/ForkTestsTest.scala | 35 ------------------- 2 files changed, 31 insertions(+), 35 deletions(-) create mode 100755 sbt/src/sbt-test/tests/fork/build.sbt delete mode 100755 sbt/src/sbt-test/tests/fork/project/ForkTestsTest.scala diff --git a/sbt/src/sbt-test/tests/fork/build.sbt b/sbt/src/sbt-test/tests/fork/build.sbt new file mode 100755 index 000000000..1b13dcba2 --- /dev/null +++ b/sbt/src/sbt-test/tests/fork/build.sbt @@ -0,0 +1,31 @@ +import Tests._ +import Defaults._ + +val groupSize = 3 +val groups = 3 + +val check = TaskKey[Unit]("check", "Check all files were created and remove them.") + +def groupId(idx: Int) = "group_" + (idx + 1) +def groupPrefix(idx: Int) = groupId(idx) + "_file_" + +lazy val root = (project in file(".")). + settings( + scalaVersion := "2.9.2", + testGrouping in Test <<= definedTests in Test map { tests => + assert(tests.size == 3) + for (idx <- 0 until groups) yield + new Group(groupId(idx), tests, SubProcess(Seq("-Dgroup.prefix=" + groupPrefix(idx)))) + }, + check := { + val files = + for(i <- 0 until groups; j <- 1 to groupSize) yield + file(groupPrefix(i) + j) + val (exist, absent) = files.partition(_.exists) + exist.foreach(_.delete()) + if(absent.nonEmpty) + sys.error("Files were not created:\n\t" + absent.mkString("\n\t")) + }, + concurrentRestrictions := Tags.limit(Tags.ForkedTestGroup, 2) :: Nil, + libraryDependencies += "org.scalatest" %% "scalatest" % "1.8" % Test + ) diff --git a/sbt/src/sbt-test/tests/fork/project/ForkTestsTest.scala b/sbt/src/sbt-test/tests/fork/project/ForkTestsTest.scala deleted file mode 100755 index b48595c6b..000000000 --- a/sbt/src/sbt-test/tests/fork/project/ForkTestsTest.scala +++ /dev/null @@ -1,35 +0,0 @@ -import sbt._ -import Keys._ -import Tests._ -import Defaults._ -import Import._ - -object ForkTestsTest extends Build { - val groupSize = 3 - val groups = 3 - - val check = TaskKey[Unit]("check", "Check all files were created and remove them.") - - def groupId(idx: Int) = "group_" + (idx + 1) - def groupPrefix(idx: Int) = groupId(idx) + "_file_" - - lazy val root = Project("root", file("."), settings = defaultSettings ++ Seq( - scalaVersion := "2.9.2", - testGrouping in Test <<= definedTests in Test map { tests => - assert(tests.size == 3) - for (idx <- 0 until groups) yield - new Group(groupId(idx), tests, SubProcess(Seq("-Dgroup.prefix=" + groupPrefix(idx)))) - }, - check := { - val files = - for(i <- 0 until groups; j <- 1 to groupSize) yield - file(groupPrefix(i) + j) - val (exist, absent) = files.partition(_.exists) - exist.foreach(_.delete()) - if(absent.nonEmpty) - sys.error("Files were not created:\n\t" + absent.mkString("\n\t")) - }, - concurrentRestrictions := Tags.limit(Tags.ForkedTestGroup, 2) :: Nil, - libraryDependencies += "org.scalatest" %% "scalatest" % "1.8" % "test" - )) -} From 248766afac1aa5d6591650a310c34504ac393779 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:21:45 -0400 Subject: [PATCH 62/70] Port tests/fork-parallel --- .../sbt-test/tests/fork-parallel/build.sbt | 24 ++++++++++++++++ .../project/ForkParallelTest.scala | 28 ------------------- 2 files changed, 24 insertions(+), 28 deletions(-) create mode 100644 sbt/src/sbt-test/tests/fork-parallel/build.sbt delete mode 100644 sbt/src/sbt-test/tests/fork-parallel/project/ForkParallelTest.scala diff --git a/sbt/src/sbt-test/tests/fork-parallel/build.sbt b/sbt/src/sbt-test/tests/fork-parallel/build.sbt new file mode 100644 index 000000000..bfa90d309 --- /dev/null +++ b/sbt/src/sbt-test/tests/fork-parallel/build.sbt @@ -0,0 +1,24 @@ +import Tests._ +import Defaults._ + +val check = taskKey[Unit]("Check that tests are executed in parallel") + +lazy val root = (project in file(".")). + settings( + scalaVersion := "2.9.2", + libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test", + fork in Test := true, + check := { + val nbProc = java.lang.Runtime.getRuntime().availableProcessors() + if( nbProc < 4 ) { + streams.value.log.warn("With fewer than 4 processors this test is meaningless") + } else { + // we've got at least 4 processors, we'll check the upper end but also 3 and 4 as the upper might not + // be reached if the system is under heavy load. + if( ! (file("max-concurrent-tests_3").exists() || file("max-concurrent-tests_4").exists() || + file("max-concurrent-tests_" + (nbProc -1)).exists() || file("max-concurrent-tests_" + nbProc).exists())) { + sys.error("Forked tests were not executed in parallel!") + } + } + } + ) diff --git a/sbt/src/sbt-test/tests/fork-parallel/project/ForkParallelTest.scala b/sbt/src/sbt-test/tests/fork-parallel/project/ForkParallelTest.scala deleted file mode 100644 index 770857b6e..000000000 --- a/sbt/src/sbt-test/tests/fork-parallel/project/ForkParallelTest.scala +++ /dev/null @@ -1,28 +0,0 @@ -import sbt._ -import Keys._ -import Tests._ -import Defaults._ -import Import._ - -object ForkParallelTest extends Build { - val check = taskKey[Unit]("Check that tests are executed in parallel") - - lazy val root = Project("root", file("."), settings = defaultSettings ++ Seq( - scalaVersion := "2.9.2", - libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test", - fork in Test := true, - check := { - val nbProc = java.lang.Runtime.getRuntime().availableProcessors() - if( nbProc < 4 ) { - streams.value.log.warn("With fewer than 4 processors this test is meaningless") - } else { - // we've got at least 4 processors, we'll check the upper end but also 3 and 4 as the upper might not - // be reached if the system is under heavy load. - if( ! (file("max-concurrent-tests_3").exists() || file("max-concurrent-tests_4").exists() || - file("max-concurrent-tests_" + (nbProc -1)).exists() || file("max-concurrent-tests_" + nbProc).exists())) { - sys.error("Forked tests were not executed in parallel!") - } - } - } - )) -} \ No newline at end of file From ef511d7582e6c1ab038d524dedf1dd38cafe90fe Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:25:31 -0400 Subject: [PATCH 63/70] Port tests/it --- sbt/src/sbt-test/tests/it/build.sbt | 8 ++++++++ sbt/src/sbt-test/tests/it/project/B.scala | 15 --------------- 2 files changed, 8 insertions(+), 15 deletions(-) create mode 100644 sbt/src/sbt-test/tests/it/build.sbt delete mode 100644 sbt/src/sbt-test/tests/it/project/B.scala diff --git a/sbt/src/sbt-test/tests/it/build.sbt b/sbt/src/sbt-test/tests/it/build.sbt new file mode 100644 index 000000000..3903021d9 --- /dev/null +++ b/sbt/src/sbt-test/tests/it/build.sbt @@ -0,0 +1,8 @@ +lazy val root = (project in file(".")). + configs(IntegrationTest). + settings( + Defaults.itSettings, + libraryDependencies += specs + ) + +lazy val specs = "org.specs2" % "specs2_2.10" % "1.12.3" % IntegrationTest diff --git a/sbt/src/sbt-test/tests/it/project/B.scala b/sbt/src/sbt-test/tests/it/project/B.scala deleted file mode 100644 index 780cee9e5..000000000 --- a/sbt/src/sbt-test/tests/it/project/B.scala +++ /dev/null @@ -1,15 +0,0 @@ - import sbt._ - import Keys._ - import Import._ - -object B extends Build -{ - lazy val IntegrationTest = config("it") extend(Test) - lazy val root = - Project("root", file(".")) - .configs( IntegrationTest ) - .settings( Defaults.itSettings : _*) - .settings( libraryDependencies += specs ) - - lazy val specs = "org.specs2" % "specs2_2.10" % "1.12.3" % "test" -} From 1a8149568e84732c25ccc8b353be4a5806c00ad2 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:28:48 -0400 Subject: [PATCH 64/70] Port tests/junit-xml-report --- .../sbt-test/tests/junit-xml-report/build.sbt | 38 +++++++++++++++++ .../project/JUnitXmlReportTest.scala | 42 ------------------- 2 files changed, 38 insertions(+), 42 deletions(-) create mode 100644 sbt/src/sbt-test/tests/junit-xml-report/build.sbt delete mode 100644 sbt/src/sbt-test/tests/junit-xml-report/project/JUnitXmlReportTest.scala diff --git a/sbt/src/sbt-test/tests/junit-xml-report/build.sbt b/sbt/src/sbt-test/tests/junit-xml-report/build.sbt new file mode 100644 index 000000000..9ae00779f --- /dev/null +++ b/sbt/src/sbt-test/tests/junit-xml-report/build.sbt @@ -0,0 +1,38 @@ +import scala.xml.XML +import Tests._ +import Defaults._ + +val checkReport = taskKey[Unit]("Check the test reports") +val checkNoReport = taskKey[Unit]("Check that no reports are present") + +val oneSecondReportFile = "target/test-reports/a.pkg.OneSecondTest.xml" +val failingReportFile = "target/test-reports/another.pkg.FailingTest.xml" + +lazy val root = (project in file(".")). + settings( + scalaVersion := "2.9.2", + libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test", + + // TODO use matchers instead of sys.error + checkReport := { + val oneSecondReport = XML.loadFile(oneSecondReportFile) + if( oneSecondReport.label != "testsuite" ) sys.error("Report should have a root element.") + // somehow the 'success' event doesn't go through... TODO investigate +// if( (oneSecondReport \ "@time").text.toFloat < 1f ) sys.error("expected test to take at least 1 sec") + if( (oneSecondReport \ "@name").text != "a.pkg.OneSecondTest" ) sys.error("wrong test name: " + (oneSecondReport \ "@name").text) + // TODO more checks + + val failingReport = XML.loadFile(failingReportFile) + if( failingReport.label != "testsuite" ) sys.error("Report should have a root element.") + if( (failingReport \ "@failures").text != "2" ) sys.error("expected 2 failures") + if( (failingReport \ "@name").text != "another.pkg.FailingTest" ) sys.error("wrong test name: " + (failingReport \ "@name").text) + // TODO more checks -> the two test cases with time etc.. + + // TODO check console output is in the report + }, + + checkNoReport := { + if( file(oneSecondReportFile).exists() ) sys.error(oneSecondReportFile + " should not exist") + if( file(failingReportFile).exists() ) sys.error(failingReportFile + " should not exist") + } + ) diff --git a/sbt/src/sbt-test/tests/junit-xml-report/project/JUnitXmlReportTest.scala b/sbt/src/sbt-test/tests/junit-xml-report/project/JUnitXmlReportTest.scala deleted file mode 100644 index 42110dda6..000000000 --- a/sbt/src/sbt-test/tests/junit-xml-report/project/JUnitXmlReportTest.scala +++ /dev/null @@ -1,42 +0,0 @@ -import sbt._ -import Keys._ -import scala.xml.XML -import Tests._ -import Defaults._ -import Import._ - -object JUnitXmlReportTest extends Build { - val checkReport = taskKey[Unit]("Check the test reports") - val checkNoReport = taskKey[Unit]("Check that no reports are present") - - private val oneSecondReportFile = "target/test-reports/a.pkg.OneSecondTest.xml" - private val failingReportFile = "target/test-reports/another.pkg.FailingTest.xml" - - lazy val root = Project("root", file("."), settings = defaultSettings ++ Seq( - scalaVersion := "2.9.2", - libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test", - - // TODO use matchers instead of sys.error - checkReport := { - val oneSecondReport = XML.loadFile(oneSecondReportFile) - if( oneSecondReport.label != "testsuite" ) sys.error("Report should have a root element.") - // somehow the 'success' event doesn't go through... TODO investigate -// if( (oneSecondReport \ "@time").text.toFloat < 1f ) sys.error("expected test to take at least 1 sec") - if( (oneSecondReport \ "@name").text != "a.pkg.OneSecondTest" ) sys.error("wrong test name: " + (oneSecondReport \ "@name").text) - // TODO more checks - - val failingReport = XML.loadFile(failingReportFile) - if( failingReport.label != "testsuite" ) sys.error("Report should have a root element.") - if( (failingReport \ "@failures").text != "2" ) sys.error("expected 2 failures") - if( (failingReport \ "@name").text != "another.pkg.FailingTest" ) sys.error("wrong test name: " + (failingReport \ "@name").text) - // TODO more checks -> the two test cases with time etc.. - - // TODO check console output is in the report - }, - - checkNoReport := { - if( file(oneSecondReportFile).exists() ) sys.error(oneSecondReportFile + " should not exist") - if( file(failingReportFile).exists() ) sys.error(failingReportFile + " should not exist") - } - )) -} \ No newline at end of file From 85b9a78245d87a09a12d28776cf5bf9303bd1e59 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:33:48 -0400 Subject: [PATCH 65/70] Port tests/serial --- sbt/src/sbt-test/tests/serial/build.sbt | 27 +++++++++++++++++++ .../sbt-test/tests/serial/project/Build.scala | 17 ------------ 2 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 sbt/src/sbt-test/tests/serial/build.sbt delete mode 100644 sbt/src/sbt-test/tests/serial/project/Build.scala diff --git a/sbt/src/sbt-test/tests/serial/build.sbt b/sbt/src/sbt-test/tests/serial/build.sbt new file mode 100644 index 000000000..394f0b27c --- /dev/null +++ b/sbt/src/sbt-test/tests/serial/build.sbt @@ -0,0 +1,27 @@ +val commonSettings = Seq( + libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % "test" +) + +lazy val root = (project in file(".")). + aggregate(sub1, sub2). + settings(inThisBuild(List( + organization := "com.softwaremill", + version := "0.0.1-SNAPSHOT", + scalaVersion := "2.10.0" + )), + commonSettings + ) + +lazy val rootRef = LocalProject("root") + +lazy val sub1 = project. + dependsOn(rootRef). + settings( + commonSettings + ) + +lazy val sub2 = project. + dependsOn(rootRef). + settings( + commonSettings + ) diff --git a/sbt/src/sbt-test/tests/serial/project/Build.scala b/sbt/src/sbt-test/tests/serial/project/Build.scala deleted file mode 100644 index 2375b6e09..000000000 --- a/sbt/src/sbt-test/tests/serial/project/Build.scala +++ /dev/null @@ -1,17 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object SomeBuild extends Build { - val buildSettings = Seq( - organization := "com.softwaremill", - version := "0.0.1-SNAPSHOT", - scalaVersion := "2.10.0", - libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % "test" - ) - - lazy val parent: Project = Project("root", file("."), aggregate = Seq(sub1,sub2)).settings(buildSettings : _*) - - lazy val sub1: Project = Project("sub1", file("sub1")).settings(buildSettings : _*).dependsOn(parent) - lazy val sub2: Project = Project("sub2", file("sub2")).settings(buildSettings : _*).dependsOn(parent) -} From f934ba0211e78047352f34f895c5e46a71222ff6 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:35:37 -0400 Subject: [PATCH 66/70] Port tests/t543 --- sbt/src/sbt-test/tests/t543/build.sbt | 33 +++++++++++++++++ .../tests/t543/project/Ticket543Test.scala | 37 ------------------- 2 files changed, 33 insertions(+), 37 deletions(-) create mode 100755 sbt/src/sbt-test/tests/t543/build.sbt delete mode 100755 sbt/src/sbt-test/tests/t543/project/Ticket543Test.scala diff --git a/sbt/src/sbt-test/tests/t543/build.sbt b/sbt/src/sbt-test/tests/t543/build.sbt new file mode 100755 index 000000000..b136fe30c --- /dev/null +++ b/sbt/src/sbt-test/tests/t543/build.sbt @@ -0,0 +1,33 @@ +import Tests._ +import Defaults._ +import java.io.{ CharArrayWriter, PrintWriter } + +val marker = new File("marker") +val check = TaskKey[Unit]("check", "Check correct error has been returned.") + +lazy val root = (project in file(".")). + settings( + libraryDependencies += "org.scalatest" %% "scalatest" % "1.8" % Test, + scalaVersion := "2.9.2", + fork := true, + testListeners += new TestReportListener { + def testEvent(event: TestEvent): Unit = { + for (e <- event.detail.filter(_.status == sbt.testing.Status.Failure)) { + if (e.throwable != null && e.throwable.isDefined) { + val caw = new CharArrayWriter + e.throwable.get.printStackTrace(new PrintWriter(caw)) + if (caw.toString.contains("Test.scala:")) + marker.createNewFile() + } + } + } + def startGroup(name: String): Unit = () + def endGroup(name: String, t: Throwable): Unit = () + def endGroup(name: String, result: TestResult.Value): Unit = () + }, + check := { + val exists = marker.exists + marker.delete() + if (!exists) sys.error("Null or invalid error had been returned previously") + } + ) diff --git a/sbt/src/sbt-test/tests/t543/project/Ticket543Test.scala b/sbt/src/sbt-test/tests/t543/project/Ticket543Test.scala deleted file mode 100755 index 91f2dc14d..000000000 --- a/sbt/src/sbt-test/tests/t543/project/Ticket543Test.scala +++ /dev/null @@ -1,37 +0,0 @@ -import sbt._ -import Keys._ -import Tests._ -import Defaults._ -import java.io.{ CharArrayWriter, PrintWriter } -import Import._ - -object Ticket543Test extends Build { - val marker = new File("marker") - val check = TaskKey[Unit]("check", "Check correct error has been returned.") - - lazy val root = Project("root", file("."), settings = defaultSettings ++ Seq( - libraryDependencies += "org.scalatest" %% "scalatest" % "1.8" % "test", - scalaVersion := "2.9.2", - fork := true, - testListeners += new TestReportListener { - def testEvent(event: TestEvent): Unit = { - for (e <- event.detail.filter(_.status == sbt.testing.Status.Failure)) { - if (e.throwable != null && e.throwable.isDefined) { - val caw = new CharArrayWriter - e.throwable.get.printStackTrace(new PrintWriter(caw)) - if (caw.toString.contains("Test.scala:")) - marker.createNewFile() - } - } - } - def startGroup(name: String): Unit = () - def endGroup(name: String, t: Throwable): Unit = () - def endGroup(name: String, result: TestResult.Value): Unit = () - }, - check := { - val exists = marker.exists - marker.delete() - if (!exists) sys.error("Null or invalid error had been returned previously") - } - )) -} From ee17a8586c4899fd938ea810d3804e21272ec2cd Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:39:47 -0400 Subject: [PATCH 67/70] Port tests/test-exclude --- sbt/src/sbt-test/tests/test-exclude/build.sbt | 5 +++++ .../sbt-test/tests/test-exclude/project/Build.scala | 11 ----------- 2 files changed, 5 insertions(+), 11 deletions(-) create mode 100644 sbt/src/sbt-test/tests/test-exclude/build.sbt delete mode 100644 sbt/src/sbt-test/tests/test-exclude/project/Build.scala diff --git a/sbt/src/sbt-test/tests/test-exclude/build.sbt b/sbt/src/sbt-test/tests/test-exclude/build.sbt new file mode 100644 index 000000000..002dbaaa9 --- /dev/null +++ b/sbt/src/sbt-test/tests/test-exclude/build.sbt @@ -0,0 +1,5 @@ +lazy val root = (project in file(".")). + settings( + libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % Test, + parallelExecution in test := false + ) diff --git a/sbt/src/sbt-test/tests/test-exclude/project/Build.scala b/sbt/src/sbt-test/tests/test-exclude/project/Build.scala deleted file mode 100644 index 8bf190e36..000000000 --- a/sbt/src/sbt-test/tests/test-exclude/project/Build.scala +++ /dev/null @@ -1,11 +0,0 @@ -import sbt._ -import Keys._ -import Defaults._ -import Import._ - -object B extends Build { - lazy val root = Project("root", file("."), settings = defaultSettings ++ Seq( - libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % "test", - parallelExecution in test := false - )) -} From 259b6ccb17d93df361ebbc7f002b0e982ac3e15f Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 02:39:54 -0400 Subject: [PATCH 68/70] Port tests/test-quick --- sbt/src/sbt-test/tests/test-quick/build.sbt | 5 +++++ sbt/src/sbt-test/tests/test-quick/project/Build.scala | 11 ----------- 2 files changed, 5 insertions(+), 11 deletions(-) create mode 100755 sbt/src/sbt-test/tests/test-quick/build.sbt delete mode 100755 sbt/src/sbt-test/tests/test-quick/project/Build.scala diff --git a/sbt/src/sbt-test/tests/test-quick/build.sbt b/sbt/src/sbt-test/tests/test-quick/build.sbt new file mode 100755 index 000000000..002dbaaa9 --- /dev/null +++ b/sbt/src/sbt-test/tests/test-quick/build.sbt @@ -0,0 +1,5 @@ +lazy val root = (project in file(".")). + settings( + libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % Test, + parallelExecution in test := false + ) diff --git a/sbt/src/sbt-test/tests/test-quick/project/Build.scala b/sbt/src/sbt-test/tests/test-quick/project/Build.scala deleted file mode 100755 index 8bf190e36..000000000 --- a/sbt/src/sbt-test/tests/test-quick/project/Build.scala +++ /dev/null @@ -1,11 +0,0 @@ -import sbt._ -import Keys._ -import Defaults._ -import Import._ - -object B extends Build { - lazy val root = Project("root", file("."), settings = defaultSettings ++ Seq( - libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % "test", - parallelExecution in test := false - )) -} From e57215e2407aaee751b0752498d950c66b3e993e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 13:11:42 -0400 Subject: [PATCH 69/70] Fix test --- main/src/test/scala/PluginCommandTest.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main/src/test/scala/PluginCommandTest.scala b/main/src/test/scala/PluginCommandTest.scala index 93aa6bb6a..53fa82c3b 100644 --- a/main/src/test/scala/PluginCommandTest.scala +++ b/main/src/test/scala/PluginCommandTest.scala @@ -4,6 +4,7 @@ import java.io._ import org.specs2.mutable.Specification +import sbt.internal.{ Load, BuildDef } import sbt.internal.util.{ AttributeEntry, AttributeMap, ConsoleOut, GlobalLogging, MainLogging, Settings } object PluginCommandTestPlugin0 extends AutoPlugin @@ -83,7 +84,7 @@ object FakeState { val pluginData = PluginData(Nil, Nil, None, None, Nil) val detectedModules: DetectedModules[Plugin] = new DetectedModules(Nil) - val builds: DetectedModules[Build] = new DetectedModules[Build](Nil) + val builds: DetectedModules[BuildDef] = new DetectedModules[BuildDef](Nil) val detectedAutoPlugins: Seq[DetectedAutoPlugin] = plugins.map(p => DetectedAutoPlugin(p.label, p, hasAutoImport = false)) val detectedPlugins = new DetectedPlugins(detectedModules, detectedAutoPlugins, builds) From 7bc903446cf989621a277b7fc0d8fe8f8d66b2d1 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 29 Mar 2016 13:17:33 -0400 Subject: [PATCH 70/70] Port dependency-management/invalidate-internal --- .../invalidate-internal/build.sbt | 3 +++ .../invalidate-internal/project/P.scala | 10 ---------- 2 files changed, 3 insertions(+), 10 deletions(-) create mode 100644 sbt/src/sbt-test/dependency-management/invalidate-internal/build.sbt delete mode 100644 sbt/src/sbt-test/dependency-management/invalidate-internal/project/P.scala diff --git a/sbt/src/sbt-test/dependency-management/invalidate-internal/build.sbt b/sbt/src/sbt-test/dependency-management/invalidate-internal/build.sbt new file mode 100644 index 000000000..62c457182 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/invalidate-internal/build.sbt @@ -0,0 +1,3 @@ +lazy val root = (project in file(".")) +lazy val a = project.dependsOn(b) +lazy val b = project diff --git a/sbt/src/sbt-test/dependency-management/invalidate-internal/project/P.scala b/sbt/src/sbt-test/dependency-management/invalidate-internal/project/P.scala deleted file mode 100644 index b427fc2ba..000000000 --- a/sbt/src/sbt-test/dependency-management/invalidate-internal/project/P.scala +++ /dev/null @@ -1,10 +0,0 @@ -import sbt._ -import Keys._ -import Import._ - -object P extends Build -{ - lazy val root = Project("root", file(".")) - lazy val a = Project("a", file("a")) dependsOn(b) - lazy val b = Project("b", file("b")) -} \ No newline at end of file