From fea7ceb304bc64f010500b5457ef34c5977ac4bc Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Tue, 20 Apr 2021 16:28:02 +0100 Subject: [PATCH 1/2] findAll() implementation --- .../scala/sbt/internal/ProjectMatrix.scala | 6 +++ src/sbt-test/projectMatrix/finder/build.sbt | 45 +++++++++++++++++++ .../finder/project/ConfigAxis.scala | 3 ++ .../projectMatrix/finder/project/plugins.sbt | 7 +++ src/sbt-test/projectMatrix/finder/test | 2 + 5 files changed, 63 insertions(+) create mode 100644 src/sbt-test/projectMatrix/finder/build.sbt create mode 100644 src/sbt-test/projectMatrix/finder/project/ConfigAxis.scala create mode 100644 src/sbt-test/projectMatrix/finder/project/plugins.sbt create mode 100644 src/sbt-test/projectMatrix/finder/test diff --git a/src/main/scala/sbt/internal/ProjectMatrix.scala b/src/main/scala/sbt/internal/ProjectMatrix.scala index f7d7ab2fd..602773484 100644 --- a/src/main/scala/sbt/internal/ProjectMatrix.scala +++ b/src/main/scala/sbt/internal/ProjectMatrix.scala @@ -121,6 +121,7 @@ sealed trait ProjectMatrix extends CompositeProject { def filterProjects(axisValues: Seq[VirtualAxis]): Seq[Project] def filterProjects(autoScalaLibrary: Boolean, axisValues: Seq[VirtualAxis]): Seq[Project] def finder(axisValues: VirtualAxis*): ProjectFinder + def findAll(): Map[Project, Seq[VirtualAxis]] // resolve to the closest match for the given row private[sbt] def resolveMatch(thatRow: ProjectMatrix.ProjectRow): ProjectReference @@ -485,6 +486,11 @@ object ProjectMatrix { override def finder(axisValues: VirtualAxis*): ProjectFinder = new AxisBaseProjectFinder(axisValues.toSeq) + override def findAll(): Map[Project, Seq[VirtualAxis]] = + resolvedMappings.map { case(row, project) => + project -> row.axisValues + } + def copy( id: String = id, base: sbt.File = base, diff --git a/src/sbt-test/projectMatrix/finder/build.sbt b/src/sbt-test/projectMatrix/finder/build.sbt new file mode 100644 index 000000000..d03bdf823 --- /dev/null +++ b/src/sbt-test/projectMatrix/finder/build.sbt @@ -0,0 +1,45 @@ +lazy val scala213 = "2.13.3" +lazy val scala212 = "2.12.12" +lazy val check = taskKey[Unit]("") + + +lazy val config12 = ConfigAxis("Config1_2", "config1.2") +lazy val config13 = ConfigAxis("Config1_3", "config1.3") + +lazy val root = (project in file(".")) + .aggregate((core.projectRefs ++ custom.projectRefs):_*) + +lazy val core = (projectMatrix in file("core")) + .jvmPlatform(scalaVersions = Seq(scala213, scala212)) + .jsPlatform(scalaVersions = Seq(scala212)) + +lazy val custom = + (projectMatrix in file("custom")) + .customRow( + scalaVersions = Seq(scala212), + axisValues = Seq(config13, VirtualAxis.jvm), + _.settings() + ) + +check := { + val coreResults: Map[Project, Set[VirtualAxis]] = core.findAll().mapValues(_.toSet) + val customResults: Map[Project, Set[VirtualAxis]] = custom.findAll().mapValues(_.toSet) + + val isJvm = VirtualAxis.jvm + val isJs = VirtualAxis.js + val is213 = VirtualAxis.scalaPartialVersion(scala213) + val is212 = VirtualAxis.scalaPartialVersion(scala212) + + val coreSubProjects = Set( + core.jvm(scala213), core.jvm(scala212), + core.js(scala212) + ) + + assert(coreResults.keySet == coreSubProjects) + assert(coreResults(core.jvm(scala213)) == Set(isJvm, is213)) + assert(coreResults(core.jvm(scala212)) == Set(isJvm, is212)) + assert(coreResults(core.js(scala212)) == Set(isJs, is212)) + + assert(customResults.keySet == Set(custom.jvm(scala212))) + assert(customResults(custom.jvm(scala212)) == Set(isJvm, is212, config13)) +} diff --git a/src/sbt-test/projectMatrix/finder/project/ConfigAxis.scala b/src/sbt-test/projectMatrix/finder/project/ConfigAxis.scala new file mode 100644 index 000000000..bdabcb757 --- /dev/null +++ b/src/sbt-test/projectMatrix/finder/project/ConfigAxis.scala @@ -0,0 +1,3 @@ +import sbt._ + +case class ConfigAxis(idSuffix: String, directorySuffix: String) extends VirtualAxis.WeakAxis diff --git a/src/sbt-test/projectMatrix/finder/project/plugins.sbt b/src/sbt-test/projectMatrix/finder/project/plugins.sbt new file mode 100644 index 000000000..60a69f1df --- /dev/null +++ b/src/sbt-test/projectMatrix/finder/project/plugins.sbt @@ -0,0 +1,7 @@ +sys.props.get("plugin.version") match { + case Some(x) => addSbtPlugin("com.eed3si9n" % "sbt-projectmatrix" % x) + case _ => sys.error("""|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) +} + +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.3.0") diff --git a/src/sbt-test/projectMatrix/finder/test b/src/sbt-test/projectMatrix/finder/test new file mode 100644 index 000000000..e3bd83da1 --- /dev/null +++ b/src/sbt-test/projectMatrix/finder/test @@ -0,0 +1,2 @@ +> compile +> check From 02a630d5ae7c0194606ef84cc9f445d14a541244 Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Wed, 21 Apr 2021 18:50:02 +0100 Subject: [PATCH 2/2] rename to allProjects --- src/main/scala/sbt/internal/ProjectMatrix.scala | 6 +++--- src/sbt-test/projectMatrix/finder/build.sbt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/scala/sbt/internal/ProjectMatrix.scala b/src/main/scala/sbt/internal/ProjectMatrix.scala index 602773484..83c871721 100644 --- a/src/main/scala/sbt/internal/ProjectMatrix.scala +++ b/src/main/scala/sbt/internal/ProjectMatrix.scala @@ -121,7 +121,7 @@ sealed trait ProjectMatrix extends CompositeProject { def filterProjects(axisValues: Seq[VirtualAxis]): Seq[Project] def filterProjects(autoScalaLibrary: Boolean, axisValues: Seq[VirtualAxis]): Seq[Project] def finder(axisValues: VirtualAxis*): ProjectFinder - def findAll(): Map[Project, Seq[VirtualAxis]] + def allProjects(): Seq[(Project, Seq[VirtualAxis])] // resolve to the closest match for the given row private[sbt] def resolveMatch(thatRow: ProjectMatrix.ProjectRow): ProjectReference @@ -486,10 +486,10 @@ object ProjectMatrix { override def finder(axisValues: VirtualAxis*): ProjectFinder = new AxisBaseProjectFinder(axisValues.toSeq) - override def findAll(): Map[Project, Seq[VirtualAxis]] = + override def allProjects(): Seq[(Project, Seq[VirtualAxis])] = resolvedMappings.map { case(row, project) => project -> row.axisValues - } + }.toSeq def copy( id: String = id, diff --git a/src/sbt-test/projectMatrix/finder/build.sbt b/src/sbt-test/projectMatrix/finder/build.sbt index d03bdf823..a4e8632c2 100644 --- a/src/sbt-test/projectMatrix/finder/build.sbt +++ b/src/sbt-test/projectMatrix/finder/build.sbt @@ -22,8 +22,8 @@ lazy val custom = ) check := { - val coreResults: Map[Project, Set[VirtualAxis]] = core.findAll().mapValues(_.toSet) - val customResults: Map[Project, Set[VirtualAxis]] = custom.findAll().mapValues(_.toSet) + val coreResults: Map[Project, Set[VirtualAxis]] = core.allProjects().toMap.mapValues(_.toSet) + val customResults: Map[Project, Set[VirtualAxis]] = custom.allProjects().toMap.mapValues(_.toSet) val isJvm = VirtualAxis.jvm val isJs = VirtualAxis.js