Skip to content

Commit 873b2e8

Browse files
authored
Merge pull request #3714 from Gedochao/maintenance/debug-negative-compilation-test
Fix flaky `build-macros[_].test.testNegativeCompilation`
2 parents 429af2b + da975a6 commit 873b2e8

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ jobs:
3939
retention-days: 2
4040
- name: Cross compile everything
4141
run: ./mill -i '__[_].compile'
42+
- name: Build macros negative compilation tests
43+
run: ./mill -i build-macros[_].test.testNegativeCompilation
4244
- name: Unit tests
4345
run: ./mill -i unitTests
4446
- name: Convert Mill test reports to JUnit XML format

build.mill.scala

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -309,19 +309,11 @@ trait BuildMacros extends ScalaCliCrossSbtModule
309309
}
310310

311311
object test extends ScalaCliTests {
312-
313-
// Is there a better way to add task dependency to test?
314-
def test(args: String*): Command[(String, Seq[TestResult])] = Task.Command {
315-
val res = super.test(args: _*)()
316-
testNegativeCompilation()()
317-
res
318-
}
319-
320312
def scalacOptions: Target[Seq[String]] = Task {
321313
super.scalacOptions() ++ asyncScalacOptions(scalaVersion())
322314
}
323315

324-
def testNegativeCompilation(): Command[Unit] = Task.Command {
316+
def testNegativeCompilation(): Command[Unit] = Task.Command(exclusive = true) {
325317
val base = Task.workspace / "modules" / "build-macros" / "src"
326318
val negativeTests = Seq(
327319
"MismatchedLeft.scala" -> Seq(
@@ -331,8 +323,11 @@ trait BuildMacros extends ScalaCliCrossSbtModule
331323
)
332324
)
333325

334-
val cpsSource = base / "main" / "scala" / "scala" / "build" / "EitherCps.scala"
335-
assert(os.exists(cpsSource))
326+
val cpsSource = base / "main" / "scala" / "scala" / "build" / "EitherCps.scala"
327+
val cpsSourceExists = os.exists(cpsSource)
328+
if (!cpsSourceExists) System.err.println(s"Expected source file $cpsSource does not exist")
329+
else System.err.println(s"Found source file $cpsSource")
330+
assert(cpsSourceExists)
336331

337332
val sv = scalaVersion()
338333
def compile(extraSources: os.Path*): CommandResult =
@@ -341,7 +336,14 @@ trait BuildMacros extends ScalaCliCrossSbtModule
341336
mergeErrIntoOut = true,
342337
cwd = Task.workspace
343338
)
344-
assert(0 == compile().exitCode)
339+
val compileResult = compile()
340+
if (compileResult.exitCode != 0) {
341+
System.err.println(s"Compilation failed: $cpsSource")
342+
System.err.println(compileResult.out.text())
343+
}
344+
else
345+
System.err.println(s"Compiled $cpsSource successfully")
346+
assert(0 == compileResult.exitCode)
345347

346348
val notPassed = negativeTests.filter { case (testName, expectedErrors) =>
347349
val testFile = base / "negative-tests" / testName

0 commit comments

Comments
 (0)