@@ -7,6 +7,7 @@ import ftl.reports.outcome.createMatrixOutcomeSummary
7
7
import ftl.reports.outcome.fetchTestOutcomeContext
8
8
import ftl.util.MatrixState.FINISHED
9
9
import ftl.util.MatrixState.INVALID
10
+ import ftl.util.StepOutcome
10
11
import ftl.util.StepOutcome.failure
11
12
import ftl.util.StepOutcome.inconclusive
12
13
import ftl.util.StepOutcome.skipped
@@ -26,21 +27,24 @@ data class SavedMatrix(
26
27
val downloaded : Boolean = false ,
27
28
val billableVirtualMinutes : Long = 0 ,
28
29
val billablePhysicalMinutes : Long = 0 ,
29
- val outcome : String = " " ,
30
- val outcomeDetails : String = " " ,
31
30
val clientDetails : Map <String , String >? = null ,
32
31
val gcsPathWithoutRootBucket : String = " " ,
33
32
val gcsRootBucket : String = " " ,
34
33
val webLinkWithoutExecutionDetails : String? = " " ,
35
- )
34
+ val testAxises : List <TestOutcome > = emptyList()
35
+ ) {
36
+ val outcome = testAxises.maxByOrNull { StepOutcome .order.indexOf(it.outcome) }?.outcome.orEmpty()
37
+ }
36
38
37
39
fun createSavedMatrix (testMatrix : TestMatrix ) = SavedMatrix ().updateWithMatrix(testMatrix)
38
40
39
- fun SavedMatrix.canceledByUser () = outcomeDetails == ABORTED_BY_USER_MESSAGE
41
+ fun SavedMatrix.canceledByUser () = testAxises.any { it.details == ABORTED_BY_USER_MESSAGE }
42
+
43
+ fun SavedMatrix.infrastructureFail () = testAxises.any { it.details == INFRASTRUCTURE_FAILURE_MESSAGE }
40
44
41
- fun SavedMatrix.infrastructureFail () = outcomeDetails == INFRASTRUCTURE_FAILURE_MESSAGE
45
+ fun SavedMatrix.incompatibleFail () = testAxises.map { it.details }.intersect(incompatibleFails).isNotEmpty()
42
46
43
- fun SavedMatrix. incompatibleFail () = outcomeDetails in arrayOf (
47
+ private val incompatibleFails = setOf (
44
48
INCOMPATIBLE_APP_VERSION_MESSAGE ,
45
49
INCOMPATIBLE_ARCHITECTURE_MESSAGE ,
46
50
INCOMPATIBLE_DEVICE_MESSAGE
@@ -70,11 +74,11 @@ private fun SavedMatrix.updatedSavedMatrix(
70
74
): SavedMatrix = when (newMatrix.state) {
71
75
state -> this
72
76
73
- FINISHED -> newMatrix.fetchTestOutcomeContext().createMatrixOutcomeSummary().let { (billableMinutes, outcome ) ->
74
- updateProperties(newMatrix).updateOutcome(outcome ).updateBillableMinutes(billableMinutes)
77
+ FINISHED -> newMatrix.fetchTestOutcomeContext().createMatrixOutcomeSummary().let { (billableMinutes, outcomes ) ->
78
+ updateProperties(newMatrix).updateOutcome(outcomes ).updateBillableMinutes(billableMinutes)
75
79
}
76
80
77
- INVALID -> updateProperties(newMatrix).updateOutcome(invalidTestOutcome())
81
+ INVALID -> updateProperties(newMatrix).updateOutcome(listOf ( invalidTestOutcome() ))
78
82
79
83
else -> updateProperties(newMatrix)
80
84
}
@@ -96,12 +100,11 @@ private fun SavedMatrix.updateBillableMinutes(billableMinutes: BillableMinutes)
96
100
billableVirtualMinutes = billableMinutes.virtual,
97
101
)
98
102
99
- private fun SavedMatrix.updateOutcome (testOutcome : TestOutcome ) = copy(
100
- outcome = testOutcome.outcome,
101
- outcomeDetails = testOutcome.testDetails
103
+ private fun SavedMatrix.updateOutcome (outcome : List <TestOutcome >) = copy(
104
+ testAxises = outcome
102
105
)
103
106
104
107
private fun invalidTestOutcome () = TestOutcome (
105
108
outcome = " ---" ,
106
- testDetails = " Matrix is invalid"
109
+ details = " Matrix is invalid"
107
110
)
0 commit comments