JS test: JS AST access from tests
This commit is contained in:
committed by
Zalim Bashorov
parent
1dcc096753
commit
987708680f
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user