Minor. Code clean
This commit is contained in:
+11
-12
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.codegen
|
package org.jetbrains.kotlin.codegen
|
||||||
|
|
||||||
import com.google.common.io.Files
|
import com.google.common.io.Files
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
|
||||||
import com.intellij.openapi.util.text.StringUtil
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
import com.intellij.util.containers.ContainerUtil
|
import com.intellij.util.containers.ContainerUtil
|
||||||
import junit.framework.TestCase
|
import junit.framework.TestCase
|
||||||
@@ -35,15 +34,12 @@ import java.util.regex.Pattern
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() {
|
abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() {
|
||||||
protected lateinit var ktFile: File
|
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun doMultiFileTest(wholeFile: File, files: List<CodegenTestCase.TestFile>, javaFilesDir: File?) {
|
override fun doMultiFileTest(wholeFile: File, files: List<CodegenTestCase.TestFile>, javaFilesDir: File?) {
|
||||||
ktFile = wholeFile
|
|
||||||
val text = FileUtil.loadFile(ktFile, true)
|
|
||||||
compile(files, javaFilesDir)
|
compile(files, javaFilesDir)
|
||||||
|
|
||||||
val classAndMethod = parseClassAndMethodSignature()
|
val classAndMethod = parseClassAndMethodSignature(wholeFile)
|
||||||
val split = classAndMethod.split("\\.".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
val split = classAndMethod.split("\\.".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
||||||
assert(split.size == 2) { "Exactly one dot is expected: $classAndMethod" }
|
assert(split.size == 2) { "Exactly one dot is expected: $classAndMethod" }
|
||||||
val classFileRegex = StringUtil.escapeToRegexp(split[0] + ".class").replace("\\*", ".+")
|
val classFileRegex = StringUtil.escapeToRegexp(split[0] + ".class").replace("\\*", ".+")
|
||||||
@@ -55,15 +51,18 @@ abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() {
|
|||||||
val pathsString = outputFiles.joinToString { it.relativePath }
|
val pathsString = outputFiles.joinToString { it.relativePath }
|
||||||
assertNotNull("Couldn't find class file for pattern $classFileRegex in: $pathsString", outputFile)
|
assertNotNull("Couldn't find class file for pattern $classFileRegex in: $pathsString", outputFile)
|
||||||
|
|
||||||
val cr = ClassReader(outputFile!!.asByteArray())
|
val actualLocalVariables = readLocalVariable(ClassReader(outputFile!!.asByteArray()), methodName)
|
||||||
val actualLocalVariables = readLocalVariable(cr, methodName)
|
|
||||||
|
|
||||||
doCompare(text, actualLocalVariables)
|
doCompare(wholeFile, files.single().content, actualLocalVariables)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected open fun doCompare(text: String, actualLocalVariables: List<LocalVariable>) {
|
protected open fun doCompare(
|
||||||
|
testFile: File,
|
||||||
|
text: String,
|
||||||
|
actualLocalVariables: List<LocalVariable>
|
||||||
|
) {
|
||||||
KotlinTestUtils.assertEqualsToFile(
|
KotlinTestUtils.assertEqualsToFile(
|
||||||
ktFile,
|
testFile,
|
||||||
text.substring(0, text.indexOf("// VARIABLE : ")) + getActualVariablesAsString(
|
text.substring(0, text.indexOf("// VARIABLE : ")) + getActualVariablesAsString(
|
||||||
actualLocalVariables
|
actualLocalVariables
|
||||||
)
|
)
|
||||||
@@ -82,8 +81,8 @@ abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
private fun parseClassAndMethodSignature(): String {
|
private fun parseClassAndMethodSignature(testFile: File): String {
|
||||||
val lines = Files.readLines(ktFile, Charset.forName("utf-8"))
|
val lines = Files.readLines(testFile, Charset.forName("utf-8"))
|
||||||
for (line in lines) {
|
for (line in lines) {
|
||||||
val methodMatcher = methodPattern.matcher(line)
|
val methodMatcher = methodPattern.matcher(line)
|
||||||
if (methodMatcher.matches()) {
|
if (methodMatcher.matches()) {
|
||||||
|
|||||||
+9
-4
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.junit.ComparisonFailure
|
import org.junit.ComparisonFailure
|
||||||
|
import java.io.File
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
|
|
||||||
abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariablesTableTest() {
|
abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariablesTableTest() {
|
||||||
@@ -23,9 +24,13 @@ abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariab
|
|||||||
return ConfigurationKind.ALL;
|
return ConfigurationKind.ALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun doCompare(text: String, actualLocalVariables: List<LocalVariable>) {
|
override fun doCompare(
|
||||||
|
testFile: File,
|
||||||
|
text: String,
|
||||||
|
actualLocalVariables: List<LocalVariable>
|
||||||
|
) {
|
||||||
val actual = getActualVariablesAsList(actualLocalVariables)
|
val actual = getActualVariablesAsList(actualLocalVariables)
|
||||||
val expected = getExpectedVariablesAsList()
|
val expected = getExpectedVariablesAsList(testFile)
|
||||||
if (!Comparing.equal(expected, actual)) {
|
if (!Comparing.equal(expected, actual)) {
|
||||||
throw ComparisonFailure(
|
throw ComparisonFailure(
|
||||||
"Variables differ from expected",
|
"Variables differ from expected",
|
||||||
@@ -41,8 +46,8 @@ abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariab
|
|||||||
.sorted()
|
.sorted()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getExpectedVariablesAsList(): List<String> {
|
private fun getExpectedVariablesAsList(testFile: File): List<String> {
|
||||||
return ktFile.readLines(Charset.forName("utf-8"))
|
return testFile.readLines(Charset.forName("utf-8"))
|
||||||
.filter { line -> line.startsWith("// VARIABLE ") }
|
.filter { line -> line.startsWith("// VARIABLE ") }
|
||||||
.filter { !it.contains("NAME=\$i\$") }
|
.filter { !it.contains("NAME=\$i\$") }
|
||||||
.map { line -> line.replaceFirst("INDEX=\\d+".toRegex(), "INDEX=*") } // Ignore index
|
.map { line -> line.replaceFirst("INDEX=\\d+".toRegex(), "INDEX=*") } // Ignore index
|
||||||
|
|||||||
Reference in New Issue
Block a user