Skip to content

Commit

Permalink
Exposing methods to grab individual test results (#716)
Browse files Browse the repository at this point in the history
* Exposing methods to grab individual test results

* removing access for public individual test results method on test summary

* formatting

* simplifying individual test result map

* removing commented out code

* pr feedback not exposing moduletests

* removing commented out code in test

* changing right hand side of test results map to no longer be string in favor of SingleTestResult
  • Loading branch information
bkern authored Oct 28, 2024
1 parent d53f288 commit e766101
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ private[runtime] case class CoverageInfo(
case class TestSummary(
report: String,
countsByModule: Map[(PackageName, ModuleName), TestResultCounts],
private val coverage: CoverageInfo
private val coverage: CoverageInfo,
private val individualTestResults: Map[FQName, SingleTestResult]
) {
def overallCounts = countsByModule.values.foldLeft(TestResultCounts.empty) { case (acc, next) => acc.plus(next) }
def countsAtModule(pkgName: PackageName, modName: ModuleName): Option[TestResultCounts] =
Expand All @@ -24,6 +25,8 @@ case class TestSummary(

def staticallyReachedFunctions = coverage.staticallyReachedFunctions

def getAllTestResults = individualTestResults

/**
* Evaluates to true if and only if all tests passed and none were skipped or todo
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import org.finos.morphir.runtime.quick.*
import org.finos.morphir.runtime.MorphirRuntimeError.*
import org.finos.morphir.naming.*
import org.finos.morphir.runtime.ErrorUtils.indentBlock
import org.finos.morphir.runtime.quick.testing.TestTree.SingleTest

/**
* This trait represents the tree of any defined Test type It is parameterized on the object stored, which changes over
Expand Down Expand Up @@ -251,9 +252,44 @@ private[runtime] object TestSet {
TestSummary(
toReport(testSet),
testSet.modules.map(module => (module.pkgName, module.modName) -> ModuleTests.getCounts(module)).toMap,
coverageInfo
coverageInfo,
extractTestResults(testSet)
)

def extractTestResults(testSet: TestSet[SingleTestResult]): Map[FQName, SingleTestResult] =
testSet.modules.flatMap { module =>
def genValues(
packageName: PackageName,
moduleName: ModuleName,
tests: List[TestTree[SingleTestResult]]
): List[(FQName, SingleTestResult)] =
tests.flatMap {
case TestTree.SingleTest(desc, SingleTestResult.Passed) =>
List(FQName(packageName, moduleName, Name.fromString(desc)) -> SingleTestResult.Passed)
case TestTree.SingleTest(desc, SingleTestResult.Failed(msg)) =>
List(FQName(packageName, moduleName, Name.fromString(desc)) -> SingleTestResult.Failed(msg))
case TestTree.SingleTest(desc, SingleTestResult.Err(err)) =>
List(FQName(packageName, moduleName, Name.fromString(desc)) -> SingleTestResult.Err(err))
case TestTree.Skip(desc, numSkipped) =>
List(FQName(packageName, moduleName, Name.fromString(desc)) -> SingleTestResult.Failed(
s"$numSkipped tests skipped"
))
case TestTree.Todo(desc) =>
List(FQName(packageName, moduleName, Name.fromString(desc)) -> SingleTestResult.Failed(s"TODO $desc"))
case TestTree.Error(desc, err) =>
List(FQName(packageName, moduleName, Name.fromString(desc)) -> SingleTestResult.Err(err))
case TestTree.Describe(blockDesc, nestedTests) =>
genValues(packageName, moduleName, nestedTests)
case TestTree.Concat(nestedTests) =>
genValues(packageName, moduleName, nestedTests)
case TestTree.Only(nestedTest) =>
genValues(packageName, moduleName, List(nestedTest))

}

genValues(module.pkgName, module.modName, module.tests)
}.toMap

/**
* Runs all of the user-defined thunks Note that
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ object UnitTesting {
val emptySummary = TestSummary(
"No tests run",
Map(),
CoverageInfo(Set.empty[FQName], userDefinedFunctions, CoverageCounts.empty)
CoverageInfo(Set.empty[FQName], userDefinedFunctions, CoverageCounts.empty),
Map()
)
RTAction.succeed(emptySummary)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ object UnitTestingSpec extends MorphirBaseSpec {
suite("Failing Project")(
test("Show Results (for human readability check - ignore)") {
getTestSummary.map { result =>
println(result)
assertTrue(false)
}
} @@ TestAspect.ignore,
Expand Down Expand Up @@ -109,6 +108,11 @@ object UnitTestingSpec extends MorphirBaseSpec {
uncovered = 0
))
}
},
test("Test results are captured") {
getTestSummary.map { result =>
assertTrue(result.getAllTestResults.size == 65)
}
}
),
suite("Modules Correct")(
Expand Down

0 comments on commit e766101

Please sign in to comment.