From 5421c5f550dbd7105520802f4466a8a89daf0098 Mon Sep 17 00:00:00 2001 From: volcano303 Date: Wed, 15 Apr 2026 21:38:46 +0200 Subject: [PATCH] Address PR review: fix ForkError constructor visibility and use IO.withTemporaryDirectory inin tests --- .../scala/sbt/JUnitXmlTestsListenerSpec.scala | 29 +++---------------- .../sbt/internal/worker1/ForkTestMain.java | 2 +- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/testing/src/test/scala/sbt/JUnitXmlTestsListenerSpec.scala b/testing/src/test/scala/sbt/JUnitXmlTestsListenerSpec.scala index 4f5a2cb95..204162222 100644 --- a/testing/src/test/scala/sbt/JUnitXmlTestsListenerSpec.scala +++ b/testing/src/test/scala/sbt/JUnitXmlTestsListenerSpec.scala @@ -15,16 +15,14 @@ import testing.{ Event as TEvent, OptionalThrowable, Status as TStatus, TestSele import util.{ AbstractLogger, Level, ControlEvent, LogEvent } import sbt.protocol.testing.TestResult import sbt.internal.worker1.ForkTestMain +import sbt.io.IO import verify.BasicTestSuite import scala.xml.XML object JUnitXmlTestsListenerSpec extends BasicTestSuite: test("JUnitXmlTestsListener should log debug message when writing test report"): - val tempDir = File.createTempFile("junit-test", "") - tempDir.delete() - tempDir.mkdirs() - try + IO.withTemporaryDirectory: tempDir => val loggedMessages = new AtomicReference[List[String]](Nil) val mockLogger = new AbstractLogger: def getLevel: Level.Value = Level.Debug @@ -68,17 +66,9 @@ object JUnitXmlTestsListenerSpec extends BasicTestSuite: messages.exists(_.contains("TEST-TestSuite.xml")), s"Expected log message containing 'TEST-TestSuite.xml', but got: $messages" ) - finally - // Cleanup - if tempDir.exists() then - tempDir.listFiles().foreach(_.delete()) - tempDir.delete() test("JUnitXmlTestsListener should handle null logger gracefully"): - val tempDir = File.createTempFile("junit-test", "") - tempDir.delete() - tempDir.mkdirs() - try + IO.withTemporaryDirectory: tempDir => val listener = new JUnitXmlTestsListener(tempDir, false, null) listener.doInit() listener.startGroup("TestSuite") @@ -99,16 +89,9 @@ object JUnitXmlTestsListenerSpec extends BasicTestSuite: // Verify XML file was still created val xmlFile = new File(tempDir, "TEST-TestSuite.xml") assert(xmlFile.exists(), "XML file should be created even when logger is null") - finally - if tempDir.exists() then - tempDir.listFiles().foreach(_.delete()) - tempDir.delete() test("JUnit XML report should use original exception type for forked test failures"): - val tempDir = File.createTempFile("junit-test", "") - tempDir.delete() - tempDir.mkdirs() - try + IO.withTemporaryDirectory: tempDir => val listener = new JUnitXmlTestsListener(tempDir, false, null) listener.doInit() listener.startGroup("TestSuite") @@ -156,9 +139,5 @@ object JUnitXmlTestsListenerSpec extends BasicTestSuite: !traceText.contains("ForkError"), s"Stacktrace should not contain ForkError, got: $traceText" ) - finally - if tempDir.exists() then - tempDir.listFiles().foreach(_.delete()) - tempDir.delete() end JUnitXmlTestsListenerSpec diff --git a/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java b/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java index c4a6fd102..fb2254678 100644 --- a/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java +++ b/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java @@ -147,7 +147,7 @@ public class ForkTestMain { private final String originalName; private ForkError cause1; - ForkError(final Throwable t) { + public ForkError(final Throwable t) { originalMessage = t.getMessage(); originalName = t.getClass().getName(); setStackTrace(t.getStackTrace());