Add NOTE and UNSPECIFIED BEHAVIOUR fields to spec tests
This commit is contained in:
@@ -73,6 +73,7 @@ data class SpecTestCase(
|
||||
var code: String,
|
||||
var ranges: MutableList<IntRange>,
|
||||
var unexpectedBehavior: Boolean,
|
||||
var unspecifiedBehavior: Boolean,
|
||||
val issues: MutableList<String>?
|
||||
)
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ enum class SpecTestCaseInfoElementType(
|
||||
) : SpecTestInfoElementType {
|
||||
TESTCASE_NUMBER(valuePattern = testCaseNumberPattern, required = true),
|
||||
RELEVANT_PLACES(valuePattern = relevantPlacesPattern),
|
||||
UNSPECIFIED_BEHAVIOR
|
||||
}
|
||||
|
||||
abstract class AbstractSpecTest(
|
||||
|
||||
@@ -24,7 +24,8 @@ enum class LinkedSpecTestFileInfoElementType(
|
||||
) : SpecTestInfoElementType {
|
||||
SPEC_VERSION(required = true),
|
||||
PLACE(valuePattern = placePattern, required = true),
|
||||
RELEVANT_PLACES(valuePattern = relevantPlacesPattern)
|
||||
RELEVANT_PLACES(valuePattern = relevantPlacesPattern),
|
||||
UNSPECIFIED_BEHAVIOR
|
||||
}
|
||||
|
||||
data class SpecPlace(
|
||||
@@ -43,6 +44,7 @@ class LinkedSpecTest(
|
||||
description: String,
|
||||
cases: SpecTestCasesSet,
|
||||
unexpectedBehavior: Boolean,
|
||||
private val unspecifiedBehavior: Boolean,
|
||||
issues: Set<String>,
|
||||
helpers: Set<String>?
|
||||
) : AbstractSpecTest(testArea, testType, place.sections, testNumber, description, cases, unexpectedBehavior, issues, helpers) {
|
||||
@@ -54,8 +56,22 @@ class LinkedSpecTest(
|
||||
&& place.sentenceNumber == pathMatcher.group("sentenceNumber").toInt()
|
||||
&& testNumber == pathMatcher.group("testNumber").toInt()
|
||||
|
||||
private fun getUnspecifiedBehaviourText(): String? {
|
||||
val separatedTestCasesUnspecifiedBehaviorNumber = cases.byNumbers.count { it.value.unspecifiedBehavior }
|
||||
val testCasesUnspecifiedBehaviorNumber = when {
|
||||
unspecifiedBehavior -> cases.byNumbers.size
|
||||
separatedTestCasesUnspecifiedBehaviorNumber != 0 -> separatedTestCasesUnspecifiedBehaviorNumber
|
||||
else -> 0
|
||||
}
|
||||
|
||||
return if (testCasesUnspecifiedBehaviorNumber != 0) {
|
||||
"!!! HAS UNSPECIFIED BEHAVIOUR (in $testCasesUnspecifiedBehaviorNumber cases) !!!"
|
||||
} else null
|
||||
}
|
||||
|
||||
override fun toString() = buildString {
|
||||
append("--------------------------------------------------$ls")
|
||||
getUnspecifiedBehaviourText()?.let { append(it + ls) }
|
||||
super.getUnexpectedBehaviourText()?.let { append(it + ls) }
|
||||
append("${testArea.name.withSpaces()} $testType SPEC TEST (${testType.toString().withSpaces()})$ls")
|
||||
append("SPEC VERSION: $specVersion$ls")
|
||||
|
||||
@@ -70,6 +70,7 @@ object CommonParser {
|
||||
parsedTestFile.testDescription,
|
||||
parsedTestFile.testCasesSet,
|
||||
parsedTestFile.unexpectedBehavior,
|
||||
LinkedSpecTestFileInfoElementType.UNSPECIFIED_BEHAVIOR in testInfoElements,
|
||||
parsedTestFile.issues,
|
||||
parsedTestFile.helpers
|
||||
)
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.spec.parsers
|
||||
|
||||
import org.jetbrains.kotlin.spec.*
|
||||
import org.jetbrains.kotlin.spec.models.CommonInfoElementType
|
||||
import org.jetbrains.kotlin.spec.models.LinkedSpecTestFileInfoElementType
|
||||
import org.jetbrains.kotlin.spec.models.SpecTestCaseInfoElementType
|
||||
import org.jetbrains.kotlin.spec.models.SpecTestInfoElements
|
||||
import org.jetbrains.kotlin.spec.parsers.CommonParser.splitByComma
|
||||
@@ -16,6 +17,7 @@ import java.util.*
|
||||
private operator fun SpecTestCase.plusAssign(addTestCase: SpecTestCase) {
|
||||
this.code += addTestCase.code
|
||||
this.unexpectedBehavior = this.unexpectedBehavior or addTestCase.unexpectedBehavior
|
||||
this.unspecifiedBehavior = this.unspecifiedBehavior or addTestCase.unspecifiedBehavior
|
||||
this.issues?.addAll(addTestCase.issues!!)
|
||||
this.ranges.addAll(addTestCase.ranges)
|
||||
}
|
||||
@@ -71,6 +73,7 @@ fun parseTestCases(testFiles: TestFiles): SpecTestCasesSet {
|
||||
code = matcher.group("codeSL") ?: matcher.group("codeML"),
|
||||
ranges = mutableListOf(range),
|
||||
unexpectedBehavior = caseInfoElements.contains(CommonInfoElementType.UNEXPECTED_BEHAVIOUR),
|
||||
unspecifiedBehavior = caseInfoElements.contains(LinkedSpecTestFileInfoElementType.UNSPECIFIED_BEHAVIOR),
|
||||
issues = CommonParser.parseIssues(caseInfoElements[CommonInfoElementType.ISSUES]).toMutableList()
|
||||
).save(testCasesSet.byNumbers, testCasesOfFile, testCasesByRangesOfFile, caseInfoElements)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user