Skip to content

Commit 0ccc849

Browse files
committed
Add configuration-cache test for PackageJsonExtension
1 parent 51fb536 commit 0ccc849

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

src/main/kotlin/com/github/gradle/node/PackageJsonExtension.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@ import org.gradle.api.Project
66
import org.gradle.kotlin.dsl.property
77
import org.gradle.util.GradleVersion
88

9-
9+
/**
10+
* Provides a parsed view of package.json
11+
*/
1012
open class PackageJsonExtension(project: Project) {
13+
14+
/**
15+
* Raw JsonNode returned by Jackson, this may be removed in a future release
16+
*/
1117
val node = project.objects.property<JsonNode>()
1218

1319
init {
@@ -29,14 +35,25 @@ open class PackageJsonExtension(project: Project) {
2935

3036
val private = project.provider { node.get().get("private").asBoolean() }
3137

38+
/**
39+
* Get the text value of a given field
40+
*/
3241
fun get(name: String): String {
3342
return node.get().get(name).asText()
3443
}
3544

45+
/**
46+
* Get the boolean value of a given field
47+
*/
3648
fun getBoolean(name: String): Boolean {
3749
return node.get().get(name).asBoolean()
3850
}
3951

52+
/**
53+
* Get the text value of a field containing nested objects
54+
*
55+
* e.g. <pre>{ "outer": { "inner": "nested } }</pre>
56+
*/
4057
fun get(vararg name: String): String {
4158
return name.fold(node.get()) { acc, next -> acc.get(next) }.asText()
4259
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.github.gradle.node
2+
3+
import com.github.gradle.AbstractIntegTest
4+
import com.github.gradle.RunWithMultipleGradleVersions
5+
import org.gradle.testkit.runner.TaskOutcome
6+
import org.junit.Assume
7+
8+
@RunWithMultipleGradleVersions
9+
class PackageJsonExtension_integTest extends AbstractIntegTest {
10+
11+
def 'check standard attribute'() {
12+
given:
13+
Assume.assumeTrue(isConfigurationCacheEnabled())
14+
copyResources("fixtures/npm-env/")
15+
copyResources("fixtures/env/")
16+
createFile("build.gradle") << """
17+
def nameProvider = project.extensions.getByName("${PackageJsonExtension.NAME}").name
18+
tasks.register('printPackageJsonName') {
19+
inputs.property('name', nameProvider)
20+
doLast {
21+
println nameProvider.get()
22+
}
23+
}
24+
"""
25+
26+
when:
27+
def result1 = build(":printPackageJsonName")
28+
def result2 = build(":printPackageJsonName")
29+
30+
then:
31+
result1.task(":printPackageJsonName").outcome == TaskOutcome.SUCCESS
32+
result2.task(":printPackageJsonName").outcome == TaskOutcome.SUCCESS
33+
}
34+
}

0 commit comments

Comments
 (0)