From 1bc47b3f6f28b5199afef143b23c57c22fc440cc Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 12 Dec 2019 11:05:06 +0300 Subject: [PATCH] [Gradle, JS] Add test for package.json deserializing --- .../targets/js/npm/GradleNodeModuleBuilder.kt | 10 ++++-- .../js/npm/GradleNodeModuleBuilderTest.kt | 32 +++++++++++++++++++ .../GradleNodeModuleBuilderTest/package.json | 4 +++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest/package.json diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt index dfe4ea959ef..6c0e1f51df7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt @@ -42,9 +42,8 @@ internal class GradleNodeModuleBuilder( fun rebuild(): File? { if (files.isEmpty()) return null - val packageJson = srcPackageJsonFile?.reader()?.use { - Gson().fromJson(it, PackageJson::class.java) - } ?: PackageJson(dependency.moduleName, dependency.moduleVersion) + val packageJson = fromSrcPackageJson(srcPackageJsonFile) + ?: PackageJson(dependency.moduleName, dependency.moduleVersion) val jsFiles = files.filter { it.name.endsWith(".js") } if (jsFiles.size == 1) { @@ -65,6 +64,11 @@ internal class GradleNodeModuleBuilder( } } +internal fun fromSrcPackageJson(packageJson: File?): PackageJson? = + packageJson?.reader()?.use { + Gson().fromJson(it, PackageJson::class.java) + } + private val File.isZip get() = isFile && (name.endsWith(".jar") || name.endsWith(".zip")) diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest.kt new file mode 100644 index 00000000000..4463d0fb350 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest.kt @@ -0,0 +1,32 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.targets.js.npm + +import org.junit.Test +import java.io.File +import kotlin.test.assertNotNull + +class GradleNodeModuleBuilderTest { + @Test + fun validPackageJsonWithoutDependencies() { + val packageJson = fromSrcPackageJson( + File("src/test/resources/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest/package.json") + ) + assertNotNull(packageJson, "package.json should be deserialized") + + with(packageJson!!) { + listOf( + dependencies, + devDependencies, + peerDependencies, + optionalDependencies, + bundledDependencies + ).forEach { + assertNotNull(it, "Dependencies should deserialized correctly without null") + } + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest/package.json b/libraries/tools/kotlin-gradle-plugin/src/test/resources/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest/package.json new file mode 100644 index 00000000000..266b0c294dc --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilderTest/package.json @@ -0,0 +1,4 @@ +{ + "name": "npm", + "version": "1.0.0" +}