From c48f50876dcb9c5f7e3288ca6b25a2d6e2585d30 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Tue, 23 Jul 2024 10:54:32 +0200 Subject: [PATCH 1/2] Fix Mill export for projects with just the test scope --- .../cli/exportCmd/MillProjectDescriptor.scala | 4 ++-- .../ExportCommonTestDefinitions.scala | 16 ++++++++++++++++ .../cli/integration/ExportTestProjects.scala | 15 +++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/modules/cli/src/main/scala/scala/cli/exportCmd/MillProjectDescriptor.scala b/modules/cli/src/main/scala/scala/cli/exportCmd/MillProjectDescriptor.scala index 4985fa41e6..daa684a1e0 100644 --- a/modules/cli/src/main/scala/scala/cli/exportCmd/MillProjectDescriptor.scala +++ b/modules/cli/src/main/scala/scala/cli/exportCmd/MillProjectDescriptor.scala @@ -33,8 +33,8 @@ final case class MillProjectDescriptor( val pureJava = !options.scalaOptions.addScalaLibrary.contains(true) && !options.scalaOptions.addScalaCompiler.contains(true) && - sources.paths.forall(_._1.last.endsWith(".java")) && - sources.inMemory.forall(_.generatedRelPath.last.endsWith(".java")) && + sources.hasJava && + !sources.hasScala && options.classPathOptions.allExtraDependencies.toSeq .forall(_.value.nameAttributes == NoAttributes) diff --git a/modules/integration/src/test/scala/scala/cli/integration/ExportCommonTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/ExportCommonTestDefinitions.scala index c716d55726..92575c4caf 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/ExportCommonTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/ExportCommonTestDefinitions.scala @@ -96,6 +96,18 @@ trait ExportCommonTestDefinitions { _: ScalaCliSuite & TestScalaVersionArgs => } } + def justTestScope(): Unit = { + val expectedMessage = "exporting just the test scope actually works!" + prepareTestInputs(ExportTestProjects.justTestScope(expectedMessage)) + .fromRoot { root => + exportCommand(".").call(cwd = root) + val testRes = buildToolCommand(root, runTestsArgs*) + .call(cwd = root / outputDir) + val testOutput = testRes.out.text() + expect(testOutput.contains(expectedMessage)) + } + } + private val scalaVersionsInDir: Seq[String] = Seq("2.12", "2.13", "2", "3", "3.lts") if (runExportTests) { @@ -123,5 +135,9 @@ trait ExportCommonTestDefinitions { _: ScalaCliSuite & TestScalaVersionArgs => } } + test("just test scope") { + justTestScope() + } + } } diff --git a/modules/integration/src/test/scala/scala/cli/integration/ExportTestProjects.scala b/modules/integration/src/test/scala/scala/cli/integration/ExportTestProjects.scala index 77e4352360..28c6508df6 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/ExportTestProjects.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/ExportTestProjects.scala @@ -2,6 +2,8 @@ package scala.cli.integration import com.eed3si9n.expecty.Expecty.expect +import scala.cli.integration.Constants.munitVersion + object ExportTestProjects { def jvmTest(scalaVersion: String): TestInputs = { @@ -324,4 +326,17 @@ object ExportTestProjects { |} |""".stripMargin ) + + def justTestScope(msg: String): TestInputs = TestInputs( + os.rel / "MyTests.test.scala" -> + s"""//> using dep org.scalameta::munit::$munitVersion + | + |class MyTests extends munit.FunSuite { + | test("foo") { + | assert(2 + 2 == 4) + | println("$msg") + | } + |} + |""".stripMargin + ) } From c4f3634c0b26f05f2a734d93a1658155e5c68156 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Tue, 23 Jul 2024 13:13:14 +0200 Subject: [PATCH 2/2] Increase integration test timeouts to 300s --- .../src/test/scala/scala/cli/integration/ScalaCliSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/integration/src/test/scala/scala/cli/integration/ScalaCliSuite.scala b/modules/integration/src/test/scala/scala/cli/integration/ScalaCliSuite.scala index 79f39a9895..9b4b94eac2 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/ScalaCliSuite.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/ScalaCliSuite.scala @@ -23,7 +23,7 @@ abstract class ScalaCliSuite extends munit.FunSuite { } } - override def munitTimeout: Duration = new FiniteDuration(240, TimeUnit.SECONDS) + override def munitTimeout: Duration = new FiniteDuration(300, TimeUnit.SECONDS) override def munitFixtures: List[Fixture[Unit]] = List(testStartEndLogger) def group: ScalaCliSuite.TestGroup = ScalaCliSuite.TestGroup.Third