Skip to content

Commit

Permalink
Extends functionality and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Frederic Kneier committed Jun 15, 2023
1 parent f9b85a6 commit 08dc87c
Show file tree
Hide file tree
Showing 9 changed files with 146 additions and 39 deletions.
28 changes: 27 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,31 @@ gradle npx<ModuleName> -Pargs="..." // npx <module-name>.js <args

### Install development dependency using npm
<pre>
gradle npmInstall -Pargs="--save-dev webpack"
gradle npmInstall -Pargs="--save-dev react"
</pre>

### Build react frontend
```kotlin
nodejs {
rootPath("./frontend")
}

tasks.create("buildFrontend") {
doFirst {
nodejs.execNpm("ci")
nodejs.execNpm("run", "build")
}
}
```

### Execute test for a specific nodejs package
```kotlin
tasks.create("testPackage") {
doFirst {
nodejs.exec {
workingDir("../package")
args(resolveBinary("npm"), "run", "test")
}
}
}
```
41 changes: 38 additions & 3 deletions src/main/kotlin/de/solugo/gradle/nodejs/NodeJsExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,18 @@ class NodeJsExtension(private val project: Project) {
project.provider { project.projectDir }
)

fun version(value: Any?) {
version.set(value?.toString())
}

fun cachePath(value: Any?) {
cachePath.set(value?.let { project.file(it) } )
}

fun rootPath(value: Any?) {
rootPath.set(value?.let { project.file(it) } )
}

val instance
get() = NodeJsRegistry.resolve(
version = version.get(),
Expand Down Expand Up @@ -59,9 +71,32 @@ class NodeJsExtension(private val project: Project) {
}
}

fun execBinary(binary: String, vararg args: String) {
exec {
commandLine(
buildList {
add(resolveBinary(binary))
addAll(args)
}
)
}
}

fun execScript(script: String, vararg args: String) {
exec {
commandLine(
buildList {
add(resolveScript(script))
addAll(args)
}
)
}
}


fun execNode(vararg args: String) {
execNode {
commandLine(args)
commandLine(*args)
}
}

Expand All @@ -77,7 +112,7 @@ class NodeJsExtension(private val project: Project) {

fun execNpm(vararg args: String) {
execNpm {
commandLine(args)
commandLine(*args)
}
}

Expand All @@ -93,7 +128,7 @@ class NodeJsExtension(private val project: Project) {

fun execNpx(vararg args: String) {
execNpx {
commandLine(args)
commandLine(*args)
}
}

Expand Down
27 changes: 24 additions & 3 deletions src/test/kotlin/de/solugo/gradle/nodejs/NodeJsPluginTest.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package de.solugo.gradle.nodejs

import de.solugo.gradle.test.core.Directory.Helper.extractDirectoryFromClasspath
import de.solugo.gradle.test.core.Directory.Helper.file
import de.solugo.gradle.test.core.Directory.Helper.withTemporaryDirectory
import de.solugo.gradle.test.core.Executor.Companion.execute
import de.solugo.gradle.test.core.GradleTest
Expand All @@ -13,7 +14,8 @@ class NodeJsPluginTest {
fun `get node version`() {
GradleTest {
withTemporaryDirectory {
path.extractDirectoryFromClasspath("common")
path.extractDirectoryFromClasspath("default")
path.extractDirectoryFromClasspath("empty")
}
execute("nodeVersion") {
assertThat(output).contains(
Expand All @@ -29,7 +31,8 @@ class NodeJsPluginTest {
fun `get npm version`() {
GradleTest {
withTemporaryDirectory {
path.extractDirectoryFromClasspath("common")
path.extractDirectoryFromClasspath("default")
path.extractDirectoryFromClasspath("empty")
}
execute("npmVersion") {
assertThat(output).contains(
Expand All @@ -45,7 +48,8 @@ class NodeJsPluginTest {
fun `get yarn version`() {
GradleTest {
withTemporaryDirectory {
path.extractDirectoryFromClasspath("common")
path.extractDirectoryFromClasspath("default")
path.extractDirectoryFromClasspath("empty")
}
execute("yarnVersion") {
assertThat(output).contains(
Expand All @@ -57,4 +61,21 @@ class NodeJsPluginTest {
}
}

@Test
fun `build in subfolder is successful`() {
GradleTest {
withTemporaryDirectory {
path.extractDirectoryFromClasspath("default")
path.extractDirectoryFromClasspath("project")
}
execute("buildPackage") {
assertThat(output).contains(
"""
Hello World
""".trimIndent()
)
}
}
}

}
32 changes: 0 additions & 32 deletions src/test/resources/common/build.gradle.kts

This file was deleted.

35 changes: 35 additions & 0 deletions src/test/resources/empty/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
plugins {
id("java")
id("de.solugo.nodejs")
}

tasks.create("nodeVersion") {
doFirst {
nodejs.execNode("--version")
}
}

tasks.create("npmVersion") {
doFirst {
nodejs.execNpm("--version")
}
}


tasks.create("yarnVersion") {
doFirst {
nodejs.execNpm("install", "yarn@1.22.19")
nodejs.execBinary("yarn", "--version")
}
}

tasks.create("buildFrontend") {
doFirst {
nodejs.exec {
workingDir("../package")
args(resolveBinary("npm"), "run", "test")
}
nodejs.execNpm("install", "yarn@1.22.19")
nodejs.execBinary("yarn", "--version")
}
}
14 changes: 14 additions & 0 deletions src/test/resources/project/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
plugins {
id("java")
id("de.solugo.nodejs")
}

nodejs {
rootPath("./package")
}

tasks.create("buildPackage") {
doFirst {
nodejs.execNpm("run", "hello")
}
}
1 change: 1 addition & 0 deletions src/test/resources/project/package/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
console.log("Hello World")
7 changes: 7 additions & 0 deletions src/test/resources/project/package/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "test",
"version": "0.0.0",
"scripts": {
"hello": "node main.js"
}
}

0 comments on commit 08dc87c

Please sign in to comment.