From f57b6ca444efa0a739c0b029034bcc90320d0824 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Fri, 16 Nov 2018 12:29:52 +0300 Subject: [PATCH] Gradle: test added for additional sources set output folders resolving as transitive dependencies (IDEA-202346) --- .../GradleDependenciesImportingTest.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleDependenciesImportingTest.java b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleDependenciesImportingTest.java index 70c036b0d548..8ca8307f9c46 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleDependenciesImportingTest.java +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleDependenciesImportingTest.java @@ -605,6 +605,59 @@ public class GradleDependenciesImportingTest extends GradleImportingTestCase { assertModuleLibDepScope("project.projectC.main", depName, DependencyScope.RUNTIME); } + @Test + public void testSourceSetOutputDirsAsDependenciesOfDependantModules() throws Exception { + createSettingsFile("include 'projectA', 'projectB', 'projectC' "); + importProject( + "subprojects { \n" + + " apply plugin: \"java\" \n" + + "}\n" + + "project(':projectA') {\n" + + " sourceSets.main.output.dir file('/generated/projectA')\n" + + "}\n" + + "project(':projectB') {\n" + + " sourceSets.main.output.dir file('/generated/projectB')\n" + + " dependencies {\n" + + " implementation project(':projectA')\n" + + " }\n" + + "}\n" + + "project(':projectC') {\n" + + " dependencies {\n" + + " implementation project(':projectB')\n" + + " }\n" + + "}" + ); + + assertModules("project", + "project.projectA", "project.projectA.main", "project.projectA.test", + "project.projectB", "project.projectB.main", "project.projectB.test", + "project.projectC", "project.projectC.main", "project.projectC.test"); + + assertModuleModuleDepScope("project.projectB.main", "project.projectA.main", DependencyScope.COMPILE); + assertModuleModuleDepScope("project.projectC.main", "project.projectA.main", DependencyScope.RUNTIME); + assertModuleModuleDepScope("project.projectC.main", "project.projectB.main", DependencyScope.COMPILE); + + final String pathA = "/generated/projectA"; + final String classesPathA = "file://" + pathA; + final String depNameA = PathUtil.toPresentableUrl(pathA); + final String pathB = "/generated/projectB"; + final String classesPathB = "file://" + pathB; + final String depNameB = PathUtil.toPresentableUrl(pathB); + + assertModuleLibDep("project.projectA.main", depNameA, classesPathA); + assertModuleLibDepScope("project.projectA.main", depNameA, DependencyScope.RUNTIME); + + assertModuleLibDep("project.projectB.main", depNameA, classesPathA); + assertModuleLibDepScope("project.projectB.main", depNameA, DependencyScope.COMPILE); + assertModuleLibDep("project.projectB.main", depNameB, classesPathB); + assertModuleLibDepScope("project.projectB.main", depNameB, DependencyScope.RUNTIME); + + assertModuleLibDep("project.projectC.main", depNameA, classesPathA); + assertModuleLibDepScope("project.projectC.main", depNameA, DependencyScope.RUNTIME); + assertModuleLibDep("project.projectC.main", depNameB, classesPathB); + assertModuleLibDepScope("project.projectC.main", depNameB, DependencyScope.COMPILE); + } + @Test public void testProjectArtifactDependencyInTestAndArchivesConfigurations() throws Exception { createSettingsFile("include 'api', 'impl' ");