From 4c710346af3cdf496719bec583148b3eb0ce5a52 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 12 Oct 2012 22:06:36 +0400 Subject: [PATCH] Refactor LineNumberTest Extract methods, annotate with NotNull, inline base code into test class, other minor stuff --- compiler/testData/lineNumber/base.kt | 3 - .../jetbrains/jet/codegen/LineNumberTest.java | 59 +++++++++++++------ 2 files changed, 40 insertions(+), 22 deletions(-) delete mode 100644 compiler/testData/lineNumber/base.kt diff --git a/compiler/testData/lineNumber/base.kt b/compiler/testData/lineNumber/base.kt deleted file mode 100644 index 32117a5fce1..00000000000 --- a/compiler/testData/lineNumber/base.kt +++ /dev/null @@ -1,3 +0,0 @@ -package test - -public fun lineNumber(): Int = 0 diff --git a/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java b/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java index 051212b1ea1..fdbf212641b 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/LineNumberTest.java @@ -20,6 +20,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.asm4.*; import org.jetbrains.jet.CompileCompilerDependenciesTest; import org.jetbrains.jet.ConfigurationKind; @@ -29,6 +30,7 @@ import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentUtil; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.psi.JetPsiFactory; import org.jetbrains.jet.parsing.JetParsingTest; import org.jetbrains.jet.test.TestCaseWithTmpdir; import org.jetbrains.jet.utils.ExceptionUtils; @@ -45,29 +47,36 @@ import java.util.regex.Pattern; */ public class LineNumberTest extends TestCaseWithTmpdir { - private final String LINE_NUMBER_FUN = "lineNumber"; - private final Pattern TEST_LINE_NUMBER_PATTERN = Pattern.compile("^.*test." + LINE_NUMBER_FUN + "\\(\\).*$"); + private static final String LINE_NUMBER_FUN = "lineNumber"; + private static final Pattern TEST_LINE_NUMBER_PATTERN = Pattern.compile("^.*test." + LINE_NUMBER_FUN + "\\(\\).*$"); + @NotNull private String getTestDataPath() { return JetParsingTest.getTestDataDir() + "/lineNumber"; } + @NotNull + private JetCoreEnvironment createEnvironment() { + return new JetCoreEnvironment(myTestRootDisposable, CompileCompilerDependenciesTest + .compilerConfigurationForTests(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, JetTestUtils.getAnnotationsJar(), tmpdir)); + } + @Override public void setUp() throws Exception { super.setUp(); - JetCoreEnvironment jetCoreEnvironment = JetTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(myTestRootDisposable, ConfigurationKind.JDK_ONLY); - File base = new File(getTestDataPath(), "base.kt"); - String text = FileUtil.loadFile(base); + JetCoreEnvironment environment = createEnvironment(); + JetFile psiFile = JetPsiFactory.createFile(environment.getProject(), + "package test;\n\npublic fun " + LINE_NUMBER_FUN + "(): Int = 0\n"); - JetFile psiFile = JetTestUtils.createFile(base.getName(), text, jetCoreEnvironment.getProject()); ClassFileFactory classFileFactory = GenerationUtils.compileFileGetClassFileFactoryForTest(psiFile); CompileEnvironmentUtil.writeToOutputDirectory(classFileFactory, tmpdir); } - private void doTest(File file) { - JetCoreEnvironment jetCoreEnvironment = new JetCoreEnvironment(myTestRootDisposable, CompileCompilerDependenciesTest - .compilerConfigurationForTests(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, JetTestUtils.getAnnotationsJar(), tmpdir)); + @NotNull + private JetFile createPsiFile(@NotNull String filename) { + File file = new File(getTestDataPath() + "/" + filename); + JetCoreEnvironment environment = createEnvironment(); String text; try { @@ -77,14 +86,22 @@ public class LineNumberTest extends TestCaseWithTmpdir { throw ExceptionUtils.rethrow(e); } - JetFile psiFile = JetTestUtils.createFile(file.getName(), text, jetCoreEnvironment.getProject()); - assert psiFile != null; - - List expectedLineNumbers = extractSelectedLineNumbers(text); + return JetTestUtils.createFile(file.getName(), text, environment.getProject()); + } + private void doTest(@NotNull String filename) { + JetFile psiFile = createPsiFile(filename); GenerationState state = GenerationUtils.compileFileGetGenerationStateForTest(psiFile); - ClassFileFactory factory = state.getFactory(); + List expectedLineNumbers = extractSelectedLineNumbersFromSource(psiFile); + List actualLineNumbers = extractActualLineNumbersFromBytecode(state); + + assertSameElements(actualLineNumbers, expectedLineNumbers); + } + + @NotNull + private List extractActualLineNumbersFromBytecode(@NotNull GenerationState state) { + ClassFileFactory factory = state.getFactory(); List actualLineNumbers = Lists.newArrayList(); for (String filename : factory.files()) { ClassReader cr = new ClassReader(factory.asBytes(filename)); @@ -92,18 +109,21 @@ public class LineNumberTest extends TestCaseWithTmpdir { actualLineNumbers.addAll(readLineNumbers(cr)); } catch (Throwable e) { - System.out.println(state.getFactory().createText()); + System.out.println(factory.createText()); throw ExceptionUtils.rethrow(e); } } - assertSameElements(actualLineNumbers, expectedLineNumbers); + + return actualLineNumbers; } private void doTest() { - doTest(new File(getTestDataPath() + "/" + getTestName(true) + ".kt")); + doTest(getTestName(true) + ".kt"); } - private List extractSelectedLineNumbers(String fileContent) { + @NotNull + private List extractSelectedLineNumbersFromSource(@NotNull JetFile file) { + String fileContent = file.getText(); List lineNumbers = Lists.newArrayList(); String[] lines = StringUtil.convertLineSeparators(fileContent).split("\n"); @@ -117,7 +137,8 @@ public class LineNumberTest extends TestCaseWithTmpdir { return lineNumbers; } - private List readLineNumbers(ClassReader cr) { + @NotNull + private List readLineNumbers(@NotNull ClassReader cr) { final List