IDEA-156528 [GRADLE] "testCompile" dependency does not include all dependencies in "compile" configuration

This commit is contained in:
Vladislav.Soroka
2016-05-30 16:38:37 +03:00
parent 278e7ccf58
commit 263e2926c1
6 changed files with 77 additions and 3 deletions
@@ -215,6 +215,7 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver
}
}
}
artifacts.addAll(sourceSet.getArtifacts());
sourceSetData.setArtifacts(ContainerUtil.newArrayList(artifacts));
DataNode<GradleSourceSetData> sourceSetDataNode = mainModuleNode.createChild(GradleSourceSetData.KEY, sourceSetData);
@@ -532,7 +532,49 @@ public class GradleDependenciesImportingTest extends GradleImportingTestCase {
assertModules("project", "project1", "project1_main", "project1_test", "project2", "project2_main", "project2_test");
assertModuleModuleDeps("project2_main");
assertModuleModuleDeps("project2_test", "project1_test", "project2_main");
assertModuleModuleDeps("project2_test", "project2_main", "project1_test");
importProjectUsingSingeModulePerGradleProject();
assertModules("project", "project1", "project2");
assertModuleModuleDeps("project2", "project1");
}
@Test
@TargetVersions("2.0+")
public void testTestModuleDependencyAsArtifactFromTestSourceSetOutput2() throws Exception {
createSettingsFile("include 'project1'\n" +
"include 'project2'\n");
importProject(
"project(':project1') {\n" +
" apply plugin: 'java'\n" +
" configurations {\n" +
" testArtifacts\n" +
" }\n" +
"\n" +
" task testJar(type: Jar) {\n" +
" classifier = 'tests'\n" +
" from sourceSets.test.output\n" +
" }\n" +
"\n" +
" artifacts {\n" +
" testArtifacts testJar\n" +
" }\n" +
"}\n" +
"\n" +
"project(':project2') {\n" +
" apply plugin: 'java'\n" +
" dependencies {\n" +
" compile project(path: ':project1')\n" +
" testCompile project(path: ':project1', configuration: 'testArtifacts')\n" +
" }\n" +
"}\n"
);
assertModules("project", "project1", "project1_main", "project1_test", "project2", "project2_main", "project2_test");
assertModuleModuleDeps("project2_main", "project1_main");
assertModuleModuleDeps("project2_test", "project2_main", "project1_main", "project1_test");
importProjectUsingSingeModulePerGradleProject();
assertModules("project", "project1", "project2");
@@ -19,6 +19,7 @@ import com.intellij.openapi.externalSystem.model.project.IExternalSystemSourceTy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
@@ -28,6 +29,8 @@ import java.util.Map;
* @since 7/14/2014
*/
public interface ExternalSourceSet extends Serializable {
Collection<File> getArtifacts();
@NotNull
String getName();
@@ -20,6 +20,7 @@ import com.intellij.openapi.externalSystem.model.project.IExternalSystemSourceTy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.*;
/**
@@ -32,6 +33,7 @@ public class DefaultExternalSourceSet implements ExternalSourceSet {
private String myName;
private Map<IExternalSystemSourceType, ExternalSourceDirectorySet> mySources;
private Collection<ExternalDependency> myDependencies;
private Collection<File> myArtifacts;
private String mySourceCompatibility;
private String myTargetCompatibility;
@@ -52,6 +54,7 @@ public class DefaultExternalSourceSet implements ExternalSourceSet {
for (ExternalDependency dependency : sourceSet.getDependencies()) {
myDependencies.add(ModelFactory.createCopy(dependency));
}
myArtifacts = sourceSet.getArtifacts() == null ? new ArrayList<File>() : new ArrayList<File>(sourceSet.getArtifacts());
}
@NotNull
@@ -60,6 +63,15 @@ public class DefaultExternalSourceSet implements ExternalSourceSet {
return myName;
}
@Override
public Collection<File> getArtifacts() {
return myArtifacts;
}
public void setArtifacts(Collection<File> artifacts) {
myArtifacts = artifacts;
}
@Nullable
@Override
public String getSourceCompatibility() {
@@ -26,6 +26,7 @@ import org.gradle.api.file.ContentFilterable
import org.gradle.api.file.FileCopyDetails
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.SourceSetContainer
import org.gradle.api.tasks.bundling.AbstractArchiveTask
import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.api.tasks.util.PatternFilterable
@@ -226,6 +227,11 @@ class ExternalProjectBuilderImpl implements ModelBuilderService {
externalSourceSet.targetCompatibility = projectTargetCompatibility
}
def jarTask = project.tasks.findByName(sourceSet.jarTaskName)
if(jarTask instanceof AbstractArchiveTask) {
externalSourceSet.artifacts = [jarTask.archivePath]
}
def sources = [:] as Map<ExternalSystemSourceType, ExternalSourceDirectorySet>
ExternalSourceDirectorySet resourcesDirectorySet = new DefaultExternalSourceDirectorySet()
resourcesDirectorySet.name = sourceSet.resources.name
@@ -790,8 +790,13 @@ class DependencyResolverImpl implements DependencyResolver {
projectPath: componentSelector.projectPath,
configurationName: it.projectConfiguration.name
)
dependency.projectDependencyArtifacts = artifactMap.get(componentResult.moduleVersion).collect { it.file }
dependency.projectDependencyArtifacts = it.projectConfiguration.allArtifacts.files.files
dependency.projectDependencyArtifacts.each { resolvedDepsFiles.add(it) }
if(it.projectConfiguration.artifacts.size() == 1) {
def publishArtifact = it.projectConfiguration.allArtifacts.first()
dependency.classifier = publishArtifact.classifier
dependency.packaging = publishArtifact.extension ?: 'jar'
}
if (componentResult != dependencyResult.from) {
dependency.dependencies.addAll(
@@ -810,8 +815,13 @@ class DependencyResolverImpl implements DependencyResolver {
projectPath: componentSelector.projectPath,
configurationName: it.projectConfiguration.name
)
dependency.projectDependencyArtifacts = artifactMap.get(componentResult.moduleVersion).collect { it.file }
dependency.projectDependencyArtifacts = it.projectConfiguration.allArtifacts.files.files
dependency.projectDependencyArtifacts.each { resolvedDepsFiles.add(it) }
if(it.projectConfiguration.artifacts.size() == 1) {
def publishArtifact = it.projectConfiguration.allArtifacts.first()
dependency.classifier = publishArtifact.classifier
dependency.packaging = publishArtifact.extension ?: 'jar'
}
if (componentResult != dependencyResult.from) {
dependency.dependencies.addAll(