From 3d5f4a5e64ec50535536a828977a37107b35401d Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Mon, 18 Nov 2024 11:53:18 +0100 Subject: [PATCH] tests --- .../junit5/test/src/qux/FooTests.java | 6 ++++ .../junit5/test/src/qux/QuxTests.java | 17 +++++++++++ .../src/mill/javalib/junit5/JUnit5Tests.scala | 30 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 scalalib/test/resources/junit5/test/src/qux/FooTests.java create mode 100644 scalalib/test/resources/junit5/test/src/qux/QuxTests.java create mode 100644 scalalib/test/src/mill/javalib/junit5/JUnit5Tests.scala diff --git a/scalalib/test/resources/junit5/test/src/qux/FooTests.java b/scalalib/test/resources/junit5/test/src/qux/FooTests.java new file mode 100644 index 00000000000..02105cf2c45 --- /dev/null +++ b/scalalib/test/resources/junit5/test/src/qux/FooTests.java @@ -0,0 +1,6 @@ +package qux; + +// this class should not be detected as a test +public class FooTests { + +} diff --git a/scalalib/test/resources/junit5/test/src/qux/QuxTests.java b/scalalib/test/resources/junit5/test/src/qux/QuxTests.java new file mode 100644 index 00000000000..e73f65200e1 --- /dev/null +++ b/scalalib/test/resources/junit5/test/src/qux/QuxTests.java @@ -0,0 +1,17 @@ +package qux; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +public class QuxTests { + + @Test + public void hello() { + assertTrue(true); + } + +} + +// this class should not be detected as a test +class Dummy{} diff --git a/scalalib/test/src/mill/javalib/junit5/JUnit5Tests.scala b/scalalib/test/src/mill/javalib/junit5/JUnit5Tests.scala new file mode 100644 index 00000000000..b77e88eb60d --- /dev/null +++ b/scalalib/test/src/mill/javalib/junit5/JUnit5Tests.scala @@ -0,0 +1,30 @@ +package mill.javalib.junit5 + +import mill.scalalib.JavaModule +import mill.scalalib.TestModule +import mill.testkit.{TestBaseModule, UnitTester} +import utest._ + +object JUnit5Tests extends TestSuite { + + object module extends TestBaseModule with JavaModule { + object test extends JavaTests with TestModule.Junit5 + } + + val testModuleSourcesPath = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "junit5" + + def tests = Tests { + test("discovery") { + val eval = UnitTester(module, testModuleSourcesPath) + val res = eval(module.test.discoveredTestClasses) + assert(res.isRight) + assert(res.toOption.get.value == Seq("qux.QuxTests")) + } + test("execution") { + val eval = UnitTester(module, testModuleSourcesPath) + val res = eval(module.test.test("")) + assert(res.isRight) + assert(res.toOption.get.value._2.forall(_.fullyQualifiedName == "qux.QuxTests")) + } + } +}