JS test: check directives in MultipleModulesTranslationTest

This commit is contained in:
Alexey Tsvetkov
2015-05-20 15:46:03 +03:00
parent f214c4eac7
commit 115798f584
4 changed files with 13 additions and 24 deletions
@@ -16,10 +16,7 @@
package org.jetbrains.kotlin.js.test; package org.jetbrains.kotlin.js.test;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.js.test.utils.DirectiveTestUtils;
import org.jetbrains.kotlin.js.test.utils.JsTestUtils;
public abstract class AbstractSingleFileTranslationWithDirectivesTest extends SingleFileTranslationTest { public abstract class AbstractSingleFileTranslationWithDirectivesTest extends SingleFileTranslationTest {
public AbstractSingleFileTranslationWithDirectivesTest(@NotNull String main) { public AbstractSingleFileTranslationWithDirectivesTest(@NotNull String main) {
@@ -30,11 +27,4 @@ public abstract class AbstractSingleFileTranslationWithDirectivesTest extends Si
public void setUp() throws Exception { public void setUp() throws Exception {
super.setUp(); super.setUp();
} }
@Override
protected void processJsProgram(@NotNull JsProgram program) throws Exception {
String fileName = getInputFilePath(getTestName(true) + ".kt");
String fileText = JsTestUtils.readFile(fileName);
DirectiveTestUtils.processDirectives(program, fileText);
}
} }
@@ -42,6 +42,7 @@ import org.jetbrains.kotlin.js.facade.K2JSTranslator;
import org.jetbrains.kotlin.js.facade.MainCallParameters; import org.jetbrains.kotlin.js.facade.MainCallParameters;
import org.jetbrains.kotlin.js.facade.TranslationResult; import org.jetbrains.kotlin.js.facade.TranslationResult;
import org.jetbrains.kotlin.js.test.rhino.RhinoResultChecker; import org.jetbrains.kotlin.js.test.rhino.RhinoResultChecker;
import org.jetbrains.kotlin.js.test.utils.DirectiveTestUtils;
import org.jetbrains.kotlin.js.test.utils.JsTestUtils; import org.jetbrains.kotlin.js.test.utils.JsTestUtils;
import org.jetbrains.kotlin.js.translate.context.Namer; import org.jetbrains.kotlin.js.translate.context.Namer;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
@@ -195,12 +196,13 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
if (!(translationResult instanceof TranslationResult.Success)) return; if (!(translationResult instanceof TranslationResult.Success)) return;
TranslationResult.Success successResult = (TranslationResult.Success) translationResult; TranslationResult.Success successResult = (TranslationResult.Success) translationResult;
processJsProgram(successResult.getProgram());
OutputFileCollection outputFiles = successResult.getOutputFiles(outputFile, getOutputPrefixFile(), getOutputPostfixFile()); OutputFileCollection outputFiles = successResult.getOutputFiles(outputFile, getOutputPrefixFile(), getOutputPostfixFile());
File outputDir = outputFile.getParentFile(); File outputDir = outputFile.getParentFile();
assert outputDir != null : "Parent file for output file should not be null, outputFilePath: " + outputFile.getPath(); assert outputDir != null : "Parent file for output file should not be null, outputFilePath: " + outputFile.getPath();
OutputUtilsPackage.writeAllTo(outputFiles, outputDir); OutputUtilsPackage.writeAllTo(outputFiles, outputDir);
processJsProgram(successResult.getProgram(), jetFiles);
} }
protected File getOutputPostfixFile() { protected File getOutputPostfixFile() {
@@ -223,7 +225,12 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
return false; return false;
} }
protected void processJsProgram(@NotNull JsProgram program) throws Exception { } protected void processJsProgram(@NotNull JsProgram program, @NotNull List<JetFile> jetFiles) throws Exception {
for (JetFile file : jetFiles) {
String text = file.getText();
DirectiveTestUtils.processDirectives(program, text);
}
}
protected void runRhinoTests( protected void runRhinoTests(
@NotNull String testName, @NotNull String testName,
@@ -16,9 +16,12 @@
package org.jetbrains.kotlin.js.test package org.jetbrains.kotlin.js.test
import com.google.dart.compiler.backend.js.ast.JsProgram
import org.jetbrains.kotlin.js.config.EcmaVersion import org.jetbrains.kotlin.js.config.EcmaVersion
import org.jetbrains.kotlin.js.facade.MainCallParameters import org.jetbrains.kotlin.js.facade.MainCallParameters
import org.jetbrains.kotlin.js.test.rhino.RhinoFunctionResultChecker import org.jetbrains.kotlin.js.test.rhino.RhinoFunctionResultChecker
import org.jetbrains.kotlin.js.test.utils.DirectiveTestUtils
import org.jetbrains.kotlin.js.test.utils.JsTestUtils
import org.jetbrains.kotlin.js.test.utils.JsTestUtils.getAllFilesInDir import org.jetbrains.kotlin.js.test.utils.JsTestUtils.getAllFilesInDir
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
import java.io.File import java.io.File
@@ -61,7 +64,7 @@ public abstract class MultipleModulesTranslationTest(main: String) : BasicTest(m
generateJavaScriptFiles(fullFilePaths, moduleDirectoryName, MainCallParameters.noCall(), version, moduleName, libraries) generateJavaScriptFiles(fullFilePaths, moduleDirectoryName, MainCallParameters.noCall(), version, moduleName, libraries)
} }
} }
private fun getMetaFileOutputPath(moduleDirectoryName: String, version: EcmaVersion) = private fun getMetaFileOutputPath(moduleDirectoryName: String, version: EcmaVersion) =
KotlinJavascriptMetadataUtils.replaceSuffix(getOutputFilePath(moduleDirectoryName, version)) KotlinJavascriptMetadataUtils.replaceSuffix(getOutputFilePath(moduleDirectoryName, version))
@@ -147,15 +147,4 @@ public final class InlineMultiFileTest extends MultipleFilesTranslationTest {
public void testSimpleCapturingInPackage() throws Exception { public void testSimpleCapturingInPackage() throws Exception {
checkFooBoxIsOk(); checkFooBoxIsOk();
} }
@Override
protected void processJsProgram(@NotNull JsProgram program) throws Exception {
String dir = getTestName(true);
List<String> fileNames = getAllFilesInDir(getInputFilePath(dir));
for (String fileName : fileNames) {
String fileText = JsTestUtils.readFile(fileName);
DirectiveTestUtils.processDirectives(program, fileText);
}
}
} }