JS: fix bugs in test environment for mocha.js
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
@@ -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,3 +1,4 @@
|
||||
// SKIP_NODE_JS
|
||||
package foo
|
||||
|
||||
val EXPECTED = """Hello, World
|
||||
|
||||
+9
-15
@@ -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 = {};
|
||||
|
||||
Vendored
+38
-1
@@ -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();
|
||||
}
|
||||
Reference in New Issue
Block a user