diff --git a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt index 6c925e71110..dcdfc19026d 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt +++ b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt @@ -184,19 +184,23 @@ abstract class ReactExtension @Inject constructor(val project: Project) { internal fun getGradleDependenciesToApply(inputFile: File): MutableList> { val model = JsonUtils.fromAutolinkingConfigJson(inputFile) val result = mutableListOf>() - model?.dependencies?.values?.forEach { deps -> - val nameCleansed = deps.nameCleansed - val dependencyConfiguration = deps.platforms?.android?.dependencyConfiguration - val buildTypes = deps.platforms?.android?.buildTypes ?: emptyList() - if (buildTypes.isEmpty()) { - result.add((dependencyConfiguration ?: "implementation") to ":$nameCleansed") - } else { - buildTypes.forEach { buildType -> - result.add( - (dependencyConfiguration ?: "${buildType}Implementation") to ":$nameCleansed") + model + ?.dependencies + ?.values + ?.filter { it.platforms?.android !== null } + ?.forEach { deps -> + val nameCleansed = deps.nameCleansed + val dependencyConfiguration = deps.platforms?.android?.dependencyConfiguration + val buildTypes = deps.platforms?.android?.buildTypes ?: emptyList() + if (buildTypes.isEmpty()) { + result.add((dependencyConfiguration ?: "implementation") to ":$nameCleansed") + } else { + buildTypes.forEach { buildType -> + result.add( + (dependencyConfiguration ?: "${buildType}Implementation") to ":$nameCleansed") + } + } } - } - } return result } } diff --git a/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/ReactExtensionTest.kt b/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/ReactExtensionTest.kt index 6e40922be3e..d1fcb3d216b 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/ReactExtensionTest.kt +++ b/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/ReactExtensionTest.kt @@ -8,8 +8,8 @@ package com.facebook.react import com.facebook.react.ReactExtension.Companion.getGradleDependenciesToApply +import org.assertj.core.api.Assertions.assertThat import org.intellij.lang.annotations.Language -import org.junit.Assert.* import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder @@ -30,7 +30,7 @@ class ReactExtensionTest { .trimIndent()) val deps = getGradleDependenciesToApply(validJsonFile) - assertEquals(0, deps.size) + assertThat(deps).isEmpty() } @Test @@ -57,8 +57,7 @@ class ReactExtensionTest { .trimIndent()) val deps = getGradleDependenciesToApply(validJsonFile) - assertEquals(1, deps.size) - assertTrue("implementation" to ":react-native_oss-library-example" in deps) + assertThat(deps).containsExactly("implementation" to ":react-native_oss-library-example") } @Test @@ -86,8 +85,7 @@ class ReactExtensionTest { .trimIndent()) val deps = getGradleDependenciesToApply(validJsonFile) - assertEquals(1, deps.size) - assertTrue("compileOnly" to ":react-native_oss-library-example" in deps) + assertThat(deps).containsExactly("compileOnly" to ":react-native_oss-library-example") } @Test @@ -115,9 +113,10 @@ class ReactExtensionTest { .trimIndent()) val deps = getGradleDependenciesToApply(validJsonFile) - assertEquals(2, deps.size) - assertTrue("debugImplementation" to ":react-native_oss-library-example" in deps) - assertTrue("releaseImplementation" to ":react-native_oss-library-example" in deps) + assertThat(deps) + .containsExactly( + "debugImplementation" to ":react-native_oss-library-example", + "releaseImplementation" to ":react-native_oss-library-example") } @Test @@ -154,9 +153,40 @@ class ReactExtensionTest { .trimIndent()) val deps = getGradleDependenciesToApply(validJsonFile) - assertEquals(2, deps.size) - assertTrue("implementation" to ":react-native_oss-library-example" in deps) - assertTrue("implementation" to ":react-native_another-library-for-testing" in deps) + assertThat(deps) + .containsExactly( + "implementation" to ":react-native_oss-library-example", + "implementation" to ":react-native_another-library-for-testing") + } + + @Test + fun getGradleDependenciesToApply_withiOSOnlyLibrary_returnsEmptyDepsMap() { + val validJsonFile = + createJsonFile( + """ + { + "reactNativeVersion": "1000.0.0", + "dependencies": { + "@react-native/oss-library-example": { + "root": "./node_modules/@react-native/oss-library-example", + "name": "@react-native/oss-library-example", + "platforms": { + "ios": { + "podspecPath": "./node_modules/@react-native/oss-library-example/oss-library-example.podspec", + "version": "0.0.0", + "configurations": [], + "scriptPhases": [] + }, + "android": null + } + } + } + } + """ + .trimIndent()) + + val deps = getGradleDependenciesToApply(validJsonFile) + assertThat(deps).isEmpty() } private fun createJsonFile(@Language("JSON") input: String) =