JS: fix bugs in test environment for mocha.js

This commit is contained in:
Alexey Andreev
2016-09-02 11:59:27 +03:00
parent aa1a0307a6
commit 44f7a94380
6 changed files with 66 additions and 33 deletions
@@ -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) {
@@ -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)
}
}
+1
View File
@@ -0,0 +1 @@
/node_modules/
@@ -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;
+1
View File
@@ -1,3 +1,4 @@
// SKIP_NODE_JS
package foo
val EXPECTED = """Hello, World
+9 -15
View File
@@ -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 = {};
+38 -1
View File
@@ -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();
}