mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-219200 Changing the type of source folder in Gradle build script does not change type of source folder in IJ on import
GitOrigin-RevId: a7698f11c201ba4a214dcbeb20d54a81c4acad9d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4f5e47de0d
commit
93275ffa82
+1
-4
@@ -246,10 +246,7 @@ public class ContentRootDataService extends AbstractProjectDataService<ContentRo
|
||||
SourceFolder folder = findSourceFolder(contentEntry, sourceRoot);
|
||||
if (folder != null) {
|
||||
final JpsModuleSourceRootType<?> folderRootType = folder.getRootType();
|
||||
if (JavaSourceRootType.SOURCE.equals(folderRootType) || sourceRootType.equals(folderRootType)) {
|
||||
return;
|
||||
}
|
||||
if (JavaSourceRootType.TEST_SOURCE.equals(folderRootType) && JavaResourceRootType.TEST_RESOURCE.equals(sourceRootType)) {
|
||||
if (sourceRootType.equals(folderRootType)) {
|
||||
return;
|
||||
}
|
||||
contentEntry.removeSourceFolder(folder);
|
||||
|
||||
+70
@@ -19,12 +19,15 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ContentEntry;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.SourceFolder;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
|
||||
import org.jetbrains.plugins.gradle.GradleManager;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSettings;
|
||||
@@ -35,6 +38,7 @@ import org.junit.Test;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import static com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.doWriteAction;
|
||||
import static com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.getManager;
|
||||
|
||||
/**
|
||||
@@ -306,6 +310,72 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase {
|
||||
assertTestResources("project", "src/test/resources", "src/test/resources2");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TargetVersions("4.7+")
|
||||
public void testSourceFoldersTypeAfterReimport() throws Exception {
|
||||
createProjectSubDirs("src/main/java",
|
||||
"src/main/resources",
|
||||
"src/test/java",
|
||||
"src/test/src2",
|
||||
"src/test/resources",
|
||||
"src/test/resources2",
|
||||
"src/customSourceSet/java",
|
||||
"src/customSourceSet/resources");
|
||||
importProject(
|
||||
"apply plugin: 'java'\n" +
|
||||
"apply plugin: 'idea'\n" +
|
||||
"sourceSets {\n" +
|
||||
" customSourceSet\n" +
|
||||
"}\n" +
|
||||
"idea {\n" +
|
||||
" module {\n" +
|
||||
" testSourceDirs += file('src/test/src2')\n" +
|
||||
" testResourceDirs += file('src/test/resources2')\n" +
|
||||
" testSourceDirs += project.sourceSets.customSourceSet.java.srcDirs\n" +
|
||||
" testResourceDirs += project.sourceSets.customSourceSet.resources.srcDirs\n" +
|
||||
" }\n" +
|
||||
"}"
|
||||
);
|
||||
|
||||
Runnable check = () -> {
|
||||
assertModules("project", "project.main", "project.test", "project.customSourceSet");
|
||||
assertContentRoots("project", getProjectPath());
|
||||
assertExcludes("project", ".gradle", "build");
|
||||
assertContentRoots("project.main", getProjectPath() + "/src/main");
|
||||
assertSources("project.main", "java");
|
||||
assertResources("project.main", "resources");
|
||||
assertContentRoots("project.test", getProjectPath() + "/src/test");
|
||||
assertTestSources("project.test", "java", "src2");
|
||||
assertTestResources("project.test", "resources", "resources2");
|
||||
|
||||
assertContentRoots("project.customSourceSet", getProjectPath() + "/src/customSourceSet");
|
||||
assertTestSources("project.customSourceSet", "java");
|
||||
assertTestResources("project.customSourceSet", "resources");
|
||||
};
|
||||
|
||||
check.run();
|
||||
markModuleSourceFolders("project.customSourceSet", JavaSourceRootType.SOURCE);
|
||||
importProject();
|
||||
check.run();
|
||||
}
|
||||
|
||||
private void markModuleSourceFolders(@NotNull String moduleName, @NotNull JpsModuleSourceRootType<?> rootType) {
|
||||
doWriteAction(() -> {
|
||||
Module module = getModule(moduleName);
|
||||
final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
|
||||
ContentEntry[] contentEntries = model.getContentEntries();
|
||||
for (ContentEntry contentEntry : contentEntries) {
|
||||
final SourceFolder[] sourceFolders = contentEntry.getSourceFolders();
|
||||
for (SourceFolder sourceFolder : sourceFolders) {
|
||||
VirtualFile folderFile = sourceFolder.getFile();
|
||||
contentEntry.removeSourceFolder(sourceFolder);
|
||||
contentEntry.addSourceFolder(folderFile, rootType);
|
||||
}
|
||||
}
|
||||
model.commit();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProjectWithInheritedOutputDirs() throws Exception {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user