mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
gradle: include tests from dependent modules to test classpath if merged structure used
This commit is contained in:
+2
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.jetbrains.jps.gradle.model;
|
||||
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.builders.storage.BuildDataPaths;
|
||||
@@ -36,7 +37,7 @@ public abstract class JpsGradleExtensionService {
|
||||
public abstract JpsGradleModuleExtension getExtension(@NotNull JpsModule module);
|
||||
|
||||
@NotNull
|
||||
public abstract JpsGradleModuleExtension getOrCreateExtension(@NotNull JpsModule module);
|
||||
public abstract JpsGradleModuleExtension getOrCreateExtension(@NotNull JpsModule module, Element rootElement);
|
||||
|
||||
public abstract void setProductionOnTestDependency(@NotNull JpsDependencyElement dependency, boolean value);
|
||||
|
||||
|
||||
+3
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.jetbrains.jps.gradle.model;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
|
||||
/**
|
||||
@@ -22,4 +23,6 @@ import org.jetbrains.jps.model.JpsElement;
|
||||
* @since 7/10/2014
|
||||
*/
|
||||
public interface JpsGradleModuleExtension extends JpsElement {
|
||||
@Nullable
|
||||
String getModuleType();
|
||||
}
|
||||
|
||||
+15
-5
@@ -18,6 +18,7 @@ package org.jetbrains.jps.gradle.model.impl;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.gradle.model.JpsGradleExtensionService;
|
||||
import org.jetbrains.jps.gradle.model.JpsGradleModuleExtension;
|
||||
import org.jetbrains.jps.model.java.impl.JpsJavaDependenciesEnumerationHandler;
|
||||
import org.jetbrains.jps.model.module.JpsDependencyElement;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
@@ -29,11 +30,19 @@ import java.util.Collection;
|
||||
* @since 7/10/2014
|
||||
*/
|
||||
public class JpsGradleDependenciesEnumerationHandler extends JpsJavaDependenciesEnumerationHandler {
|
||||
private static final JpsGradleDependenciesEnumerationHandler INSTANCE = new JpsGradleDependenciesEnumerationHandler();
|
||||
private static final JpsGradleDependenciesEnumerationHandler SOURCE_SET_TYPE_INSTANCE = new JpsGradleDependenciesEnumerationHandler(true);
|
||||
private static final JpsGradleDependenciesEnumerationHandler NON_SOURCE_SET_TYPE_INSTANCE =
|
||||
new JpsGradleDependenciesEnumerationHandler(false);
|
||||
|
||||
private final boolean myResolveModulePerSourceSet;
|
||||
|
||||
public JpsGradleDependenciesEnumerationHandler(boolean resolveModulePerSourceSet) {
|
||||
myResolveModulePerSourceSet = resolveModulePerSourceSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldAddRuntimeDependenciesToTestCompilationClasspath() {
|
||||
return true;
|
||||
return myResolveModulePerSourceSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,7 +52,7 @@ public class JpsGradleDependenciesEnumerationHandler extends JpsJavaDependencies
|
||||
|
||||
@Override
|
||||
public boolean shouldIncludeTestsFromDependentModulesToTestClasspath() {
|
||||
return false;
|
||||
return !myResolveModulePerSourceSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,8 +66,9 @@ public class JpsGradleDependenciesEnumerationHandler extends JpsJavaDependencies
|
||||
public JpsJavaDependenciesEnumerationHandler createHandler(@NotNull Collection<JpsModule> modules) {
|
||||
JpsGradleExtensionService service = JpsGradleExtensionService.getInstance();
|
||||
for (JpsModule module : modules) {
|
||||
if (service.getExtension(module) != null) {
|
||||
return INSTANCE;
|
||||
JpsGradleModuleExtension gradleModuleExtension = service.getExtension(module);
|
||||
if (gradleModuleExtension != null) {
|
||||
return "sourceSet".equals(gradleModuleExtension.getModuleType()) ? SOURCE_SET_TYPE_INSTANCE : NON_SOURCE_SET_TYPE_INSTANCE;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
+3
-2
@@ -22,6 +22,7 @@ import com.intellij.util.containers.ConcurrentFactoryMap;
|
||||
import com.intellij.util.containers.FactoryMap;
|
||||
import com.intellij.util.xmlb.XmlSerializer;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.builders.storage.BuildDataPaths;
|
||||
@@ -75,10 +76,10 @@ public class JpsGradleExtensionServiceImpl extends JpsGradleExtensionService {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JpsGradleModuleExtension getOrCreateExtension(@NotNull JpsModule module) {
|
||||
public JpsGradleModuleExtension getOrCreateExtension(@NotNull JpsModule module, Element rootElement) {
|
||||
JpsGradleModuleExtension extension = module.getContainer().getChild(JpsGradleModuleExtensionImpl.ROLE);
|
||||
if (extension == null) {
|
||||
extension = new JpsGradleModuleExtensionImpl();
|
||||
extension = new JpsGradleModuleExtensionImpl(rootElement.getAttributeValue("external.system.module.type"));
|
||||
module.getContainer().setChild(JpsGradleModuleExtensionImpl.ROLE, extension);
|
||||
}
|
||||
return extension;
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ public class JpsGradleModelSerializationExtension extends JpsModelSerializerExte
|
||||
@Override
|
||||
public void loadModuleOptions(@NotNull JpsModule module, @NotNull Element rootElement) {
|
||||
if ("GRADLE".equals(rootElement.getAttributeValue("external.system.id"))) {
|
||||
JpsGradleExtensionService.getInstance().getOrCreateExtension(module);
|
||||
JpsGradleExtensionService.getInstance().getOrCreateExtension(module, rootElement);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+12
-2
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.jps.gradle.model.impl;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.gradle.model.JpsGradleModuleExtension;
|
||||
import org.jetbrains.jps.model.JpsElementChildRole;
|
||||
import org.jetbrains.jps.model.ex.JpsElementBase;
|
||||
@@ -28,13 +29,22 @@ import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
|
||||
public class JpsGradleModuleExtensionImpl extends JpsElementBase<JpsGradleModuleExtensionImpl> implements JpsGradleModuleExtension {
|
||||
public static final JpsElementChildRole<JpsGradleModuleExtension> ROLE = JpsElementChildRoleBase.create("gradle");
|
||||
|
||||
public JpsGradleModuleExtensionImpl() {
|
||||
private String myModuleType;
|
||||
|
||||
public JpsGradleModuleExtensionImpl(String moduleType) {
|
||||
myModuleType = moduleType;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getModuleType() {
|
||||
return myModuleType;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JpsGradleModuleExtensionImpl createCopy() {
|
||||
return new JpsGradleModuleExtensionImpl();
|
||||
return new JpsGradleModuleExtensionImpl(myModuleType);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+17
-5
@@ -37,6 +37,8 @@ import org.jetbrains.plugins.gradle.model.ExternalProject;
|
||||
import org.jetbrains.plugins.gradle.model.ExternalSourceDirectorySet;
|
||||
import org.jetbrains.plugins.gradle.model.ExternalSourceSet;
|
||||
import org.jetbrains.plugins.gradle.service.project.data.ExternalProjectDataCache;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSettings;
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants;
|
||||
|
||||
import java.io.File;
|
||||
@@ -45,6 +47,18 @@ import java.util.Map;
|
||||
|
||||
public class GradleOrderEnumeratorHandler extends OrderEnumerationHandler {
|
||||
private static final Logger LOG = Logger.getInstance(GradleOrderEnumeratorHandler.class);
|
||||
private final boolean myResolveModulePerSourceSet;
|
||||
|
||||
public GradleOrderEnumeratorHandler(@NotNull Module module) {
|
||||
String rootProjectPath = ExternalSystemApiUtil.getExternalRootProjectPath(module);
|
||||
if (rootProjectPath != null) {
|
||||
GradleProjectSettings settings = GradleSettings.getInstance(module.getProject()).getLinkedProjectSettings(rootProjectPath);
|
||||
myResolveModulePerSourceSet = settings != null && settings.isResolveModulePerSourceSet();
|
||||
}
|
||||
else {
|
||||
myResolveModulePerSourceSet = false;
|
||||
}
|
||||
}
|
||||
|
||||
public static class FactoryImpl extends Factory {
|
||||
@Override
|
||||
@@ -56,20 +70,18 @@ public class GradleOrderEnumeratorHandler extends OrderEnumerationHandler {
|
||||
|
||||
@Override
|
||||
public OrderEnumerationHandler createHandler(@NotNull Module module) {
|
||||
return INSTANCE;
|
||||
return new GradleOrderEnumeratorHandler(module);
|
||||
}
|
||||
}
|
||||
|
||||
private static final GradleOrderEnumeratorHandler INSTANCE = new GradleOrderEnumeratorHandler();
|
||||
|
||||
@Override
|
||||
public boolean shouldAddRuntimeDependenciesToTestCompilationClasspath() {
|
||||
return true;
|
||||
return myResolveModulePerSourceSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldIncludeTestsFromDependentModulesToTestClasspath() {
|
||||
return false;
|
||||
return !myResolveModulePerSourceSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user