Skip to content

Commit ecaaa8d

Browse files
authored
Unify cli module unit tests with consistent logging, timeouts and other settings (#3896)
1 parent e8ab477 commit ecaaa8d

File tree

9 files changed

+48
-17
lines changed

9 files changed

+48
-17
lines changed

modules/cli/src/test/scala/cli/tests/ArgSplitterTest.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ package cli.tests
22

33
import scala.cli.commands.shared.ArgSplitter
44

5-
class ArgSplitterTest extends munit.FunSuite {
6-
5+
class ArgSplitterTest extends TestUtil.ScalaCliSuite {
76
test("test scalac options are split correctly") {
87
val args = List(
98
List("-arg", "-other-arg"),

modules/cli/src/test/scala/cli/tests/CachedBinaryTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package scala.cli.tests
22

33
import bloop.rifle.BloopRifleConfig
4+
import cli.tests.TestUtil
45
import com.eed3si9n.expecty.Expecty.assert as expect
56
import os.Path
67

@@ -11,8 +12,7 @@ import scala.build.{Build, BuildThreads, Directories, LocalRepo}
1112
import scala.cli.internal.CachedBinary
1213
import scala.util.{Properties, Random}
1314

14-
class CachedBinaryTests extends munit.FunSuite {
15-
15+
class CachedBinaryTests extends TestUtil.ScalaCliSuite {
1616
val buildThreads: BuildThreads = BuildThreads.create()
1717
def bloopConfig: BloopRifleConfig = BloopServer.bloopConfig
1818

modules/cli/src/test/scala/cli/tests/HelpCheck.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import com.eed3si9n.expecty.Expecty.expect
55
import scala.cli.ScalaCliCommands
66
import scala.cli.commands.version.Version
77

8-
class HelpCheck extends munit.FunSuite {
9-
8+
class HelpCheck extends TestUtil.ScalaCliSuite {
109
test("help message should be shorter then 80 lines") {
1110
val scalaCli = new ScalaCliCommands("scala-cli", "scala-cli", "Scala CLI")
1211
val helpMessage = scalaCli.help.help(scalaCli.helpFormat)

modules/cli/src/test/scala/cli/tests/LauncherCliTest.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import scala.build.tests.TestLogger
77
import scala.cli.commands.shared.CoursierOptions
88
import scala.cli.launcher.LauncherCli
99

10-
class LauncherCliTest extends munit.FunSuite {
11-
override def munitFlakyOK: Boolean = TestUtil.isCI
10+
class LauncherCliTest extends TestUtil.ScalaCliSuite {
1211

1312
test("resolve nightly version".flaky) {
1413
val logger = TestLogger()

modules/cli/src/test/scala/cli/tests/OptionsCheck.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package scala.cli.tests
22

3+
import cli.tests.TestUtil
4+
35
import scala.cli.ScalaCliCommands
46
import scala.cli.commands.shared.HasGlobalOptions
57

6-
class OptionsCheck extends munit.FunSuite {
7-
8+
class OptionsCheck extends TestUtil.ScalaCliSuite {
89
for (
910
command <-
1011
new ScalaCliCommands("scala-cli", "scala-cli", "Scala CLI").commands

modules/cli/src/test/scala/cli/tests/PackageTests.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import scala.build.{BuildThreads, Directories, LocalRepo}
1212
import scala.cli.commands.package0.Package
1313
import scala.cli.packaging.Library
1414

15-
class PackageTests extends munit.FunSuite {
16-
15+
class PackageTests extends TestUtil.ScalaCliSuite {
1716
val buildThreads = BuildThreads.create()
1817
def bloopConfig = BloopServer.bloopConfig
1918

modules/cli/src/test/scala/cli/tests/ScalafmtTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import scala.build.internal.Constants
88
import scala.build.tests.{TestInputs, TestLogger}
99
import scala.cli.commands.fmt.{FmtOptions, FmtUtil}
1010

11-
class ScalafmtTests extends munit.FunSuite {
11+
class ScalafmtTests extends TestUtil.ScalaCliSuite {
1212
private lazy val defaultScalafmtVersion = Constants.defaultScalafmtVersion
1313

1414
test("readVersionFromFile with non-default scalafmt version") {

modules/cli/src/test/scala/cli/tests/SetupScalaCLITests.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ import scala.build.tests.TestInputs
99
import scala.cli.ScalaCli
1010
import scala.jdk.CollectionConverters.{MapHasAsJava, MapHasAsScala}
1111

12-
class SetupScalaCLITests extends munit.FunSuite {
13-
12+
class SetupScalaCLITests extends TestUtil.ScalaCliSuite {
1413
test(s"should read java properties from file") {
1514
val key = "scala-cli"
1615
val value = "true"

modules/cli/src/test/scala/cli/tests/TestUtil.scala

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,52 @@ import coursier.cache.{ArtifactError, FileCache}
44
import coursier.util.{Artifact, Task}
55

66
import java.io.File
7+
import java.util.concurrent.TimeUnit
78

8-
import scala.concurrent.duration.DurationInt
9+
import scala.concurrent.duration.{DurationInt, FiniteDuration}
910
import scala.util.control.NonFatal
1011

1112
object TestUtil {
13+
abstract class ScalaCliSuite extends munit.FunSuite {
14+
extension (munitContext: BeforeEach | AfterEach) {
15+
def locationAbsolutePath: os.Path =
16+
os.Path {
17+
(munitContext match {
18+
case beforeEach: BeforeEach => beforeEach.test
19+
case afterEach: AfterEach => afterEach.test
20+
}).location.path
21+
}
22+
}
23+
24+
override def munitTimeout = new FiniteDuration(120, TimeUnit.SECONDS)
25+
26+
val testStartEndLogger = new Fixture[Unit]("files") {
27+
def apply(): Unit = ()
28+
29+
override def beforeEach(context: BeforeEach): Unit = {
30+
val fileName = context.locationAbsolutePath.baseName
31+
System.err.println(
32+
s">==== ${Console.CYAN}Running '${context.test.name}' from $fileName${Console.RESET}"
33+
)
34+
}
35+
36+
override def afterEach(context: AfterEach): Unit = {
37+
val fileName = context.locationAbsolutePath.baseName
38+
System.err.println(
39+
s"X==== ${Console.CYAN}Finishing '${context.test.name}' from $fileName${Console.RESET}"
40+
)
41+
}
42+
}
43+
44+
override def munitFixtures = List(testStartEndLogger)
45+
}
46+
1247
def downloadFile(url: String): Either[ArtifactError, Array[Byte]] = {
1348
val artifact = Artifact(url).withChanging(true)
1449
val cache = FileCache()
1550

1651
val file: Either[ArtifactError, File] = cache.logger.use {
17-
try cache.withTtl(0.seconds).file(artifact).run.unsafeRun()(cache.ec)
52+
try cache.withTtl(0.seconds).file(artifact).run.unsafeRun()(using cache.ec)
1853
catch {
1954
case NonFatal(e) => throw new Exception(e)
2055
}

0 commit comments

Comments
 (0)