JS test: JS AST access from tests

This commit is contained in:
Alexey Tsvetkov
2014-08-13 19:48:50 +04:00
committed by Zalim Bashorov
parent 1dcc096753
commit 987708680f
6 changed files with 71 additions and 71 deletions
@@ -19,11 +19,14 @@ package org.jetbrains.k2js.test;
import com.google.common.collect.Lists;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.Consumer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
import org.jetbrains.k2js.config.Config;
import org.jetbrains.k2js.config.EcmaVersion;
import org.jetbrains.k2js.facade.MainCallParameters;
import org.jetbrains.k2js.test.config.TestConfig;
@@ -119,9 +122,15 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
@NotNull Iterable<EcmaVersion> ecmaVersions,
@NotNull TestConfigFactory configFactory
) throws Exception {
Project project = getProject();
List<String> allFiles = withAdditionalFiles(files);
List<JetFile> jetFiles = TranslationUtils.createJetFileList(project, allFiles, null);
for (EcmaVersion version : ecmaVersions) {
translateFiles(getProject(), withAdditionalFiles(files), getOutputFilePath(testName, version), mainCallParameters,
version, configFactory);
Config config = TranslationUtils.getConfig(project, version, configFactory);
File outputFile = new File(getOutputFilePath(testName, version));
translateFiles(jetFiles, outputFile, mainCallParameters, config);
}
}
@@ -135,14 +144,13 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
}
protected void translateFiles(
@NotNull Project project,
@NotNull List<String> files,
@NotNull String outputFile,
@NotNull List<JetFile> jetFiles,
@NotNull File outputFile,
@NotNull MainCallParameters mainCallParameters,
@NotNull EcmaVersion version,
@NotNull TestConfigFactory configFactory
@NotNull Config config
) throws Exception {
TranslationUtils.translateFiles(project, mainCallParameters, files, outputFile, version, configFactory);
//noinspection unchecked
TranslationUtils.translateFiles(mainCallParameters, jetFiles, outputFile, null, null, config, Consumer.EMPTY_CONSUMER);
}
@NotNull
@@ -235,5 +243,4 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
protected String expected(@NotNull String testName) {
return getExpectedPath() + testName + ".out";
}
}
@@ -16,24 +16,21 @@
package org.jetbrains.k2js.test;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.Consumer;
import junit.framework.Test;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.k2js.config.Config;
import org.jetbrains.k2js.config.EcmaVersion;
import org.jetbrains.k2js.facade.K2JSTranslator;
import org.jetbrains.k2js.facade.MainCallParameters;
import org.jetbrains.k2js.test.config.TestConfigFactory;
import org.jetbrains.k2js.test.semantics.TranslatorTestCaseBuilder;
import org.jetbrains.k2js.test.utils.TranslationUtils;
import java.io.File;
import java.util.List;
import static org.jetbrains.k2js.test.utils.TranslationUtils.createJetFileList;
import static org.jetbrains.k2js.test.utils.TranslationUtils.getConfig;
@SuppressWarnings("JUnitTestCaseWithNoTests")
public final class OutputPrefixPostfixTest extends SingleFileTranslationTest {
private static final String PREFIX_EXT = ".prefix";
@@ -56,16 +53,13 @@ public final class OutputPrefixPostfixTest extends SingleFileTranslationTest {
@Override
protected void translateFiles(
@NotNull Project project,
@NotNull List<String> files,
@NotNull String outputFile,
@NotNull List<JetFile> jetFiles,
@NotNull File outputFile,
@NotNull MainCallParameters mainCallParameters,
@NotNull EcmaVersion version,
@NotNull TestConfigFactory configFactory
@NotNull Config config
) throws Exception {
TranslationUtils.translateFiles(mainCallParameters, createJetFileList(project, files, null),
outputFile, outputPrefixFile, outputPostfixFile,
getConfig(project, version, configFactory));
//noinspection unchecked
TranslationUtils.translateFiles(mainCallParameters, jetFiles, outputFile, outputPrefixFile, outputPostfixFile, config, Consumer.EMPTY_CONSUMER);
}
@Override
@@ -16,20 +16,11 @@
package org.jetbrains.k2js.test;
import com.intellij.openapi.project.Project;
import junit.framework.Test;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.k2js.config.EcmaVersion;
import org.jetbrains.k2js.facade.MainCallParameters;
import org.jetbrains.k2js.test.config.TestConfig;
import org.jetbrains.k2js.test.config.TestConfigFactory;
import org.jetbrains.k2js.test.semantics.TranslatorTestCaseBuilder;
import org.jetbrains.k2js.test.utils.TranslationUtils;
import java.util.List;
import static org.jetbrains.k2js.test.utils.TranslationUtils.createJetFileList;
import static org.jetbrains.k2js.test.utils.TranslationUtils.getConfig;
@SuppressWarnings("JUnitTestCaseWithNoTests")
public final class SourceMapTest extends SingleFileTranslationTest {
@@ -42,20 +33,6 @@ public final class SourceMapTest extends SingleFileTranslationTest {
this.filename = filename;
}
@Override
protected void translateFiles(
@NotNull Project project,
@NotNull List<String> files,
@NotNull String outputFile,
@NotNull MainCallParameters mainCallParameters,
@NotNull EcmaVersion version,
@NotNull TestConfigFactory configFactory
) throws Exception {
TranslationUtils.translateFiles(mainCallParameters, createJetFileList(project, files, null),
outputFile, null, null,
getConfig(project, version, configFactory));
}
@NotNull
@Override
protected TestConfigFactory getConfigFactory() {
@@ -18,9 +18,12 @@ package org.jetbrains.k2js.test.utils;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.dart.compiler.backend.js.ast.JsNode;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.psi.PsiFile;
import com.intellij.util.Consumer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.OutputFileCollection;
@@ -99,30 +102,38 @@ public final class TranslationUtils {
libraryAnalyzeExhaust.getBindingContext(), libraryAnalyzeExhaust.getModuleDescriptor());
}
public static void translateFiles(
@NotNull Project project,
@NotNull MainCallParameters mainCallParameters,
@NotNull List<String> inputFiles,
@NotNull String outputFile,
@NotNull EcmaVersion version,
@NotNull TestConfigFactory configFactory
) throws Exception {
List<JetFile> jetFiles = createJetFileList(project, inputFiles, null);
Config config = getConfig(project, version, configFactory);
translateFiles(mainCallParameters, jetFiles, outputFile, null, null, config);
}
public static void translateFiles(
@NotNull MainCallParameters mainCall,
@NotNull List<JetFile> files,
@NotNull String outputPath,
@NotNull File outputFile,
@Nullable File outputPrefixFile,
@Nullable File outputPostfixFile,
@NotNull Config config,
@NotNull Consumer<JsNode> astConsumer
) throws TranslationException, IOException {
OutputFileCollection outputFiles =
translateWithMainCallParameters(mainCall, files, outputFile, outputPrefixFile, outputPostfixFile, config, astConsumer);
OutputUtilsPackage.writeAllTo(outputFiles, outputFile.getParentFile());
}
public static JsNode translateFilesAndGetAst(
@NotNull MainCallParameters mainCall,
@NotNull List<JetFile> files,
@NotNull File outputFile,
@Nullable File outputPrefixFile,
@Nullable File outputPostfixFile,
@NotNull Config config
) throws TranslationException, IOException {
File outputFile = new File(outputPath);
OutputFileCollection outputFiles = translateWithMainCallParameters(mainCall, files, outputFile, outputPrefixFile, outputPostfixFile, config);
OutputUtilsPackage.writeAllTo(outputFiles, outputFile.getParentFile());
final Ref<JsNode> ref = new Ref<JsNode>();
translateFiles(mainCall, files, outputFile, outputPrefixFile, outputPostfixFile, config, new Consumer<JsNode>() {
@Override
public void consume(JsNode node) {
ref.set(node);
}
});
return ref.get();
}
@NotNull