Minor. Code clean

This commit is contained in:
Mikhael Bogdanov
2018-08-24 17:02:35 +02:00
parent f06b6ed47e
commit 9a1b2daa12
2 changed files with 20 additions and 16 deletions
@@ -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()) {
@@ -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