diff --git a/scalalib/test/resources/testrunner/scalatest/src/ScalaTestSpec.scala b/scalalib/test/resources/testrunner/scalatest/src/ScalaTestSpec.scala index 1ca8c8faa81..832b3aa8f87 100644 --- a/scalalib/test/resources/testrunner/scalatest/src/ScalaTestSpec.scala +++ b/scalalib/test/resources/testrunner/scalatest/src/ScalaTestSpec.scala @@ -1,7 +1,10 @@ package mill.scalalib +import org.scalatest.Tag import org.scalatest.freespec.AnyFreeSpec +object TaggedTest extends Tag("tagged") + class ScalaTestSpec extends AnyFreeSpec { "A Set" - { @@ -15,6 +18,10 @@ class ScalaTestSpec extends AnyFreeSpec { Set.empty.head } } + + "should be tagged" taggedAs(TaggedTest) in { + assert(true) + } } } } diff --git a/scalalib/test/src/mill/scalalib/TestRunnerTests.scala b/scalalib/test/src/mill/scalalib/TestRunnerTests.scala index dff11e18c1b..c3a09f71b5a 100644 --- a/scalalib/test/src/mill/scalalib/TestRunnerTests.scala +++ b/scalalib/test/src/mill/scalalib/TestRunnerTests.scala @@ -7,7 +7,6 @@ import mill.{Agg, T} import os.Path import sbt.testing.Status import utest._ -import utest.framework.TestPath import java.io.{ByteArrayOutputStream, PrintStream} import scala.xml.{Elem, NodeSeq, XML} @@ -147,8 +146,8 @@ object TestRunnerTests extends TestSuite { test("ScalaTest") { test("test") - UnitTester(testrunner, resourcePath).scoped { eval => val Right(result) = eval(testrunner.scalatest.test()) - assert(result.value._2.size == 2) - junitReportIn(eval.outPath, "scalatest").shouldHave(2 -> Status.Success) + assert(result.value._2.size == 3) + junitReportIn(eval.outPath, "scalatest").shouldHave(3 -> Status.Success) } test("discoveredTestClasses") - UnitTester(testrunner, resourcePath).scoped { eval => val Right(result) = eval.apply(testrunner.scalatest.discoveredTestClasses) @@ -156,6 +155,37 @@ object TestRunnerTests extends TestSuite { assert(result.value == expected) expected } + + test("testOnly") - { + def testOnly(eval: UnitTester, args: Seq[String], size: Int) = { + val Right(result) = eval.apply(testrunner.scalatest.testOnly(args: _*)) + val testOnly = result.value.asInstanceOf[(String, Seq[mill.testrunner.TestResult])] + assert( + testOnly._2.size == size + ) + } + test("all") - UnitTester(testrunner, resourcePath).scoped { eval => + testOnly(eval, Seq("mill.scalalib.ScalaTestSpec"), 3) + } + test("include") - UnitTester(testrunner, resourcePath).scoped { eval => + testOnly(eval, Seq("mill.scalalib.ScalaTestSpec", "--", "-n", "tagged"), 1) + } + test("exclude") - UnitTester(testrunner, resourcePath).scoped { eval => + testOnly(eval, Seq("mill.scalalib.ScalaTestSpec", "--", "-l", "tagged"), 2) + } + test("includeAndExclude") - UnitTester(testrunner, resourcePath).scoped { eval => + val Left(Result.Failure(msg, _)) = + eval.apply(testrunner.scalatest.testOnly( + "mill.scalalib.ScalaTestSpec", + "--", + "-n", + "tagged", + "-l", + "tagged" + )) + assert(msg.contains("Test selector does not match any test")) + } + } } test("ZioTest") { diff --git a/testrunner/src/mill/testrunner/TestRunnerUtils.scala b/testrunner/src/mill/testrunner/TestRunnerUtils.scala index 3cc60d14d47..8e90447d8b3 100644 --- a/testrunner/src/mill/testrunner/TestRunnerUtils.scala +++ b/testrunner/src/mill/testrunner/TestRunnerUtils.scala @@ -126,7 +126,7 @@ import scala.jdk.CollectionConverters.IteratorHasAsScala yield new TaskDef( cls.getName.stripSuffix("$"), fingerprint, - true, + false, Array(new SuiteSelector) ) )