Skip to content

Commit

Permalink
Bump version, remove legacy JS testing stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
mrapplexz committed Aug 20, 2020
1 parent 44110c2 commit ad69d80
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 88 deletions.
2 changes: 0 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ val projectVersion: String by project
val projectDescription: String by project
val projectChangelog: String by project
val kotlinVersion: String by project
val nodeVersion: String by project
val dokkaVersion: String by project
val androidBuildToolsVersion: String by project
val ideaExtVersion: String by project
Expand Down Expand Up @@ -101,7 +100,6 @@ project(":multigradle") {
dependencies {
"implementation"("org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlinVersion")
"api"("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
"api"("com.github.node-gradle:gradle-node-plugin:$nodeVersion")
"api"("org.jetbrains.dokka:dokka-gradle-plugin:$dokkaVersion")
"api"("com.android.tools.build:gradle:$androidBuildToolsVersion")
"api"("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:$ideaExtVersion")
Expand Down
5 changes: 2 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
projectVersion=1.9.0
projectChangelog=Update to Kotlin 1.4.0, add more common native source sets, add wildcard support for enabledPlatforms property.
projectVersion=1.9.1
projectChangelog=Remove legacy JavaScript testing stuff

projectDescription=A Gradle plugin that simplifies the creation of %type% multiplatform Kotlin projects.

nodeVersion=2.2.4
kotlinVersion=1.4.0
dokkaVersion=0.10.1
pluginPublishVersion=0.12.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,33 @@

package net.pearx.multigradle.util.platform

import com.moowork.gradle.node.NodeExtension
import com.moowork.gradle.node.NodePlugin
import com.moowork.gradle.node.npm.NpmTask
import com.moowork.gradle.node.task.NodeTask
import net.pearx.multigradle.util.alias
import net.pearx.multigradle.util.invoke
import net.pearx.multigradle.util.kotlinMpp
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.tasks.Sync
import org.gradle.api.tasks.TaskProvider
import org.gradle.kotlin.dsl.*
import java.nio.file.Files

class JsPlatformConfig(project: Project) : PlatformConfig(project) {
var nodeJsVersion: String by project.the<NodeExtension>().alias(NodeExtension::getVersion, NodeExtension::setVersion)
var npmVersion: String by project.the<NodeExtension>().alias(NodeExtension::getNpmVersion, NodeExtension::setNpmVersion)
lateinit var mochaVersion: String
lateinit var mochaJunitReporterVersion: String
var npmPackages = mutableMapOf<String, String>()

inline fun npmPackages(init: MutableMap<String, String>.() -> Unit) {
init(npmPackages)
}
}
class JsPlatformConfig(project: Project) : PlatformConfig(project)

val JsPlatform = platform("js", listOf("jsTest"), { JsPlatformConfig(it) }) { ext ->
apply<NodePlugin>()

configure<NodeExtension> {
download = true

val cacheDir = file("$rootDir/.gradle/node")
workDir = file("$cacheDir/nodejs")
npmWorkDir = file("$cacheDir/npm")
yarnWorkDir = file("$cacheDir/yarn")
// todo move to $buildDir/node_modules when https://github.com/srs/gradle-node-plugin/issues/300 will be resolved
nodeModulesDir = file("$projectDir/node_modules")
}

kotlinMpp {
js {
browser {
testTask {
useKarma {
useChromeHeadless()
usePhantomJS()
useFirefoxHeadless()
useOpera()
useSafari()
useIe()
}
}
}
nodejs {
testTask {
useMocha()
}
}
compilations.configureEach {
kotlinOptions {
moduleKind = "umd"
Expand All @@ -68,54 +53,4 @@ val JsPlatform = platform("js", listOf("jsTest"), { JsPlatformConfig(it) }) { ex
}
}
}

tasks {
val jsMainCompilation = kotlinMpp.js().compilations["main"]
val jsTestCompilation = kotlinMpp.js().compilations["test"]

val jsTestSyncNodeModules by registering(Sync::class) {
dependsOn(jsTestCompilation.compileKotlinTask, jsMainCompilation.compileKotlinTask)
from(jsTestCompilation.runtimeDependencyFiles.map { if (it.extension == "jar") zipTree(it) else it })
include { it.path.endsWith(".js", true) }
into("$buildDir/kotlinjs")
}

val jsTestInstallPackages by registering(NpmTask::class) {
doFirst {
setArgs(mutableListOf(
"install",
"mocha@${ext().mochaVersion}",
"mocha-jenkins-reporter@${ext().mochaJunitReporterVersion}")
.apply {
for ((name, version) in ext().npmPackages)
add("$name@$version")
})
}
}

val jsTestRunMocha by registering(NodeTask::class) {
dependsOn(jsTestInstallPackages, jsTestSyncNodeModules, jsTestCompilation.compileAllTaskName)
setScript(file("${project.the<NodeExtension>().nodeModulesDir}/mocha/bin/mocha"))
setEnvironment(mapOf("NODE_PATH" to "$buildDir/kotlinjs", "JUNIT_REPORT_PATH" to "$buildDir/test-results/jsTest/mocha.xml"))
setArgs(listOf(jsTestCompilation.output.classesDirs.first().toString(), "--reporter", "mocha-jenkins-reporter"))
}

named("jsTest") {
dependsOn(jsTestRunMocha)
}


listOf<TaskProvider<out Task>>(jsTestRunMocha, jsTestSyncNodeModules, jsTestInstallPackages, named("npmSetup"), named("nodeSetup")).forEach { task ->
task.configure {
onlyIf {
try {
Files.newDirectoryStream(jsTestCompilation.output.classesDirs.first().toPath()).use { f -> f.iterator().hasNext() }
}
catch (e: Exception) {
false
}
}
}
}
}
}

0 comments on commit ad69d80

Please sign in to comment.