Refactor AbstractLineNumberTest using assertEqualsToFile
This commit is contained in:
@@ -18,4 +18,4 @@ fun fail() : String {
|
|||||||
throw AssertionError("fail")
|
throw AssertionError("fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
//2 14 2 14 5 14 5 14 7 10 14 18
|
// 2 14 2 14 5 14 5 14 7 10 14 18
|
||||||
@@ -20,7 +20,9 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.intellij.openapi.util.io.FileUtil;
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
|
import kotlin.CollectionsKt;
|
||||||
import kotlin.Pair;
|
import kotlin.Pair;
|
||||||
|
import kotlin.jvm.functions.Function1;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.backend.common.output.OutputFile;
|
import org.jetbrains.kotlin.backend.common.output.OutputFile;
|
||||||
import org.jetbrains.kotlin.backend.common.output.OutputFileCollection;
|
import org.jetbrains.kotlin.backend.common.output.OutputFileCollection;
|
||||||
@@ -100,21 +102,29 @@ public abstract class AbstractLineNumberTest extends TestCaseWithTmpdir {
|
|||||||
|
|
||||||
GenerationState state = GenerationUtils.compileFileGetGenerationStateForTest(psiFile, environment);
|
GenerationState state = GenerationUtils.compileFileGetGenerationStateForTest(psiFile, environment);
|
||||||
|
|
||||||
List<Integer> expectedLineNumbers;
|
|
||||||
List<Integer> actualLineNumbers;
|
|
||||||
if (custom) {
|
if (custom) {
|
||||||
expectedLineNumbers = extractCustomLineNumbersFromSource(psiFile);
|
List<Integer> actualLineNumbers = extractActualLineNumbersFromBytecode(state, false);
|
||||||
actualLineNumbers = extractActualLineNumbersFromBytecode(state, false);
|
String text = psiFile.getText();
|
||||||
assertEquals(expectedLineNumbers, actualLineNumbers);
|
String newFileText = text.substring(0, text.indexOf("// ")) + getActualLineNumbersAsString(actualLineNumbers);
|
||||||
|
KotlinTestUtils.assertEqualsToFile(new File(filename), newFileText);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
expectedLineNumbers = extractSelectedLineNumbersFromSource(psiFile);
|
List<Integer> expectedLineNumbers = extractSelectedLineNumbersFromSource(psiFile);
|
||||||
actualLineNumbers = extractActualLineNumbersFromBytecode(state, true);
|
List<Integer> actualLineNumbers = extractActualLineNumbersFromBytecode(state, true);
|
||||||
assertSameElements(actualLineNumbers, expectedLineNumbers);
|
assertSameElements(actualLineNumbers, expectedLineNumbers);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getActualLineNumbersAsString(List<Integer> list) {
|
||||||
|
return CollectionsKt.joinToString(list, " ", "// ", "", -1, "...", new Function1<Integer, CharSequence>() {
|
||||||
|
@Override
|
||||||
|
public CharSequence invoke(Integer integer) {
|
||||||
|
return integer.toString();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static List<Integer> extractActualLineNumbersFromBytecode(@NotNull GenerationState state, boolean testFunInvoke) {
|
private static List<Integer> extractActualLineNumbersFromBytecode(@NotNull GenerationState state, boolean testFunInvoke) {
|
||||||
ClassFileFactory factory = state.getFactory();
|
ClassFileFactory factory = state.getFactory();
|
||||||
@@ -142,24 +152,6 @@ public abstract class AbstractLineNumberTest extends TestCaseWithTmpdir {
|
|||||||
doTest(path, true);
|
doTest(path, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private static List<Integer> extractCustomLineNumbersFromSource(@NotNull KtFile file) {
|
|
||||||
String fileContent = file.getText();
|
|
||||||
List<Integer> lineNumbers = Lists.newArrayList();
|
|
||||||
String[] lines = StringUtil.convertLineSeparators(fileContent).split("\n");
|
|
||||||
|
|
||||||
for (String line : lines) {
|
|
||||||
if (line.startsWith("//")) {
|
|
||||||
String[] numbers = line.substring("//".length()).trim().split(" +");
|
|
||||||
for (String number : numbers) {
|
|
||||||
lineNumbers.add(Integer.parseInt(number));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return lineNumbers;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static List<Integer> extractSelectedLineNumbersFromSource(@NotNull KtFile file) {
|
private static List<Integer> extractSelectedLineNumbersFromSource(@NotNull KtFile file) {
|
||||||
String fileContent = file.getText();
|
String fileContent = file.getText();
|
||||||
|
|||||||
Reference in New Issue
Block a user