Skip to content

Commit 1a97fc5

Browse files
committed
Use FileAlg#isDirectory in metaBuildsCount
This allows to remove the `Math.max(..., 1)` call since our tests actually count the `project` directories that are present in `MockState`.
1 parent ae2a739 commit 1a97fc5

File tree

4 files changed

+23
-16
lines changed

4 files changed

+23
-16
lines changed

modules/core/src/main/scala/org/scalasteward/core/buildtool/sbt/SbtAlg.scala

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,24 @@ final class SbtAlg[F[_]](config: Config)(implicit
5151
version = maybeProperties.flatMap(parser.parseBuildProperties)
5252
} yield version
5353

54+
private def metaBuildsCount(buildRootDir: File): F[Int] =
55+
fs2.Stream
56+
.iterate(buildRootDir / project)(_ / project)
57+
.take(5L) // Use an upper bound for the meta-builds count to prevent DOS attacks.
58+
.evalMap(fileAlg.isDirectory)
59+
.takeWhile(identity)
60+
.compile
61+
.count
62+
.map(_.toInt)
63+
5464
override def getDependencies(buildRoot: BuildRoot): F[List[Scope.Dependencies]] =
5565
for {
5666
buildRootDir <- workspaceAlg.buildRootDir(buildRoot)
5767
maybeSbtVersion <- getSbtVersion(buildRootDir)
58-
metaBuilds = Math.max(
59-
LazyList
60-
.iterate(buildRootDir / project)(_ / project)
61-
.takeWhile(p => p.exists && p.isDirectory)
62-
.size,
63-
1 // There is always at least one meta build, even if there is no project folder
64-
)
68+
metaBuilds <- metaBuildsCount(buildRootDir)
6569
lines <- addStewardPluginTemporarily(buildRootDir, maybeSbtVersion, metaBuilds).surround {
66-
val commands = Nel.of(crossStewardDependencies) ++ List
67-
.fill(metaBuilds)(List(reloadPlugins, stewardDependencies))
68-
.flatten
70+
val commands = Nel.of(crossStewardDependencies) ++
71+
List.fill(metaBuilds)(List(reloadPlugins, stewardDependencies)).flatten
6972
sbt(commands, buildRootDir)
7073
}
7174
dependencies = parser.parseDependencies(lines)

modules/core/src/test/scala/org/scalasteward/core/buildtool/BuildToolDispatcherTest.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class BuildToolDispatcherTest extends FunSuite {
5555
),
5656
Log("Get dependencies in . from sbt"),
5757
Cmd("read", s"$repoDir/project/build.properties"),
58+
Cmd("test", "-d", s"$repoDir/project"),
59+
Cmd("test", "-d", s"$repoDir/project/project"),
5860
Cmd("read", "classpath:StewardPlugin_1_0_0.scala"),
5961
Cmd("write", s"$repoDir/project/scala-steward-StewardPlugin_1_0_0.scala"),
6062
Cmd("write", s"$repoDir/project/project/scala-steward-StewardPlugin_1_0_0.scala"),

modules/core/src/test/scala/org/scalasteward/core/buildtool/sbt/SbtAlgTest.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,18 @@ class SbtAlgTest extends FunSuite {
1515
private val workspace = workspaceAlg.rootDir.unsafeRunSync()
1616

1717
test("getDependencies") {
18-
val repo = Repo("typelevel", "cats")
18+
val repo = Repo("sbt-alg", "test-1")
1919
val buildRoot = BuildRoot(repo, ".")
2020
val repoDir = workspaceAlg.repoDir(repo).unsafeRunSync()
21-
val files = Map(repoDir / "project" / "build.properties" -> "sbt.version=1.3.6")
22-
val initial = MockState.empty.copy(files = files)
21+
val initial = MockState.empty
22+
.addFiles(repoDir / "project" / "build.properties" -> "sbt.version=1.3.11")
23+
.unsafeRunSync()
2324
val state = sbtAlg.getDependencies(buildRoot).runS(initial).unsafeRunSync()
2425
val expected = initial.copy(
2526
trace = Vector(
2627
Cmd("read", s"$repoDir/project/build.properties"),
28+
Cmd("test", "-d", s"$repoDir/project"),
29+
Cmd("test", "-d", s"$repoDir/project/project"),
2730
Cmd("read", "classpath:StewardPlugin_1_3_11.scala"),
2831
Cmd("write", s"$repoDir/project/scala-steward-StewardPlugin_1_3_11.scala"),
2932
Cmd("write", s"$repoDir/project/project/scala-steward-StewardPlugin_1_3_11.scala"),

modules/core/src/test/scala/org/scalasteward/core/buildtool/scalacli/ScalaCliAlgTest.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ class ScalaCliAlgTest extends CatsEffectSuite {
4949
repoDir.toString
5050
),
5151
Cmd("read", s"$sbtBuildDir/project/build.properties"),
52+
Cmd("test", "-d", s"$sbtBuildDir/project"),
5253
Cmd("read", "classpath:StewardPlugin_1_3_11.scala"),
5354
Cmd("write", s"$sbtBuildDir/project/scala-steward-StewardPlugin_1_3_11.scala"),
54-
Cmd("write", s"$sbtBuildDir/project/project/scala-steward-StewardPlugin_1_3_11.scala"),
5555
Cmd(
5656
sbtBuildDir.toString,
5757
"firejail",
@@ -63,9 +63,8 @@ class ScalaCliAlgTest extends CatsEffectSuite {
6363
"-Dsbt.color=false",
6464
"-Dsbt.log.noformat=true",
6565
"-Dsbt.supershell=false",
66-
s";$crossStewardDependencies;$reloadPlugins;$stewardDependencies"
66+
s";$crossStewardDependencies"
6767
),
68-
Cmd("rm", "-rf", s"$sbtBuildDir/project/project/scala-steward-StewardPlugin_1_3_11.scala"),
6968
Cmd("rm", "-rf", s"$sbtBuildDir/project/scala-steward-StewardPlugin_1_3_11.scala"),
7069
Cmd("rm", "-rf", s"$sbtBuildDir")
7170
)

0 commit comments

Comments
 (0)