From a01d73ff0e5ef6ffa8e9a272cc60b57b65b51a25 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Fri, 25 Dec 2015 16:10:11 +0300 Subject: [PATCH] gradle: do not confuse main module artifacts with test artifacts --- .../BaseGradleProjectResolverExtension.java | 8 +++- .../GradleDependenciesImportingTest.java | 38 +++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java index d90bd4301643..76ef69eee0c9 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java @@ -196,8 +196,12 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver if (defaultArtifacts != null) { artifacts.addAll(defaultArtifacts); } - final Set archivesArtifacts = externalProject.getArtifactsByConfiguration().get("archives"); - if (archivesArtifacts != null) { + if (externalProject.getArtifactsByConfiguration().get("archives") != null) { + final Set archivesArtifacts = ContainerUtil.newHashSet(externalProject.getArtifactsByConfiguration().get("archives")); + final Set testsArtifacts = externalProject.getArtifactsByConfiguration().get("tests"); + if (testsArtifacts != null) { + archivesArtifacts.removeAll(testsArtifacts); + } artifacts.addAll(archivesArtifacts); } } else if("test".equals(sourceSet.getName())) { 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 8adadf48661f..9b3a3d28dbc0 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleDependenciesImportingTest.java +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleDependenciesImportingTest.java @@ -206,4 +206,42 @@ public class GradleDependenciesImportingTest extends GradleImportingTestCase { assertModuleLibDep("project_main", depName, "file://" + path); assertModuleLibDepScope("project_main", depName, DependencyScope.RUNTIME); } + + @Test + public void testProjectArtifactDependencyInTestAndArchivesConfigurations() throws Exception { + createSettingsFile("include 'api', 'impl' "); + + importProject( + "allprojects {\n" + + " apply plugin: 'java'\n" + + "}\n" + + "\n" + + "project(\"api\") {\n" + + " configurations {\n" + + " tests\n" + + " }\n" + + " task testJar(type: Jar, dependsOn: testClasses, description: \"archive the testClasses\") {\n" + + " baseName = \"${project.archivesBaseName}-tests\"\n" + + " classifier = \"tests\"\n" + + " from sourceSets.test.output\n" + + " }\n" + + " artifacts {\n" + + " tests testJar\n" + + " archives testJar\n" + + " }\n" + + "}\n" + + "project(\"impl\") {\n" + + " dependencies {\n" + + " testCompile project(path: ':api', configuration: 'tests')\n" + + " }\n" + + "}\n" + ); + + assertModules("project", "project_main", "project_test", "api", "api_main", "api_test", "impl", "impl_main", "impl_test"); + + assertModuleModuleDepScope("project_test", "project_main", DependencyScope.COMPILE); + assertModuleModuleDepScope("api_test", "api_main", DependencyScope.COMPILE); + assertModuleModuleDepScope("impl_test", "impl_main", DependencyScope.COMPILE); + assertModuleModuleDepScope("impl_test", "api_test", DependencyScope.COMPILE); + } }