Skip to content

Commit 645dd35

Browse files
[autofix.ci] apply automated fixes
1 parent 226fd24 commit 645dd35

File tree

5 files changed

+141
-59
lines changed

5 files changed

+141
-59
lines changed

main/util/src/mill/util/Util.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ object Util {
106106
char.toString * (targetLength - s.length) + s
107107
}
108108

109-
def renderSecondsSuffix(millis: Long) = (millis / 1000).toInt match {
109+
def renderSecondsSuffix(millis: Long): String = (millis / 1000).toInt match {
110110
case 0 => ""
111111
case n => s" ${n}s"
112112
}

scalalib/src/mill/scalalib/TestModuleUtil.scala

+61-43
Original file line numberDiff line numberDiff line change
@@ -175,52 +175,66 @@ private final class TestModuleUtil(
175175
private def runTestDefault(
176176
filteredClassLists: Seq[Seq[String]]
177177
)(implicit ctx: mill.api.Ctx) = {
178-
TestModuleUtil.withTestProgressTickerThread(filteredClassLists.map(_.size).sum)(body = workerResultSet => {
179-
filteredClassLists match {
180-
// When no tests at all are discovered, run at least one test JVM
181-
// process to go through the test framework setup/teardown logic
182-
case Nil => callTestRunnerSubprocess(Task.dest, Left(Nil), workerResultSet)
183-
case Seq(singleTestClassList) =>
184-
callTestRunnerSubprocess(Task.dest, Left(singleTestClassList), workerResultSet)
185-
case multipleTestClassLists =>
186-
val maxLength = multipleTestClassLists.length.toString.length
187-
val futures = multipleTestClassLists.zipWithIndex.map { case (testClassList, i) =>
188-
val groupPromptMessage = testClassList match {
189-
case Seq(single) => single
190-
case multiple =>
191-
TestModuleUtil.collapseTestClassNames(
192-
multiple
193-
).mkString(", ") + s", ${multiple.length} suites"
194-
}
178+
TestModuleUtil.withTestProgressTickerThread(filteredClassLists.map(_.size).sum)(body =
179+
workerResultSet => {
180+
filteredClassLists match {
181+
// When no tests at all are discovered, run at least one test JVM
182+
// process to go through the test framework setup/teardown logic
183+
case Nil => callTestRunnerSubprocess(Task.dest, Left(Nil), workerResultSet)
184+
case Seq(singleTestClassList) =>
185+
callTestRunnerSubprocess(Task.dest, Left(singleTestClassList), workerResultSet)
186+
case multipleTestClassLists =>
187+
val maxLength = multipleTestClassLists.length.toString.length
188+
val futures = multipleTestClassLists.zipWithIndex.map { case (testClassList, i) =>
189+
val groupPromptMessage = testClassList match {
190+
case Seq(single) => single
191+
case multiple =>
192+
TestModuleUtil.collapseTestClassNames(
193+
multiple
194+
).mkString(", ") + s", ${multiple.length} suites"
195+
}
195196

196-
val paddedIndex = mill.util.Util.leftPad(i.toString, maxLength, '0')
197-
val folderName = testClassList match {
198-
case Seq(single) => single
199-
case multiple =>
200-
s"group-$paddedIndex-${multiple.head}"
201-
}
197+
val paddedIndex = mill.util.Util.leftPad(i.toString, maxLength, '0')
198+
val folderName = testClassList match {
199+
case Seq(single) => single
200+
case multiple =>
201+
s"group-$paddedIndex-${multiple.head}"
202+
}
202203

203-
// set priority = -1 to always prioritize test subprocesses over normal Mill
204-
// tasks. This minimizes the number of blocked tasks since Mill tasks can be
205-
// blocked on test subprocesses, but not vice versa, so better to schedule
206-
// the test subprocesses first
207-
Task.fork.async(Task.dest / folderName, paddedIndex, groupPromptMessage, priority = -1) {
208-
logger =>
209-
(folderName, callTestRunnerSubprocess(Task.dest / folderName, Left(testClassList), workerResultSet))
204+
// set priority = -1 to always prioritize test subprocesses over normal Mill
205+
// tasks. This minimizes the number of blocked tasks since Mill tasks can be
206+
// blocked on test subprocesses, but not vice versa, so better to schedule
207+
// the test subprocesses first
208+
Task.fork.async(
209+
Task.dest / folderName,
210+
paddedIndex,
211+
groupPromptMessage,
212+
priority = -1
213+
) {
214+
logger =>
215+
(
216+
folderName,
217+
callTestRunnerSubprocess(
218+
Task.dest / folderName,
219+
Left(testClassList),
220+
workerResultSet
221+
)
222+
)
223+
}
210224
}
211-
}
212225

213-
val outputs = Task.fork.awaitAll(futures)
226+
val outputs = Task.fork.awaitAll(futures)
214227

215-
val (lefts, rights) = outputs.partitionMap {
216-
case (name, Left(v)) => Left(name + " " + v)
217-
case (name, Right((msg, results))) => Right((name + " " + msg, results))
218-
}
228+
val (lefts, rights) = outputs.partitionMap {
229+
case (name, Left(v)) => Left(name + " " + v)
230+
case (name, Right((msg, results))) => Right((name + " " + msg, results))
231+
}
219232

220-
if (lefts.nonEmpty) Left(lefts.mkString("\n"))
221-
else Right((rights.map(_._1).mkString("\n"), rights.flatMap(_._2)))
233+
if (lefts.nonEmpty) Left(lefts.mkString("\n"))
234+
else Right((rights.map(_._1).mkString("\n"), rights.flatMap(_._2)))
235+
}
222236
}
223-
})
237+
)
224238
}
225239

226240
private def runTestQueueScheduler(
@@ -427,8 +441,8 @@ private final class TestModuleUtil(
427441
private[scalalib] object TestModuleUtil {
428442

429443
private def withTestProgressTickerThread[T](totalClassCount: Long)(
430-
tickerThreadBlock: () => Unit = () => (),
431-
body: java.util.concurrent.ConcurrentMap[os.Path, Unit] => T
444+
tickerThreadBlock: () => Unit = () => (),
445+
body: java.util.concurrent.ConcurrentMap[os.Path, Unit] => T
432446
)(implicit ctx: mill.api.Ctx): T = {
433447
val workerResultSet = new java.util.concurrent.ConcurrentHashMap[os.Path, Unit]()
434448
val executor = Executors.newScheduledThreadPool(1)
@@ -437,14 +451,18 @@ private[scalalib] object TestModuleUtil {
437451
executor.scheduleWithFixedDelay(
438452
() => {
439453
tickerThreadBlock()
440-
var totalSuccess = 0L
454+
var totalSuccess = 0L
441455
var totalFailure = 0L
442456
workerResultSet.forEach { (resultLog, _) =>
443457
val (success, failure) = upickle.default.read[(Long, Long)](os.read.stream(resultLog))
444458
totalSuccess += success
445459
totalFailure += failure
446460
}
447-
ctx.log.ticker(s"${totalSuccess + totalFailure}/${totalClassCount} completed${ if (totalFailure > 0) { s", ${totalFailure} failures." } else { "." } }")
461+
ctx.log.ticker(
462+
s"${totalSuccess + totalFailure}/${totalClassCount} completed${if (totalFailure > 0) {
463+
s", ${totalFailure} failures."
464+
} else { "." }}"
465+
)
448466
},
449467
0,
450468
20,

scalalib/test/src/mill/scalalib/TestRunnerScalatestTests.scala

+28-4
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,20 @@ object TestRunnerScalatestTests extends TestSuite {
3232
3,
3333
Map(
3434
// No test grouping is triggered because we only run one test class
35-
testrunner.scalatest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
36-
testrunnerGrouping.scalatest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
35+
testrunner.scalatest -> Set(
36+
"out.json",
37+
"result.log",
38+
"sandbox",
39+
"test-report.xml",
40+
"testargs"
41+
),
42+
testrunnerGrouping.scalatest -> Set(
43+
"out.json",
44+
"result.log",
45+
"sandbox",
46+
"test-report.xml",
47+
"testargs"
48+
),
3749
testrunnerParallel.scalatest -> Set("worker-0", "test-classes", "test-report.xml")
3850
)
3951
)
@@ -43,7 +55,13 @@ object TestRunnerScalatestTests extends TestSuite {
4355
Seq("*"),
4456
9,
4557
Map(
46-
testrunner.scalatest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
58+
testrunner.scalatest -> Set(
59+
"out.json",
60+
"result.log",
61+
"sandbox",
62+
"test-report.xml",
63+
"testargs"
64+
),
4765
testrunnerGrouping.scalatest -> Set(
4866
"group-0-mill.scalalib.ScalaTestSpec",
4967
"mill.scalalib.ScalaTestSpec3",
@@ -76,7 +94,13 @@ object TestRunnerScalatestTests extends TestSuite {
7694
Seq("*", "--", "-z", "A Set 2"),
7795
3,
7896
Map(
79-
testrunner.scalatest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
97+
testrunner.scalatest -> Set(
98+
"out.json",
99+
"result.log",
100+
"sandbox",
101+
"test-report.xml",
102+
"testargs"
103+
),
80104
testrunnerGrouping.scalatest -> Set(
81105
"group-0-mill.scalalib.ScalaTestSpec",
82106
"mill.scalalib.ScalaTestSpec3",

scalalib/test/src/mill/scalalib/TestRunnerUtestTests.scala

+28-4
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,35 @@ object TestRunnerUtestTests extends TestSuite {
3636
Seq("mill.scalalib.FooTests"),
3737
1,
3838
Map(
39-
testrunner.utest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
39+
testrunner.utest -> Set(
40+
"out.json",
41+
"result.log",
42+
"sandbox",
43+
"test-report.xml",
44+
"testargs"
45+
),
4046
// When there is only one test group with test classes, we do not put it in a subfolder
41-
testrunnerGrouping.utest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
47+
testrunnerGrouping.utest -> Set(
48+
"out.json",
49+
"result.log",
50+
"sandbox",
51+
"test-report.xml",
52+
"testargs"
53+
),
4254
testrunnerParallel.utest -> Set("worker-0", "test-classes", "test-report.xml")
4355
)
4456
)
4557
test("multi") - tester.testOnly(
4658
Seq("*Bar*", "*bar*"),
4759
2,
4860
Map(
49-
testrunner.utest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
61+
testrunner.utest -> Set(
62+
"out.json",
63+
"result.log",
64+
"sandbox",
65+
"test-report.xml",
66+
"testargs"
67+
),
5068
// When there are multiple test groups with one test class each, we
5169
// put each test group in a subfolder with the number of the class
5270
testrunnerGrouping.utest -> Set(
@@ -61,7 +79,13 @@ object TestRunnerUtestTests extends TestSuite {
6179
Seq("*"),
6280
3,
6381
Map(
64-
testrunner.utest -> Set("out.json", "result.log", "sandbox", "test-report.xml", "testargs"),
82+
testrunner.utest -> Set(
83+
"out.json",
84+
"result.log",
85+
"sandbox",
86+
"test-report.xml",
87+
"testargs"
88+
),
6589
// When there are multiple test groups some with multiple test classes, we put each
6690
// test group in a subfolder with the index of the group, and for any test groups
6791
// with only one test class we append the name of the class

testrunner/src/mill/testrunner/TestRunnerUtils.scala

+23-7
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,9 @@ import java.util.concurrent.atomic.AtomicBoolean
119119
val runner = framework.runner(args.toArray, Array[String](), cl)
120120
val testClasses = discoverTests(cl, framework, testClassfilePath)
121121

122-
val filteredTestClasses = testClasses.iterator.filter { case (cls, _) => classFilter(cls) }.toArray
122+
val filteredTestClasses = testClasses.iterator.filter { case (cls, _) =>
123+
classFilter(cls)
124+
}.toArray
123125

124126
val tasksArr: Array[Array[Task]] = // each test class can have multiple test tasks ==> array of test classes will have this signature
125127
if (filteredTestClasses.isEmpty) {
@@ -216,7 +218,12 @@ import java.util.concurrent.atomic.AtomicBoolean
216218
(doneMessage, results)
217219
}
218220

219-
def runTasks(tasksSeq: Seq[Seq[Task]], testReporter: TestReporter, runner: Runner, resultPathOpt: Option[os.Path])(implicit
221+
def runTasks(
222+
tasksSeq: Seq[Seq[Task]],
223+
testReporter: TestReporter,
224+
runner: Runner,
225+
resultPathOpt: Option[os.Path]
226+
)(implicit
220227
ctx: Ctx.Log with Ctx.Home
221228
): (String, Iterator[TestResult]) = {
222229
// Capture this value outside of the task event handler so it
@@ -227,13 +234,20 @@ import java.util.concurrent.atomic.AtomicBoolean
227234
var failureCounter = 0L
228235

229236
val resultLog: () => Unit = resultPathOpt match {
230-
case Some(resultPath) => () => os.write.over(resultPath, upickle.default.write((successCounter, failureCounter)))
231-
case None => () => ctx.log.outputStream.println(s"Test result: ${successCounter + failureCounter} completed${ if (failureCounter > 0) { s", ${failureCounter} failures." } else { "." } }")
237+
case Some(resultPath) =>
238+
() => os.write.over(resultPath, upickle.default.write((successCounter, failureCounter)))
239+
case None => () =>
240+
ctx.log.outputStream.println(
241+
s"Test result: ${successCounter + failureCounter} completed${if (failureCounter > 0) {
242+
s", ${failureCounter} failures."
243+
} else { "." }}"
244+
)
232245
}
233246

234247
tasksSeq.foreach { tasks =>
235248
val taskResult = executeTasks(tasks, testReporter, events)
236-
if (taskResult) { successCounter += 1 } else { failureCounter += 1 }
249+
if (taskResult) { successCounter += 1 }
250+
else { failureCounter += 1 }
237251
resultLog()
238252
}
239253

@@ -254,7 +268,8 @@ import java.util.concurrent.atomic.AtomicBoolean
254268

255269
val (runner, tasksArr) = getTestTasks(framework, args, classFilter, cl, testClassfilePath)
256270

257-
val (doneMessage, results) = runTasks(tasksArr.view.map(_.toSeq).toSeq, testReporter, runner, resultPathOpt)
271+
val (doneMessage, results) =
272+
runTasks(tasksArr.view.map(_.toSeq).toSeq, testReporter, runner, resultPathOpt)
258273

259274
(doneMessage, results.toSeq)
260275
}
@@ -289,7 +304,8 @@ import java.util.concurrent.atomic.AtomicBoolean
289304

290305
val tasks = runner.tasks(taskDefs.toArray)
291306
val taskResult = executeTasks(tasks, testReporter, events)
292-
if (taskResult) { successCounter += 1 } else { failureCounter += 1 }
307+
if (taskResult) { successCounter += 1 }
308+
else { failureCounter += 1 }
293309
os.write.over(resultPath, upickle.default.write((successCounter, failureCounter)))
294310
}
295311

0 commit comments

Comments
 (0)