Skip to content

Commit 46f33e1

Browse files
authored
Add new mechanism for resolving scoped buildOptions (#2274)
1 parent 94e437d commit 46f33e1

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

modules/build/src/main/scala/scala/build/ScopedSources.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,20 @@ final case class ScopedSources(
99
resourceDirs: Seq[HasScope[os.Path]],
1010
buildOptions: Seq[HasScope[BuildOptions]]
1111
) {
12+
def buildOptionsFor(scope: Scope): Seq[BuildOptions] =
13+
scope match {
14+
case Scope.Test => buildOptions.flatMap(_.valueFor(Scope.Test).toSeq) ++
15+
buildOptions.flatMap(_.valueFor(Scope.Main).toSeq)
16+
case _ => buildOptions.flatMap(_.valueFor(scope).toSeq)
17+
}
18+
1219
def sources(scope: Scope, baseOptions: BuildOptions): Sources =
1320
Sources(
1421
paths.flatMap(_.valueFor(scope).toSeq),
1522
inMemory.flatMap(_.valueFor(scope).toSeq),
1623
defaultMainClass,
1724
resourceDirs.flatMap(_.valueFor(scope).toSeq),
18-
buildOptions
19-
.flatMap(_.valueFor(scope).toSeq)
25+
buildOptionsFor(scope)
2026
.foldRight(baseOptions)(_ orElse _)
2127
)
2228
}

modules/build/src/test/scala/scala/build/tests/DirectiveTests.scala

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ import com.eed3si9n.expecty.Expecty.expect
44

55
import java.io.IOException
66
import scala.build.{Build, BuildThreads, Directories, LocalRepo, Position, Positioned}
7-
import scala.build.options.{BuildOptions, InternalOptions, MaybeScalaVersion, ScalacOpt, Scope}
7+
import scala.build.options.{
8+
BuildOptions,
9+
InternalOptions,
10+
MaybeScalaVersion,
11+
ScalaOptions,
12+
ScalacOpt,
13+
Scope
14+
}
815
import scala.build.tests.util.BloopServer
916
import build.Ops.EitherThrowOps
1017
import dependency.AnyDependency
@@ -472,4 +479,25 @@ class DirectiveTests extends munit.FunSuite {
472479
}
473480
}
474481
}
482+
483+
test("main scope dependencies propagate to test scope") {
484+
val Scala322Options = baseOptions.copy(scalaOptions =
485+
ScalaOptions(
486+
scalaVersion = Some(MaybeScalaVersion("3.2.2"))
487+
)
488+
)
489+
490+
val testInputs = TestInputs(
491+
os.rel / "simple.sc" ->
492+
"""//> using target.scala 3.2.2
493+
|//> using dep com.lihaoyi::os-lib:0.9.1
494+
|""".stripMargin,
495+
os.rel / "test" / "test.sc" ->
496+
"""println(os.list(os.pwd))
497+
|""".stripMargin
498+
)
499+
testInputs.withBuild(Scala322Options, buildThreads, bloopConfigOpt, scope = Scope.Test) {
500+
(root, _, maybeBuild) => expect(maybeBuild.exists(_.success))
501+
}
502+
}
475503
}

0 commit comments

Comments
 (0)