Make jvmSignature optional in WriteSignatureTest

This commit is contained in:
Denis Zharkov
2015-11-23 19:47:07 +03:00
parent 917420f332
commit 1731cb8b40
@@ -67,7 +67,7 @@ public abstract class AbstractWriteSignatureTest : TestCaseWithTmpdir() {
expectations.check() expectations.check()
} }
private class SignatureExpectation(val header: String, val name: String, expectedJvmSignature: String, expectedGenericSignature: String) { private class SignatureExpectation(val header: String, val name: String, val expectedJvmSignature: String?, expectedGenericSignature: String) {
private var checked = false private var checked = false
private val expectedSignature = formatSignature(header, expectedJvmSignature, expectedGenericSignature) private val expectedSignature = formatSignature(header, expectedJvmSignature, expectedGenericSignature)
@@ -76,7 +76,7 @@ public abstract class AbstractWriteSignatureTest : TestCaseWithTmpdir() {
fun check(name: String, actualJvmSignature: String, actualGenericSignature: String) { fun check(name: String, actualJvmSignature: String, actualGenericSignature: String) {
if (this.name == name) { if (this.name == name) {
checked = true checked = true
val actualSignature = formatSignature(header, actualJvmSignature, actualGenericSignature) val actualSignature = formatSignature(header, expectedJvmSignature?.let { actualJvmSignature }, actualGenericSignature)
Assert.assertEquals(expectedSignature, actualSignature) Assert.assertEquals(expectedSignature, actualSignature)
} }
} }
@@ -167,15 +167,15 @@ public abstract class AbstractWriteSignatureTest : TestCaseWithTmpdir() {
} }
} }
fun addClassExpectation(name: String, jvmSignature: String, genericSignature: String) { fun addClassExpectation(name: String, jvmSignature: String?, genericSignature: String) {
classExpectations.add(SignatureExpectation("class: $name", name, jvmSignature, genericSignature)) classExpectations.add(SignatureExpectation("class: $name", name, jvmSignature, genericSignature))
} }
fun addFieldExpectation(className: String, memberName: String, jvmSignature: String, genericSignature: String) { fun addFieldExpectation(className: String, memberName: String, jvmSignature: String?, genericSignature: String) {
fieldExpectations.add(SignatureExpectation("field: $className::$memberName", memberName, jvmSignature, genericSignature)) fieldExpectations.add(SignatureExpectation("field: $className::$memberName", memberName, jvmSignature, genericSignature))
} }
fun addMethodExpectation(className: String, memberName: String, jvmSignature: String, genericSignature: String) { fun addMethodExpectation(className: String, memberName: String, jvmSignature: String?, genericSignature: String) {
methodExpectations.add(SignatureExpectation("method: $className::$memberName", memberName, jvmSignature, genericSignature)) methodExpectations.add(SignatureExpectation("method: $className::$memberName", memberName, jvmSignature, genericSignature))
} }
} }
@@ -199,10 +199,11 @@ public abstract class AbstractWriteSignatureTest : TestCaseWithTmpdir() {
} }
val jvmSignatureMatch = jvmSignatureRegex.matchExact(lines[lineNo+1]) val jvmSignatureMatch = jvmSignatureRegex.matchExact(lines[lineNo+1])
val genericSignatureMatch = genericSignatureRegex.matchExact(lines[lineNo+2]) val genericSignatureMatch = genericSignatureRegex.matchExact(lines[lineNo+1])
?: genericSignatureRegex.matchExact(lines[lineNo+2])
if (jvmSignatureMatch != null && genericSignatureMatch != null) { if (genericSignatureMatch != null) {
val jvmSignature = jvmSignatureMatch.group(1) val jvmSignature = jvmSignatureMatch?.group(1)
val genericSignature = genericSignatureMatch.group(1) val genericSignature = genericSignatureMatch.group(1)
val classSuite = expectations.getOrCreateClassSuite(className) val classSuite = expectations.getOrCreateClassSuite(className)
@@ -230,10 +231,13 @@ public abstract class AbstractWriteSignatureTest : TestCaseWithTmpdir() {
} }
companion object { companion object {
fun formatSignature(header: String, jvmSignature: String, genericSignature: String): String = fun formatSignature(header: String, jvmSignature: String?, genericSignature: String): String {
"""// $header return listOf(
// jvm signature: $jvmSignature "$header",
// generic signature: $genericSignature""" jvmSignature?.let { "jvm signature: $it" },
"generic signature: $genericSignature"
).filterNotNull().joinToString("\n") { "// $it" }
}
val expectationRegex = Regex("^// (class|method|field): *([^:]+)(::(.+))? *(//.*)?") val expectationRegex = Regex("^// (class|method|field): *([^:]+)(::(.+))? *(//.*)?")
val jvmSignatureRegex = Regex("^// jvm signature: *(.+) *(//.*)?") val jvmSignatureRegex = Regex("^// jvm signature: *(.+) *(//.*)?")