diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt index 81a91dfc82217..c0a404da63730 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt @@ -104,7 +104,14 @@ abstract class BasicBoxTest( val additionalCommonFiles = additionalCommonFileDirectories.flatMap { baseDir -> JsTestUtils.getFilesInDirectoryByExtension(baseDir + "/", JavaScript.EXTENSION) } - val inputJsFiles = inputFiles.map { it.fileName }.filter { it.endsWith(".js") } + val inputJsFiles = inputFiles + .filter { it.fileName.endsWith(".js") } + .map { file -> + val sourceFile = File(file.fileName) + val targetFile = File(outputDir, file.module.outputFileSimpleName() + "-js-" + sourceFile.name) + FileUtil.copy(File(file.fileName), targetFile) + targetFile.absolutePath + } val additionalFiles = mutableListOf() if (modules.size > 1) { @@ -118,9 +125,11 @@ abstract class BasicBoxTest( val allJsFiles = additionalFiles + inputJsFiles + generatedJsFiles + globalCommonFiles + localCommonFiles + additionalCommonFiles - val nodeRunnerName = mainModule.outputFileName(outputDir) + ".node.js" - val nodeRunnerText = generateNodeRunner(allJsFiles, outputDir, mainModuleName, testFactory.testPackage) - FileUtil.writeToFile(File(nodeRunnerName), nodeRunnerText) + if (!SKIP_NODE_JS.matcher(expectedText).find()) { + val nodeRunnerName = mainModule.outputFileName(outputDir) + ".node.js" + val nodeRunnerText = generateNodeRunner(allJsFiles, outputDir, mainModuleName, testFactory.testPackage) + FileUtil.writeToFile(File(nodeRunnerName), nodeRunnerText) + } RhinoUtils.runRhinoTest(allJsFiles, checker) } @@ -137,7 +146,7 @@ abstract class BasicBoxTest( val fileName = FileUtil.getRelativePath(dir, File(file))!! sb.append("text += fs.readFileSync(__dirname + \"/$fileName\") + \"\\n\";\n") } - sb.append("text += 'return $moduleName;';\n") + sb.append("text += 'return kotlin.modules.$moduleName;';\n") sb.append("text += \"};\";\n") val fqn = testPackage?.let { ".$it" } ?: "" @@ -160,11 +169,11 @@ abstract class BasicBoxTest( private fun TestModule.outputFileSimpleName(): String { val outputFileSuffix = if (this.name == TEST_MODULE) "" else "-$name" - return getTestName(true) + "${outputFileSuffix}_v5" + return getTestName(true) + outputFileSuffix } private fun TestModule.outputFileName(directory: File): String { - return directory.absolutePath + "/" + outputFileSimpleName() + return directory.absolutePath + "/" + outputFileSimpleName() + "_v5" } private fun generateJavaScriptFile( @@ -315,5 +324,6 @@ abstract class BasicBoxTest( private val MODULE_KIND_PATTERN = Pattern.compile("^// *MODULE_KIND: *(.+)$", Pattern.MULTILINE) private val NO_INLINE_PATTERN = Pattern.compile("^// *NO_INLINE *$", Pattern.MULTILINE) + private val SKIP_NODE_JS = Pattern.compile("^// *SKIP_NODE_JS *$", Pattern.MULTILINE) } } diff --git a/js/js.translator/testData/.gitignore b/js/js.translator/testData/.gitignore new file mode 100644 index 0000000000000..096746c1480d8 --- /dev/null +++ b/js/js.translator/testData/.gitignore @@ -0,0 +1 @@ +/node_modules/ \ No newline at end of file diff --git a/js/js.translator/testData/box/expression/misc/intRange.kt b/js/js.translator/testData/box/expression/misc/intRange.kt index 84cedd34e1371..7e55104a952eb 100644 --- a/js/js.translator/testData/box/expression/misc/intRange.kt +++ b/js/js.translator/testData/box/expression/misc/intRange.kt @@ -61,9 +61,6 @@ fun testRange(): Boolean { for (i in oneToFive) { sum += i; } - for (i in oneToFive) { - print(i) - } if (sum != 10) return false; @@ -73,8 +70,6 @@ fun testRange(): Boolean { fun testReversedRange(): Boolean { - println("Testing reversed range."); - val tenToFive = NumberRange(10, 5, true); if (tenToFive.contains(5)) return false; @@ -91,11 +86,6 @@ fun testReversedRange(): Boolean { if (!(tenToFive.size == 5)) return false; if (!(tenToFive.end == 6)) return false; - for (i in tenToFive) { - println(i) - } - - var sum = 0; for (i in tenToFive) { sum += i; diff --git a/js/js.translator/testData/box/native/print.kt b/js/js.translator/testData/box/native/print.kt index 2a2ba8813687b..2e9d81eb6cced 100644 --- a/js/js.translator/testData/box/native/print.kt +++ b/js/js.translator/testData/box/native/print.kt @@ -1,3 +1,4 @@ +// SKIP_NODE_JS package foo val EXPECTED = """Hello, World diff --git a/js/js.translator/testData/moduleEmulation.js b/js/js.translator/testData/moduleEmulation.js index eefbca5ca49cf..7156925fef1e3 100644 --- a/js/js.translator/testData/moduleEmulation.js +++ b/js/js.translator/testData/moduleEmulation.js @@ -1,30 +1,24 @@ -(function(global) { - var modules = { kotlin: kotlin }; + + var emulatedModules = { kotlin: kotlin }; var module = { exports: {} }; function require(moduleId) { - return modules[moduleId]; + return emulatedModules[moduleId]; } - function beginModule() { + function __beginModule__() { module.exports = {}; } - function endModule(moduleId) { - modules[moduleId] = module.exports; + function __endModule__(moduleId) { + emulatedModules[moduleId] = module.exports; } function define(moduleId, dependencies, body) { var resolvedDependencies = []; for (var i = 0; i < dependencies.length; ++i) { - resolvedDependencies.push(modules[dependencies[i]]); + resolvedDependencies.push(emulatedModules[dependencies[i]]); } - modules[moduleId] = body.apply(null, resolvedDependencies); + emulatedModules[moduleId] = body.apply(null, resolvedDependencies); } - - global.require = require; - global.define = define; - global.__beginModule__ = beginModule; - global.__endModule__ = endModule; - global.module = module; -})(this); \ No newline at end of file + define.amd = {}; diff --git a/js/js.translator/testData/test.js b/js/js.translator/testData/test.js index 70bda40e4acc7..1e9ce1dfa8335 100644 --- a/js/js.translator/testData/test.js +++ b/js/js.translator/testData/test.js @@ -2,7 +2,12 @@ var assert = require('assert'); var fs = require('fs'); -var kotlin = require(process.env.KOTLIN_JS_LOCATION); +var kotlinJsLocation = process.env.KOTLIN_JS_LOCATION; +if (!kotlinJsLocation) { + kotlinJsLocation = "../../../dist/js/kotlin.js"; +} +var kotlin = require(kotlinJsLocation); +supplyAsserter(kotlin); var requireFromString = require('require-from-string'); var model = generateModel("out"); @@ -60,4 +65,36 @@ function generateModel(path) { } else { return void 0; } +} + +function supplyAsserter(kotlin) { + var asserterContainer = kotlin.defineRootPackage(null, { + asserter : kotlin.createClass( + function () { + return [kotlin.kotlin.test.Asserter]; + }, + function () {}, + { + assertTrue_tup0fe$: function (lazyMessage, actual) { + kotlin.kotlin.test.assertTrue_8kj6y5$(actual, lazyMessage()); + }, + assertTrue_ivxn3r$: function (message, actual) { + if (!actual) { + this.failWithMessage(message); + } + }, + fail_61zpoe$: function (message) { + this.failWithMessage(message); + }, + failWithMessage: function (message) { + if (message == null) { + throw new Kotlin.AssertionError(); + } else { + throw new Kotlin.AssertionError(message); + } + } + } + ) + }); + kotlin.kotlin.test.asserter = new asserterContainer.asserter(); } \ No newline at end of file