mirror of https://github.com/sbt/sbt.git
tests: add test case for framework field in scala test classes request
This commit is contained in:
parent
1396e1605d
commit
ce978a19ed
|
|
@ -39,6 +39,7 @@ import scala.collection.mutable
|
|||
import scala.util.control.NonFatal
|
||||
import scala.util.{ Failure, Success, Try }
|
||||
import scala.annotation.nowarn
|
||||
import sbt.testing.Framework
|
||||
|
||||
object BuildServerProtocol {
|
||||
import sbt.internal.bsp.codec.JsonProtocol._
|
||||
|
|
@ -844,25 +845,20 @@ object BuildServerProtocol {
|
|||
Keys.definedTests.?.value match {
|
||||
case None => Vector.empty
|
||||
case Some(definitions) =>
|
||||
val fingerprints = Keys.loadedTestFrameworks.?.value
|
||||
.getOrElse(Map.empty)
|
||||
.values
|
||||
.flatMap { framework =>
|
||||
framework.fingerprints().map(fingerprint => (fingerprint, framework))
|
||||
}
|
||||
.toMap
|
||||
val frameworks: Seq[Framework] = Keys.loadedTestFrameworks.?.value
|
||||
.map(_.values.toSeq)
|
||||
.getOrElse(Seq.empty)
|
||||
|
||||
definitions
|
||||
.groupBy(defn => fingerprints.get(defn.fingerprint))
|
||||
.map {
|
||||
case (framework, definitions) =>
|
||||
ScalaTestClassesItem(
|
||||
bspTargetIdentifier.value,
|
||||
definitions.map(_.name).toVector,
|
||||
framework.map(_.name())
|
||||
)
|
||||
}
|
||||
.toSeq
|
||||
val grouped = TestFramework.testMap(frameworks, definitions)
|
||||
|
||||
grouped.map {
|
||||
case (framework, definitions) =>
|
||||
ScalaTestClassesItem(
|
||||
bspTargetIdentifier.value,
|
||||
definitions.map(_.name).toVector,
|
||||
framework.name()
|
||||
)
|
||||
}.toSeq
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -308,7 +308,8 @@ object BuildServerTest extends AbstractServerTest {
|
|||
assert(svr.waitForString(10.seconds) { s =>
|
||||
(s contains """"id":"72"""") &&
|
||||
(s contains """"tests.FailingTest"""") &&
|
||||
(s contains """"tests.PassingTest"""")
|
||||
(s contains """"tests.PassingTest"""") &&
|
||||
(s contains """"framework":"ScalaTest"""")
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -231,21 +231,26 @@ object TestFramework {
|
|||
): Vector[(String, TestFunction)] =
|
||||
for (d <- inputs; act <- mapped.get(d.name)) yield (d.name, act)
|
||||
|
||||
private[this] def testMap(
|
||||
def testMap(
|
||||
frameworks: Seq[Framework],
|
||||
tests: Seq[TestDefinition]
|
||||
): Map[Framework, Set[TestDefinition]] = {
|
||||
import scala.collection.mutable.{ HashMap, HashSet, Set }
|
||||
val map = new HashMap[Framework, Set[TestDefinition]]
|
||||
|
||||
def assignTest(test: TestDefinition): Unit = {
|
||||
def isTestForFramework(framework: Framework) = getFingerprints(framework).exists { t =>
|
||||
matches(t, test.fingerprint)
|
||||
}
|
||||
for (framework <- frameworks.find(isTestForFramework))
|
||||
|
||||
frameworks.find(isTestForFramework).foreach { framework =>
|
||||
map.getOrElseUpdate(framework, new HashSet[TestDefinition]) += test
|
||||
}
|
||||
}
|
||||
|
||||
if (frameworks.nonEmpty)
|
||||
for (test <- tests) assignTest(test)
|
||||
|
||||
map.toMap.mapValues(_.toSet).toMap
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue