blob: 1ec297e41570821b7fb4dee01672839c8959db07 [file] [log] [blame]
/*
* Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
// -- Testing with Mocha under Node
task installDependenciesMochaNode(type: NpmTask, dependsOn: [npmInstall]) {
args = ['install',
"mocha@$mocha_version",
"source-map-support@$source_map_support_version",
'--no-save']
if (project.hasProperty("teamcity")) args.addAll(["mocha-teamcity-reporter@$mocha_teamcity_reporter_version"])
}
def compileJsLegacy = tasks.hasProperty("compileKotlinJsLegacy")
? compileKotlinJsLegacy
: compileKotlinJs
def compileTestJsLegacy = tasks.hasProperty("compileTestKotlinJsLegacy")
? compileTestKotlinJsLegacy
: compileTestKotlinJs
// todo: use atomicfu-transformed test files here (not critical)
task testMochaNode(type: NodeTask, dependsOn: [compileTestJsLegacy, installDependenciesMochaNode]) {
script = file("${node.nodeProjectDir.getAsFile().get()}/node_modules/mocha/bin/mocha")
args = [compileTestJsLegacy.outputFileProperty.get().path, '--require', 'source-map-support/register']
if (project.hasProperty("teamcity")) args.addAll(['--reporter', 'mocha-teamcity-reporter'])
}
def jsLegacyTestTask = project.tasks.findByName('jsLegacyTest') ? jsLegacyTest : jsTest
// TODO
//jsLegacyTestTask.dependsOn testMochaNode
// -- Testing with Mocha under headless Chrome
task installDependenciesMochaChrome(type: NpmTask, dependsOn: [npmInstall]) {
args = ['install',
"mocha@$mocha_version",
"mocha-headless-chrome@$mocha_headless_chrome_version",
"kotlin@$kotlin_version",
"kotlin-test@$kotlin_version",
'--no-save']
if (project.hasProperty("teamcity")) args.addAll([
"mocha-teamcity-reporter@$mocha_teamcity_reporter_version"])
}
def mochaChromeTestPage = file("$buildDir/test-page.html")
task prepareMochaChrome(dependsOn: [compileTestJsLegacy, installDependenciesMochaChrome]) {
outputs.file(mochaChromeTestPage)
}
prepareMochaChrome.doLast {
def nodeProjDir = node.nodeProjectDir.getAsFile().get()
mochaChromeTestPage.text = """<!DOCTYPE html>
<html>
<head>
<title>Mocha Tests</title>
<meta charset="utf-8">
<link rel="stylesheet" href="$nodeProjDir/node_modules/mocha/mocha.css">
</head>
<body>
<div id="mocha"></div>
<script src="$nodeProjDir/node_modules/mocha/mocha.js"></script>
<script>mocha.setup('bdd');</script>
<script src="$nodeProjDir/node_modules/kotlin/kotlin.js"></script>
<script src="$nodeProjDir/node_modules/kotlin-test/kotlin-test.js"></script>
<script src="${compileJsLegacy.outputFileProperty.get().path}"></script>
<script src="${compileTestJsLegacy.outputFileProperty.get().path}"></script>
<script>mocha.run();</script>
</body>
</html>
"""
}
task testMochaChrome(type: NodeTask, dependsOn: prepareMochaChrome) {
script = file("${node.nodeProjectDir.getAsFile().get()}/node_modules/mocha-headless-chrome/bin/start")
args = [compileTestJsLegacy.outputFileProperty.get().path, '--file', mochaChromeTestPage]
if (project.hasProperty("teamcity")) args.addAll(['--reporter', 'mocha-teamcity-reporter'])
}
// todo: Commented out because mocha-headless-chrome does not work on TeamCity
//jsTest.dependsOn testMochaChrome
// -- Testing with Mocha under jsdom
task installDependenciesMochaJsdom(type: NpmTask, dependsOn: [npmInstall]) {
args = ['install',
"mocha@$mocha_version",
"jsdom@$jsdom_version",
"jsdom-global@$jsdom_global_version",
"source-map-support@$source_map_support_version",
'--no-save']
if (project.hasProperty("teamcity")) args.addAll(["mocha-teamcity-reporter@$mocha_teamcity_reporter_version"])
}
task testMochaJsdom(type: NodeTask, dependsOn: [compileTestJsLegacy, installDependenciesMochaJsdom]) {
script = file("${node.nodeProjectDir.getAsFile().get()}/node_modules/mocha/bin/mocha")
args = [compileTestJsLegacy.outputFileProperty.get().path, '--require', 'source-map-support/register', '--require', 'jsdom-global/register']
if (project.hasProperty("teamcity")) args.addAll(['--reporter', 'mocha-teamcity-reporter'])
}
// TODO
//jsLegacyTestTask.dependsOn testMochaJsdom