diff --git a/main/src/main/scala/sbt/internal/Act.scala b/main/src/main/scala/sbt/internal/Act.scala index 6996b8cba..7d55433bc 100644 --- a/main/src/main/scala/sbt/internal/Act.scala +++ b/main/src/main/scala/sbt/internal/Act.scala @@ -216,7 +216,9 @@ object Act { case None => noValidKeys case Some(x) => success(x) val validFilter = structure.fold(isValid(data))(isValidForAggregate(data, _)) - selectFromValid(ss filter validFilter, default) + val valid = ss filter validFilter + val directlyDefined = valid filter isValid(data) + selectFromValid(if directlyDefined.nonEmpty then directlyDefined else valid, default) } private def isValidForAggregate( diff --git a/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/build.sbt b/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/build.sbt new file mode 100644 index 000000000..abb425764 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/build.sbt @@ -0,0 +1,11 @@ +ThisBuild / scalaVersion := "2.13.18" + +lazy val a = project + +lazy val b = project + .in(file(".")) + .settings( + libraryDependencies += "org.scalatest" %% "scalatest-funsuite" % "3.2.19" % Test + ) + .dependsOn(a) + .aggregate(a) diff --git a/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/src/test/scala/Test1.scala b/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/src/test/scala/Test1.scala new file mode 100644 index 000000000..82745d36f --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/src/test/scala/Test1.scala @@ -0,0 +1,7 @@ +package example + +import org.scalatest.funsuite.AnyFunSuite + +class Test1 extends AnyFunSuite { + fail("This test should fail") +} diff --git a/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/test b/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/test new file mode 100644 index 000000000..b15444cf8 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8772-root-project-testfull/test @@ -0,0 +1 @@ +-> testFull