Skip to content

Commit

Permalink
JS: fix bugs in test environment for mocha.js
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexey Andreev authored and Alexey Andreev committed Sep 29, 2016
1 parent aa1a030 commit 44f7a94
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 33 deletions.
24 changes: 17 additions & 7 deletions js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt
Expand Up @@ -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<String>()
if (modules.size > 1) {
Expand All @@ -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)
}
Expand All @@ -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" } ?: ""
Expand All @@ -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(
Expand Down Expand Up @@ -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)
}
}
1 change: 1 addition & 0 deletions js/js.translator/testData/.gitignore
@@ -0,0 +1 @@
/node_modules/
10 changes: 0 additions & 10 deletions js/js.translator/testData/box/expression/misc/intRange.kt
Expand Up @@ -61,9 +61,6 @@ fun testRange(): Boolean {
for (i in oneToFive) {
sum += i;
}
for (i in oneToFive) {
print(i)
}

if (sum != 10) return false;

Expand All @@ -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;
Expand All @@ -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;
Expand Down
1 change: 1 addition & 0 deletions js/js.translator/testData/box/native/print.kt
@@ -1,3 +1,4 @@
// SKIP_NODE_JS
package foo

val EXPECTED = """Hello, World
Expand Down
24 changes: 9 additions & 15 deletions 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);
define.amd = {};
39 changes: 38 additions & 1 deletion js/js.translator/testData/test.js
Expand Up @@ -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");
Expand Down Expand Up @@ -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();
}

0 comments on commit 44f7a94

Please sign in to comment.