Remove IGNORE_BACKEND_WITHOUT_CHECK and introduce DONT_RUN_GENERATED_CODE

Support DONT_RUN_GENERATED_CODE in JS Box tests.

IGNORE_BACKEND_WITHOUT_CHECK is removed because of
it's often wrongly used and in most cases can be
replaced with IGNORE_BACKEND or DONT_RUN_GENERATED_CODE
or with combination of them.
This commit is contained in:
Zalim Bashorov
2018-04-16 23:56:03 +03:00
parent d03a128aa5
commit ad2ea8f999
4 changed files with 36 additions and 20 deletions
@@ -233,12 +233,13 @@ public final class InTextDirectivesUtils {
return ignoredBackends.contains(targetBackend.name());
}
public static boolean isIgnoredTargetWithoutCheck(TargetBackend targetBackend, File file) {
return isIgnoredTargetByPrefix(targetBackend, file, "// IGNORE_BACKEND_WITHOUT_CHECK: ");
public static boolean dontRunGeneratedCode(TargetBackend targetBackend, File file) {
List<String> backends = findListWithPrefixes(textWithDirectives(file), "// DONT_RUN_GENERATED_CODE: ");
return backends.contains(targetBackend.name());
}
// Whether the target test is supposed to pass successfully on targetBackend
public static boolean isPassingTarget(TargetBackend targetBackend, File file) {
return isCompatibleTarget(targetBackend, file) && !isIgnoredTarget(targetBackend, file) && !isIgnoredTargetWithoutCheck(targetBackend, file);
return isCompatibleTarget(targetBackend, file) && !isIgnoredTarget(targetBackend, file);
}
}
@@ -19,7 +19,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.jetbrains.kotlin.test.InTextDirectivesUtils.isIgnoredTarget;
import static org.jetbrains.kotlin.test.InTextDirectivesUtils.isIgnoredTargetWithoutCheck;
public class SimpleTestMethodModel implements TestMethodModel {
@@ -96,8 +95,7 @@ public class SimpleTestMethodModel implements TestMethodModel {
unescapedName = relativePath + "-" + StringsKt.capitalize(extractedName);
}
boolean ignored = isIgnoredTargetWithoutCheck(targetBackend, file) ||
skipIgnored && isIgnoredTarget(targetBackend, file);
boolean ignored = skipIgnored && isIgnoredTarget(targetBackend, file);
return (ignored ? "ignore" : "test") + StringsKt.capitalize(TestGeneratorUtil.escapeForJavaIdentifier(unescapedName));
}
@@ -72,7 +72,8 @@ abstract class BasicBoxTest(
pathToRootOutputDir: String = BasicBoxTest.TEST_DATA_DIR_PATH,
private val typedArraysEnabled: Boolean = true,
private val generateSourceMap: Boolean = false,
private val generateNodeJsRunner: Boolean = true
private val generateNodeJsRunner: Boolean = true,
private val targetBackend: TargetBackend = TargetBackend.JS
) : KotlinTestWithEnvironment() {
val additionalCommonFileDirectories = mutableListOf<String>()
@@ -161,14 +162,18 @@ abstract class BasicBoxTest(
val allJsFiles = additionalFiles + inputJsFiles + generatedJsFiles.map { it.first } + globalCommonFiles + localCommonFiles +
additionalCommonFiles
if (generateNodeJsRunner && !SKIP_NODE_JS.matcher(fileContent).find()) {
val dontRunGeneratedCode = InTextDirectivesUtils.dontRunGeneratedCode(targetBackend, file)
if (!dontRunGeneratedCode && generateNodeJsRunner && !SKIP_NODE_JS.matcher(fileContent).find()) {
val nodeRunnerName = mainModule.outputFileName(outputDir) + ".node.js"
val ignored = InTextDirectivesUtils.isIgnoredTarget(TargetBackend.JS, file)
val nodeRunnerText = generateNodeRunner(allJsFiles, outputDir, mainModuleName, ignored, testPackage)
FileUtil.writeToFile(File(nodeRunnerName), nodeRunnerText)
}
runGeneratedCode(allJsFiles, mainModuleName, testPackage, testFunction, expectedResult, withModuleSystem)
if (!dontRunGeneratedCode) {
runGeneratedCode(allJsFiles, mainModuleName, testPackage, testFunction, expectedResult, withModuleSystem)
}
performAdditionalChecks(generatedJsFiles.map { it.first }, outputPrefixFile, outputPostfixFile)
@@ -202,16 +207,19 @@ abstract class BasicBoxTest(
}
val outputDirForMinification = getOutputDir(file, testGroupOutputDirForMinification)
minifyAndRun(
workDir = File(outputDirForMinification, file.nameWithoutExtension),
allJsFiles = allJsFiles,
generatedJsFiles = generatedJsFiles,
expectedResult = expectedResult,
testModuleName = mainModuleName,
testPackage = testPackage,
testFunction = testFunction,
withModuleSystem = withModuleSystem,
minificationThresholdChecker = thresholdChecker)
if (!dontRunGeneratedCode) {
minifyAndRun(
workDir = File(outputDirForMinification, file.nameWithoutExtension),
allJsFiles = allJsFiles,
generatedJsFiles = generatedJsFiles,
expectedResult = expectedResult,
testModuleName = mainModuleName,
testPackage = testPackage,
testFunction = testFunction,
withModuleSystem = withModuleSystem,
minificationThresholdChecker = thresholdChecker)
}
}
}
}
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.facade.MainCallParameters
import org.jetbrains.kotlin.js.facade.TranslationUnit
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.test.TargetBackend
import java.io.File
abstract class BasicIrBoxTest(
@@ -18,7 +19,15 @@ abstract class BasicIrBoxTest(
pathToRootOutputDir: String = BasicBoxTest.TEST_DATA_DIR_PATH,
generateSourceMap: Boolean = false,
generateNodeJsRunner: Boolean = false
) : BasicBoxTest(pathToTestDir, testGroupOutputDirPrefix, pathToRootOutputDir, true, generateSourceMap, generateNodeJsRunner) {
) : BasicBoxTest(
pathToTestDir,
testGroupOutputDirPrefix,
pathToRootOutputDir = pathToRootOutputDir,
typedArraysEnabled = true,
generateSourceMap = generateSourceMap,
generateNodeJsRunner = generateNodeJsRunner,
targetBackend = TargetBackend.JS_IR
) {
override var skipMinification = true