Skip to content

Commit

Permalink
[testing support, MUnit] Fix MUnit test discovery mechanism for MUnit…
Browse files Browse the repository at this point in the history
… 1.0 #SCL-20576 fixed

- The MUnit FunSuite test machinery has been moved to a new munit.BaseFunSuite trait which can be mixed into other classes.
- We still support munit.FunSuite for older versions of MUnit.
- The tests now run both against MUnit 0.7.29 and MUnit 1.0.0.
- scalameta/munit#433
  • Loading branch information
vasilmkd committed Jul 9, 2024
1 parent 232bdce commit bbd514b
Show file tree
Hide file tree
Showing 10 changed files with 48 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@ import org.jetbrains.plugins.scala.lang.psi.api.expr.{ScExpression, ScMethodCall
private[testingSupport]
object MUnitUtils {

/** see see munit.FunSuite.test & see munit.FunSuite.property */
/** see munit.BaseFunSuite.test & see munit.FunSuite.property */
val FunSuiteTestMethodNames: Set[String] = Set("test", "property")

// Base trait containing the test method definition in MUnit 1.0+
val BaseFunSuiteFqn = "munit.BaseFunSuite"
// Base class containing the test method definition in MUnit 0.x
val FunSuiteFqn = "munit.FunSuite"
val ScalaCheckSuiteFqn = "munit.ScalaCheckSuite"

val FunSuiteFqnList: List[String] = List(FunSuiteFqn)
val FunSuiteFqnList: List[String] = List(BaseFunSuiteFqn, FunSuiteFqn)
val ScalaCheckSuiteFqnList: List[String] = List(ScalaCheckSuiteFqn)

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ object TestNodeProvider {
extractFunSpec(expr, project)
else if (propSpecBases.exists(isInheritor(clazz, _)))
extractPropSpec(expr)
else if (isInheritor(clazz, MUnitUtils.FunSuiteFqn))
else if (isInheritor(clazz, MUnitUtils.BaseFunSuiteFqn) || isInheritor(clazz, MUnitUtils.FunSuiteFqn))
extractMUnitFunSuite(expr) //this should be a funSuite-like test
else
None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.jetbrains.plugins.scala.testingSupport.munit
import com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude
import org.jetbrains.plugins.scala.util.assertions.ExceptionAssertions

class MUnitConfigPackageTest extends MUnitTestCase {
abstract class MUnitConfigPackageTestBase extends MUnitTestCase {

private val packageName0 = "org"
private val packageName1 = "org.example1"
Expand Down Expand Up @@ -110,3 +110,7 @@ class MUnitConfigPackageTest extends MUnitTestCase {
)(optionsWithErrorCode)
}
}

class Munit_0_7_ConfigPackageTest extends MUnitConfigPackageTestBase with MUnit_0_7

class Munit_1_0_ConfigPackageTest extends MUnitConfigPackageTestBase with MUnit_1_0
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.jetbrains.plugins.scala.testingSupport.test.AbstractTestRunConfigurat
import org.jetbrains.plugins.scala.testingSupport.test.testdata.SingleTestData

//noinspection RedundantBlock
class MUnitConfigSingleTestTest extends MUnitTestCase {
abstract class MUnitConfigSingleTestTestBase extends MUnitTestCase {

private val qqq = "\"\"\""

Expand Down Expand Up @@ -174,3 +174,7 @@ class MUnitConfigSingleTestTest extends MUnitTestCase {
)

}

class MUnit_0_7_ConfigSingleTestTest extends MUnitConfigSingleTestTestBase with MUnit_0_7

class MUnit_1_0_ConfigSingleTestTest extends MUnitConfigSingleTestTestBase with MUnit_1_0
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package org.jetbrains.plugins.scala.testingSupport.munit

import com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude

class MUnitConfigWholeSuiteTest extends MUnitTestCase {
abstract class MUnitConfigWholeSuiteTestBase extends MUnitTestCase {

private val ClassNameFunSuite = "MUnitConfigWholeSuite_Test_FunSuite"
private val FileNameFunSuite = s"$ClassNameFunSuite.scala"
Expand Down Expand Up @@ -101,3 +101,7 @@ class MUnitConfigWholeSuiteTest extends MUnitTestCase {
}
)
}

class MUnit_0_7_ConfigWholeSuiteTest extends MUnitConfigWholeSuiteTestBase with MUnit_0_7

class MUnit_1_0_ConfigWholeSuiteTest extends MUnitConfigWholeSuiteTestBase with MUnit_1_0
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package org.jetbrains.plugins.scala.testingSupport.munit

import org.jetbrains.plugins.scala.util.assertions.ExceptionAssertions

class MUnitFileStructureViewTest extends MUnitTestCase {
abstract class MUnitFileStructureViewTestBase extends MUnitTestCase {

private val ClassNameFunSuite = "MUnitFileStructureView_Test_FunSuite"
private val FileNameFunSuite = ClassNameFunSuite + ".scala"
Expand Down Expand Up @@ -70,3 +70,7 @@ class MUnitFileStructureViewTest extends MUnitTestCase {
)
}
}

class MUnit_0_7_FileStructureViewTest extends MUnitFileStructureViewTestBase with MUnit_0_7

class MUnit_1_0_FileStructureViewTest extends MUnitFileStructureViewTestBase with MUnit_1_0
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package org.jetbrains.plugins.scala.testingSupport.munit

import org.jetbrains.plugins.scala.util.assertions.ExceptionAssertions

class MUnitGoToSourceTest extends MUnitTestCase {
abstract class MUnitGoToSourceTestBase extends MUnitTestCase {

private val qqq = "\"\"\""

Expand Down Expand Up @@ -68,3 +68,7 @@ class MUnitGoToSourceTest extends MUnitTestCase {
assertGoToSourceTest(testTreeRoot, TestNodePath("[root]"), GoToLocation(FileNameFunSuite, 5))
}
}

class MUnit_0_7_GoToSourceTest extends MUnitGoToSourceTestBase with MUnit_0_7

class MUnit_1_0_GoToSourceTest extends MUnitGoToSourceTestBase with MUnit_1_0
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.intellij.psi.{PsiDirectory, PsiManager}
import org.jetbrains.plugins.scala.configurations.TestLocation.{CaretLocation, PackageLocation, PsiElementLocation}
import org.jetbrains.plugins.scala.extensions.inReadAction

class MUnitShouldReplaceJUnit extends MUnitTestCase {
abstract class MUnitShouldReplaceJUnitTestBase extends MUnitTestCase {

private val ClassName = "MyTestClass"
private val FileName = "org/example/MyTestClass.scala"
Expand Down Expand Up @@ -56,3 +56,7 @@ class MUnitShouldReplaceJUnit extends MUnitTestCase {
PsiManager.getInstance(myProject).findDirectory(srcDir)
}
}

class MUnit_0_7_ShouldReplaceJUnitTest extends MUnitShouldReplaceJUnitTestBase with MUnit_0_7

class MUnit_1_0_ShouldReplaceJUnitTest extends MUnitShouldReplaceJUnitTestBase with MUnit_1_0
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import org.jetbrains.plugins.scala.testingSupport.test.munit.MUnitConfigurationP

abstract class MUnitTestCase extends ScalaTestingTestCase {

val LatestMunitVersion = "0.7.29"
def munitVersion: String

override protected def supportedIn(version: ScalaVersion): Boolean =
version >= ScalaVersion.Latest.Scala_2_13
Expand All @@ -19,7 +19,7 @@ abstract class MUnitTestCase extends ScalaTestingTestCase {
RunConfigurationProducer.getInstance(classOf[MUnitConfigurationProducer])

override protected def additionalLibraries: Seq[LibraryLoader] =
IvyManagedLoader(("org.scalameta" %% "munit" % LatestMunitVersion).transitive()) ::
IvyManagedLoader(("org.scalameta" %% "munit-scalacheck" % LatestMunitVersion).transitive()) ::
IvyManagedLoader(("org.scalameta" %% "munit" % munitVersion).transitive()) ::
IvyManagedLoader(("org.scalameta" %% "munit-scalacheck" % munitVersion).transitive()) ::
Nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package org.jetbrains.plugins.scala.testingSupport.munit

trait MUnit_0_7 { self: MUnitTestCase =>
override def munitVersion: String = "0.7.29"
}

trait MUnit_1_0 { self: MUnitTestCase =>
override def munitVersion: String = "1.0.0"
}

0 comments on commit bbd514b

Please sign in to comment.