diff --git a/platform/external-system-api/testFramework/intellij.platform.externalSystem.testFramework.iml b/platform/external-system-api/testFramework/intellij.platform.externalSystem.testFramework.iml index 91f1daaddd61..18f1a8675a59 100644 --- a/platform/external-system-api/testFramework/intellij.platform.externalSystem.testFramework.iml +++ b/platform/external-system-api/testFramework/intellij.platform.externalSystem.testFramework.iml @@ -13,5 +13,6 @@ + \ No newline at end of file diff --git a/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java b/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java index 01d2a779fff3..11db3f5ed4bf 100644 --- a/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java +++ b/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java @@ -12,6 +12,7 @@ import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder; import com.intellij.openapi.externalSystem.model.DataNode; import com.intellij.openapi.externalSystem.model.ExternalProjectInfo; import com.intellij.openapi.externalSystem.model.ProjectSystemId; +import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType; import com.intellij.openapi.externalSystem.model.project.ProjectData; import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId; import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListener; @@ -39,11 +40,13 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.platform.externalSystem.testFramework.utils.module.ExternalSystemSourceRootAssertion; import com.intellij.psi.PsiElement; import com.intellij.testFramework.IndexingTestUtil; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.testFramework.RunAll; import com.intellij.testFramework.utils.module.ModuleAssertions; +import com.intellij.testFramework.utils.module.SourceRootAssertions; import com.intellij.usageView.UsageInfo; import com.intellij.util.CommonProcessors; import com.intellij.util.containers.ContainerUtil; @@ -58,8 +61,10 @@ import java.io.PrintStream; import java.nio.file.Path; import java.util.*; import java.util.function.BiPredicate; +import java.util.function.Consumer; import java.util.function.Predicate; +import static com.intellij.platform.externalSystem.testFramework.utils.module.ExternalSystemSourceRootAssertions.getExType; import static com.intellij.testFramework.EdtTestUtil.runInEdtAndGet; import static com.intellij.testFramework.EdtTestUtil.runInEdtAndWait; @@ -116,36 +121,21 @@ public abstract class ExternalSystemImportingTestCase extends ExternalSystemTest ModuleAssertions.assertContentRoots(myProject, moduleName, expectedRootPaths); } - protected void assertSources(String moduleName, String... expectedSources) { - assertSourceFolders(moduleName, JavaSourceRootType.SOURCE, Arrays.asList(expectedSources)); + protected void assertNoSourceRoots(String moduleName) { + assertSourceRoots(moduleName, it -> {}); } - protected void assertResources(String moduleName, String... expectedSources) { - assertSourceFolders(moduleName, JavaResourceRootType.RESOURCE, Arrays.asList(expectedSources)); + protected void assertSourceRoots(String moduleName, Consumer> applyAssertion) { + ExternalSystemSourceRootAssertion.assertSourceRoots(applyAssertion, (type, expectedRoots) -> { + assertSourceRoots(moduleName, type, expectedRoots); + }); } - protected void assertTestSources(String moduleName, String... expectedSources) { - assertSourceFolders(moduleName, JavaSourceRootType.TEST_SOURCE, Arrays.asList(expectedSources)); - } - - protected void assertTestResources(String moduleName, String... expectedSources) { - assertSourceFolders(moduleName, JavaResourceRootType.TEST_RESOURCE, Arrays.asList(expectedSources)); - } - - protected void assertGeneratedSources(String moduleName, String... expectedSources) { - assertGeneratedSourceFolders(moduleName, JavaSourceRootType.SOURCE, Arrays.asList(expectedSources)); - } - - protected void assertGeneratedTestSources(String moduleName, String... expectedSources) { - assertGeneratedSourceFolders(moduleName, JavaSourceRootType.TEST_SOURCE, Arrays.asList(expectedSources)); - } - - protected void assertGeneratedResources(String moduleName, String... expectedSources) { - assertGeneratedResourceFolders(moduleName, JavaResourceRootType.RESOURCE, Arrays.asList(expectedSources)); - } - - protected void assertGeneratedTestResources(String moduleName, String... expectedSources) { - assertGeneratedResourceFolders(moduleName, JavaResourceRootType.TEST_RESOURCE, Arrays.asList(expectedSources)); + protected void assertSourceRoots(String moduleName, ExternalSystemSourceType type, List expectedRoots) { + var expectedRootPaths = ContainerUtil.map(expectedRoots, it -> Path.of(it)); + SourceRootAssertions.assertSourceRoots(myProject, moduleName, it -> type.equals(getExType(it)), expectedRootPaths, () -> + "%s source root of type %s".formatted(moduleName, type) + ); } protected void assertExcludes(String moduleName, String... expectedExcludes) { diff --git a/plugins/gradle/java/testSources/compiler/GradleJpsResourceProcessingTest.java b/plugins/gradle/java/testSources/compiler/GradleJpsResourceProcessingTest.java index 0229837b8f6c..09f577c7dcb5 100644 --- a/plugins/gradle/java/testSources/compiler/GradleJpsResourceProcessingTest.java +++ b/plugins/gradle/java/testSources/compiler/GradleJpsResourceProcessingTest.java @@ -1,6 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package org.jetbrains.plugins.gradle.compiler; +import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType; import org.junit.Test; import java.io.IOException; @@ -345,12 +346,18 @@ public class GradleJpsResourceProcessingTest extends GradleJpsCompilingTestCase ); assertModules("project", "project.main", "project.test", "project.integrationTest"); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertSources("project.integrationTest", path("src/integrationTest/java")); - assertResources("project.integrationTest", path("src/integrationTest/resources")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + assertSourceRoots("project.integrationTest", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/integrationTest/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/integrationTest/resources")) + ); compileModules("project.main", "project.test", "project.integrationTest"); @@ -391,12 +398,18 @@ public class GradleJpsResourceProcessingTest extends GradleJpsCompilingTestCase ); assertModules("project", "project.main", "project.test", "project.integrationTest"); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertSources("project.integrationTest", path("src/integrationTest/java")); - assertResources("project.integrationTest", path("src/integrationTest/resources")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + assertSourceRoots("project.integrationTest", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/integrationTest/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/integrationTest/resources")) + ); compileModules("project.main", "project.test", "project.integrationTest"); @@ -439,12 +452,18 @@ public class GradleJpsResourceProcessingTest extends GradleJpsCompilingTestCase ); assertModules("project", "project.main", "project.test", "project.integrationTest"); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertSources("project.integrationTest", path("src/integrationTest/java")); - assertResources("project.integrationTest", path("src/integrationTest/resources")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + assertSourceRoots("project.integrationTest", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/integrationTest/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/integrationTest/resources")) + ); compileModules("project.main", "project.test", "project.integrationTest"); @@ -486,12 +505,18 @@ public class GradleJpsResourceProcessingTest extends GradleJpsCompilingTestCase ); assertModules("project", "project.main", "project.test", "project.integrationTest"); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertTestSources("project.integrationTest", path("src/integrationTest/java")); - assertTestResources("project.integrationTest", path("src/integrationTest/resources")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + assertSourceRoots("project.integrationTest", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/integrationTest/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/integrationTest/resources")) + ); compileModules("project.main", "project.test", "project.integrationTest"); diff --git a/plugins/gradle/java/testSources/quarantine/importing/AnnotationProcessorConfigImportingTest.kt b/plugins/gradle/java/testSources/quarantine/importing/AnnotationProcessorConfigImportingTest.kt index b9fc07d05777..6621a67b8ea2 100644 --- a/plugins/gradle/java/testSources/quarantine/importing/AnnotationProcessorConfigImportingTest.kt +++ b/plugins/gradle/java/testSources/quarantine/importing/AnnotationProcessorConfigImportingTest.kt @@ -4,6 +4,7 @@ package org.jetbrains.plugins.gradle.quarantine.importing import com.intellij.compiler.CompilerConfiguration import com.intellij.compiler.CompilerConfigurationImpl import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.util.Computable @@ -173,29 +174,34 @@ class AnnotationProcessorConfigImportingTest: GradleImportingTestCase() { // import with default settings: delegate build to gradle importProject() - assertSources("project.main", path(gradleGeneratedDir)) - assertGeneratedSources("project.main", path(gradleGeneratedDir)) + + assertSourceRoots("project.main") { + it.sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path(gradleGeneratedDir)) + } currentExternalProjectSettings.delegatedBuild = false // import with build by intellij idea importProject() - assertSources("project.main", path(ideaGeneratedDir)) - assertGeneratedSources("project.main", path(ideaGeneratedDir)) + assertSourceRoots("project.main") { + it.sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path(ideaGeneratedDir)) + } // subscribe to build delegation changes in current project (ExternalSystemApiUtil.getManager(GradleConstants.SYSTEM_ID) as GradleManager).runActivity(myProject) // switch delegation to gradle currentExternalProjectSettings.delegatedBuild = true GradleSettings.getInstance(myProject).publisher.onBuildDelegationChange(true, projectPath) - assertSources("project.main", path(gradleGeneratedDir)) - assertGeneratedSources("project.main", path(gradleGeneratedDir)) + assertSourceRoots("project.main") { + it.sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path(gradleGeneratedDir)) + } // switch delegation to idea currentExternalProjectSettings.delegatedBuild = false GradleSettings.getInstance(myProject).publisher.onBuildDelegationChange(false, projectPath) - assertSources("project.main", path(ideaGeneratedDir)) - assertGeneratedSources("project.main", path(ideaGeneratedDir)) + assertSourceRoots("project.main") { + it.sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path(ideaGeneratedDir)) + } } @Test @@ -406,40 +412,28 @@ class AnnotationProcessorConfigImportingTest: GradleImportingTestCase() { assertModules("project", "project.main", "project.test", "project.testFixtures") assertContentRoots("project", projectPath) - assertSources("project") - assertResources("project") - assertTestSources("project") - assertTestResources("project") + assertNoSourceRoots("project") assertContentRoots("project.main", path("src/main"), path("$annotationProcessor/java/main")) - assertSources("project.main", path("src/main/java"), path("$annotationProcessor/java/main")) - assertGeneratedSources("project.main", path("$annotationProcessor/java/main")) - assertResources("project.main", path("src/main/resources")) - assertGeneratedResources("project.main") - assertTestSources("project.main") - assertGeneratedTestSources("project.main") - assertTestResources("project.main") - assertGeneratedTestResources("project.main") + assertSourceRoots("project.main") { + it.sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + it.sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path("$annotationProcessor/java/main")) + it.sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + } assertContentRoots("project.test", path("src/test"), path("$annotationProcessor/java/test")) - assertSources("project.test") - assertGeneratedSources("project.test") - assertResources("project.test") - assertGeneratedResources("project.test") - assertTestSources("project.test", path("src/test/java"), path("$annotationProcessor/java/test")) - assertGeneratedTestSources("project.test", path("$annotationProcessor/java/test")) - assertTestResources("project.test", path("src/test/resources")) - assertGeneratedTestResources("project.test") + assertSourceRoots("project.test") { + it.sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + it.sourceRoots(ExternalSystemSourceType.TEST_GENERATED, path("$annotationProcessor/java/test")) + it.sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + } assertContentRoots("project.testFixtures", path("src/testFixtures"), path("$annotationProcessor/java/testFixtures")) - assertSources("project.testFixtures") - assertGeneratedSources("project.testFixtures") - assertResources("project.testFixtures") - assertGeneratedResources("project.testFixtures") - assertTestSources("project.testFixtures", path("src/testFixtures/java"), path("$annotationProcessor/java/testFixtures")) - assertGeneratedTestSources("project.testFixtures", path("$annotationProcessor/java/testFixtures")) - assertTestResources("project.testFixtures", path("src/testFixtures/resources")) - assertGeneratedTestResources("project.testFixtures") + assertSourceRoots("project.testFixtures") { + it.sourceRoots(ExternalSystemSourceType.TEST, path("src/testFixtures/java")) + it.sourceRoots(ExternalSystemSourceType.TEST_GENERATED, path("$annotationProcessor/java/testFixtures")) + it.sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/testFixtures/resources")) + } } @Test @@ -479,39 +473,27 @@ class AnnotationProcessorConfigImportingTest: GradleImportingTestCase() { assertModules("project", "project.main", "project.test", "project.integrationTest") assertContentRoots("project", projectPath) - assertSources("project") - assertResources("project") - assertTestSources("project") - assertTestResources("project") + assertNoSourceRoots("project") assertContentRoots("project.main", path("src/main"), path("$annotationProcessor/java/main")) - assertSources("project.main", path("src/main/java"), path("$annotationProcessor/java/main")) - assertGeneratedSources("project.main", path("$annotationProcessor/java/main")) - assertResources("project.main", path("src/main/resources")) - assertGeneratedResources("project.main") - assertTestSources("project.main") - assertGeneratedTestSources("project.main") - assertTestResources("project.main") - assertGeneratedTestResources("project.main") + assertSourceRoots("project.main") { + it.sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + it.sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path("$annotationProcessor/java/main")) + it.sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + } assertContentRoots("project.test", path("src/test"), path("$annotationProcessor/java/test")) - assertSources("project.test") - assertGeneratedSources("project.test") - assertResources("project.test") - assertGeneratedResources("project.test") - assertTestSources("project.test", path("src/test/java"), path("$annotationProcessor/java/test")) - assertGeneratedTestSources("project.test", path("$annotationProcessor/java/test")) - assertTestResources("project.test", path("src/test/resources")) - assertGeneratedTestResources("project.test") + assertSourceRoots("project.test") { + it.sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + it.sourceRoots(ExternalSystemSourceType.TEST_GENERATED, path("$annotationProcessor/java/test")) + it.sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + } assertContentRoots("project.integrationTest", path("src/integrationTest"), path("$annotationProcessor/java/integrationTest")) - assertSources("project.integrationTest") - assertGeneratedSources("project.integrationTest") - assertResources("project.integrationTest") - assertGeneratedResources("project.integrationTest") - assertTestSources("project.integrationTest", path("src/integrationTest/java"), path("$annotationProcessor/java/integrationTest")) - assertGeneratedTestSources("project.integrationTest", path("$annotationProcessor/java/integrationTest")) - assertTestResources("project.integrationTest", path("src/integrationTest/resources")) - assertGeneratedTestResources("project.integrationTest") + assertSourceRoots("project.integrationTest") { + it.sourceRoots(ExternalSystemSourceType.TEST, path("src/integrationTest/java")) + it.sourceRoots(ExternalSystemSourceType.TEST_GENERATED, path("$annotationProcessor/java/integrationTest")) + it.sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/integrationTest/resources")) + } } } \ No newline at end of file diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java index fe86d793d80e..597cf1163893 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java @@ -1,6 +1,7 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.plugins.gradle.importing; +import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType; import com.intellij.openapi.externalSystem.service.project.manage.SourceFolderManager; import com.intellij.openapi.externalSystem.service.project.manage.SourceFolderManagerImpl; import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil; @@ -17,20 +18,15 @@ 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.frameworkSupport.buildscript.GradleBuildScriptBuilder; import org.jetbrains.plugins.gradle.service.project.data.GradleExcludeBuildFilesDataService; -import org.jetbrains.plugins.gradle.settings.GradleProjectSettings; import org.jetbrains.plugins.gradle.settings.GradleSettings; import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions; -import org.jetbrains.plugins.gradle.util.GradleConstants; 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; /** * @author Vladislav.Soroka @@ -40,61 +36,165 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { @Test public void testUnsupportedTypesInDsl() throws Exception { importProject( - createBuildScriptBuilder().addPostfix( - "import org.gradle.api.internal.FactoryNamedDomainObjectContainer;", - "import org.gradle.internal.reflect.Instantiator;", - "class MyObj implements Named {", - " String myName;", - " public MyObj(String name) {", - " myName = namse", - " }", - " ", - " public String getName() {", - " return myName", - " }", - "}", - "project.extensions.create(", - " \"sourceSets\",", - " FactoryNamedDomainObjectContainer,", - " MyObj,", - " services.get(Instantiator),", - " {action -> }", - " ) ", - "sourceSets {", - " println \"Hello World!\"", - "}" - ).generate()); + """ + import org.gradle.api.internal.FactoryNamedDomainObjectContainer; + import org.gradle.internal.reflect.Instantiator; + class MyObj implements Named { + String myName; + public MyObj(String name) { + myName = namse + } + + public String getName() { + return myName + } + } + project.extensions.create( + "sourceSets", + FactoryNamedDomainObjectContainer, + MyObj, + services.get(Instantiator), + {action -> } + ) + sourceSets { + println "Hello World!" + } + """ + ); } @Test - public void testBaseJavaProject() throws Exception { - getCurrentExternalProjectSettings().setDelegatedBuild(false); + public void testImportBaseJavaProjectInNonDelegatedAndModulePerSourceSetModes() throws Exception { createDefaultDirs(); - importProject( - "apply plugin: 'java'" - ); - assertNotDelegatedBaseJavaProject(); - - getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); - importProject(); - assertNotDelegatedMergedBaseJavaProject(); - - getCurrentExternalProjectSettings().setDelegatedBuild(true); - importProject(); - assertDelegatedMergedBaseJavaProject(); + createProjectSubFile("build.gradle", "apply plugin: 'java'"); getCurrentExternalProjectSettings().setDelegatedBuild(false); - // subscribe to the GradleSettings changes topic - ((GradleManager)getManager(GradleConstants.SYSTEM_ID)).runActivity(myProject); - GradleSettings.getInstance(myProject).getPublisher().onBuildDelegationChange(false, getProjectPath()); - assertNotDelegatedMergedBaseJavaProject(); - getCurrentExternalProjectSettings().setResolveModulePerSourceSet(true); importProject(); - assertNotDelegatedBaseJavaProject(); + + assertModules("project", "project.main", "project.test"); + + assertNoExcludePatterns("project", "build.gradle"); + assertExcludes("project", ".gradle", "build", "out"); + + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.main", path("src/main")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + + assertContentRoots("project.test", path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + + assertModuleOutputs("project.main", path("out/production/classes"), path("out/production/resources")); + assertModuleOutput("project.main", path("out/production/classes"), ""); + + assertModuleOutputs("project.test", path("out/test/classes"), path("out/test/resources")); + assertModuleOutput("project.test", "", path("out/test/classes")); + } + + @Test + public void testImportBaseJavaProjectInNonDelegatedAndModulePerProjectModes() throws Exception { + createDefaultDirs(); + createProjectSubFile("build.gradle", "apply plugin: 'java'"); + + getCurrentExternalProjectSettings().setDelegatedBuild(false); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); + + assertModules("project"); + + assertExcludes("project", ".gradle", "build", "out"); + + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + + assertModuleOutputs("project", + path("out/production/classes"), + path("out/production/resources"), + path("out/test/classes"), + path("out/test/resources")); + assertModuleOutput("project", + path("out/production/classes"), + path("out/test/classes")); + } + + @Test + public void testImportBaseJavaProjectInDelegatedAndModulePerProjectModes() throws Exception { + createDefaultDirs(); + createProjectSubFile("build.gradle", "apply plugin: 'java'"); + getCurrentExternalProjectSettings().setDelegatedBuild(true); - GradleSettings.getInstance(myProject).getPublisher().onBuildDelegationChange(true, getProjectPath()); - assertDelegatedBaseJavaProject(); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); + + assertModules("project"); + + assertExcludes("project", ".gradle", "build"); + + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + + assertModuleOutputs("project", + path("build/classes/java/main"), + path("build/resources/main"), + path("build/classes/java/test"), + path("build/resources/test")); + assertModuleOutput("project", + path("build/classes/java/main"), + path("build/classes/java/test")); + } + + @Test + public void testImportBaseJavaProjectInDelegatedAndModulePerSourceSetModes() throws Exception { + createDefaultDirs(); + createProjectSubFile("build.gradle", "apply plugin: 'java'"); + + getCurrentExternalProjectSettings().setDelegatedBuild(true); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(true); + importProject(); + + assertModules("project", "project.main", "project.test"); + + assertNoExcludePatterns("project", "build.gradle"); + assertExcludes("project", ".gradle", "build"); + + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.main", path("src/main")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + + assertContentRoots("project.test", path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + + assertModuleOutputs("project.main", path("build/classes/java/main"), path("build/resources/main")); + assertModuleOutput("project.main", path("build/classes/java/main"), ""); + + assertModuleOutputs("project.test", path("build/classes/java/test"), path("build/resources/test")); + assertModuleOutput("project.test", "", path("build/classes/java/test")); } @Test @@ -104,101 +204,64 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { createProjectSubFile("gradle.properties", "org.gradle.warning.mode=fail"); importProject("apply plugin: 'java'"); - assertDelegatedBaseJavaProject(); - } - - private void assertNotDelegatedBaseJavaProject() { assertModules("project", "project.main", "project.test"); + assertNoExcludePatterns("project", "build.gradle"); + assertExcludes("project", ".gradle", "build"); - assertDefaultGradleJavaProjectFolders(); - - final String mainClassesOutputPath = "/out/production/classes"; - assertModuleOutputs("project.main", - getProjectPath() + mainClassesOutputPath, - getProjectPath() + "/out/production/resources"); - String testClassesOutputPath = "/out/test/classes"; - assertModuleOutputs("project.test", - getProjectPath() + testClassesOutputPath, - getProjectPath() + "/out/test/resources"); - - assertModuleOutput("project.main", getProjectPath() + mainClassesOutputPath, ""); - assertModuleOutput("project.test", "", getProjectPath() + testClassesOutputPath); - } - - private void assertDelegatedBaseJavaProject() { - assertModules("project", "project.main", "project.test"); assertContentRoots("project", getProjectPath()); - assertNoExcludePatterns("project", "build.gradle"); + assertNoSourceRoots("project"); - assertModuleOutputs("project.main", - getProjectPath() + "/build/classes/java/main", - getProjectPath() + "/build/resources/main"); - assertModuleOutput("project.main", getProjectPath() + "/build/classes/java/main", ""); + assertContentRoots("project.main", path("src/main")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); - assertModuleOutputs("project.test", - getProjectPath() + "/build/classes/java/test", - getProjectPath() + "/build/resources/test"); - assertModuleOutput("project.test", "", getProjectPath() + "/build/classes/java/test"); - } + assertContentRoots("project.test", path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); - private void assertNotDelegatedMergedBaseJavaProject() { - assertModules("project"); + assertModuleOutputs("project.main", path("build/classes/java/main"), path("build/resources/main")); + assertModuleOutput("project.main", path("build/classes/java/main"), ""); - assertDefaultGradleJavaProjectFoldersForMergedModule(); - - assertModuleOutputs("project", - getProjectPath() + "/out/production/classes", - getProjectPath() + "/out/production/resources", - getProjectPath() + "/out/test/classes", - getProjectPath() + "/out/test/resources"); - - assertModuleOutput("project", getProjectPath() + "/out/production/classes", getProjectPath() + "/out/test/classes"); - } - - private void assertDelegatedMergedBaseJavaProject() { - assertModuleOutputs("project", - getProjectPath() + "/build/classes/java/main", - getProjectPath() + "/build/resources/main", - getProjectPath() + "/build/classes/java/test", - getProjectPath() + "/build/resources/test"); + assertModuleOutputs("project.test", path("build/classes/java/test"), path("build/resources/test")); + assertModuleOutput("project.test", "", path("build/classes/java/test")); } @Test public void testCompileOutputPathCustomizedWithIdeaPlugin() throws Exception { createDefaultDirs(); - importProject( - """ - apply plugin: 'java' - apply plugin: 'idea' - idea { - module { - outputDir = file(buildDir) - } - }""" - ); + createProjectSubFile("build.gradle", """ + apply plugin: 'java' + apply plugin: 'idea' + idea { + module { + outputDir = file(buildDir) + } + } + """); + importProject(); assertModules("project", "project.main", "project.test"); + assertModuleOutput("project.main", path("build/classes/java/main"), ""); + assertModuleOutput("project.test", "", path("build/classes/java/test")); - assertDefaultGradleJavaProjectFolders(); - - assertModuleOutput("project.main", getProjectPath() + "/build/classes/java/main", ""); - assertModuleOutput("project.test", "", getProjectPath() + "/build/classes/java/test"); getCurrentExternalProjectSettings().setDelegatedBuild(false); GradleSettings.getInstance(myProject).getPublisher().onBuildDelegationChange(false, getProjectPath()); - assertModuleOutput("project.main", getProjectPath() + "/build", ""); - assertModuleOutput("project.test", "", getProjectPath() + "/out/test/classes"); + assertModules("project", "project.main", "project.test"); + assertModuleOutput("project.main", path("build"), ""); + assertModuleOutput("project.test", "", path("out/test/classes")); + getCurrentExternalProjectSettings().setDelegatedBuild(true); - - importProjectUsingSingeModulePerGradleProject(); - + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); assertModules("project"); - - assertDefaultGradleJavaProjectFoldersForMergedModule(); - - assertModuleOutput("project", getProjectPath() + "/build", getProjectPath() + "/build/classes/java/test"); + assertModuleOutput("project", path("build"), path("build/classes/java/test")); } @Test @@ -218,59 +281,114 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertModules("project", "project.main", "project.test"); - assertDefaultGradleJavaProjectFolders(); - assertGeneratedSources("project.main", path("src/main/java")); - assertGeneratedTestSources("project.test", path("src/test/java")); + assertExcludes("project", ".gradle", "build"); - importProjectUsingSingeModulePerGradleProject(); + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.main", path("src/main")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + + assertContentRoots("project.test", path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST_GENERATED, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); assertModules("project"); - assertDefaultGradleJavaProjectFoldersForMergedModule(); - assertGeneratedSources("project", path("src/main/java")); - assertGeneratedTestSources("project", path("src/test/java")); + assertExcludes("project", ".gradle", "build"); + + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.TEST_GENERATED, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); } @Test public void testCustomSourceSetsAreImported() throws Exception { createDefaultDirs(); - createProjectSubFile("src/generated/java/G.java"); + createProjectSubFile("src/customSourceSet/java/G.java"); importProject(""" apply plugin: 'java' apply plugin: 'idea' - + sourceSets { - generated + customSourceSet }"""); - assertModules("project", "project.main", "project.test", "project.generated"); + assertModules("project", "project.main", "project.test", "project.customSourceSet"); - importProjectUsingSingeModulePerGradleProject(); - assertSources("project", path("src/generated/java"), path("src/main/java")); - assertTestSources("project", path("src/test/java")); + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.main", path("src/main")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + + assertContentRoots("project.test", path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); + + assertContentRoots("project.customSourceSet", path("src/customSourceSet")); + assertSourceRoots("project.customSourceSet", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/customSourceSet/java")) + ); + + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); + + assertModules("project"); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java"), path("src/customSourceSet/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); } @Test @TargetVersions("4.7+") public void testResourceFoldersWithIdeaPluginInNonJavaProject() throws Exception { createProjectSubDirs("python/src", "python/test", "python/resources"); - importProject(createBuildScriptBuilder().withIdeaPlugin() - .addPostfix( "idea {", - " module {", - " sourceDirs += file('python/src')", - " resourceDirs += file('python/resources')", - " testSourceDirs += file('python/test')", - " }", - "}") - .generate()); + importProject(script(it -> it + .withIdeaPlugin() + .addPostfix( + """ + idea { + module { + sourceDirs += file('python/src') + resourceDirs += file('python/resources') + testSourceDirs += file('python/test') + } + } + """ + ) + )); assertModules("project"); assertContentRoots("project", getProjectPath()); - - assertSources("project", path("python/src")); - assertResources("project", path("python/resources")); - assertTestSources("project", path("python/test")); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("python/src")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("python/resources")) + .sourceRoots(ExternalSystemSourceType.TEST, path("python/test")) + ); } @Test @@ -299,25 +417,39 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { ); assertModules("project", "project.main", "project.test"); - assertContentRoots("project", getProjectPath()); - assertExcludes("project", ".gradle", "build"); - assertContentRoots("project.main", path("src/main")); - assertSources("project.main", path("src/main/java"), path("src/main/src2")); - assertResources("project.main", path("src/main/resources"), path("src/main/resources2")); - assertContentRoots("project.test", path("src/test")); - assertTestSources("project.test", path("src/test/java"), path("src/test/src2")); - assertTestResources("project.test", path("src/test/resources"), path("src/test/resources2")); - importProjectUsingSingeModulePerGradleProject(); + assertExcludes("project", ".gradle", "build"); + + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.main", path("src/main")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java"), path("src/main/src2")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources"), path("src/main/resources2")) + ); + + assertContentRoots("project.test", path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java"), path("src/test/src2")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources"), path("src/test/resources2")) + ); + + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); assertModules("project"); - assertContentRoots("project", getProjectPath()); assertExcludes("project", ".gradle", "build"); - assertSources("project", path("src/main/java"), path("src/main/src2")); - assertResources("project", path("src/main/resources"), path("src/main/resources2")); - assertTestSources("project", path("src/test/java"), path("src/test/src2")); - assertTestResources("project", path("src/test/resources"), path("src/test/resources2")); + + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java"), path("src/main/src2")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources"), path("src/main/resources2")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java"), path("src/test/src2")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources"), path("src/test/resources2")) + ); } @Test @@ -350,20 +482,29 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { Runnable check = () -> { assertModules("project", "project.main", "project.test", "project.customSourceSet"); - assertContentRoots("project", getProjectPath()); + assertExcludes("project", ".gradle", "build"); + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + assertContentRoots("project.main", path("src/main")); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); assertContentRoots("project.test", path("src/test")); - assertTestSources("project.test", path("src/test/java"), path("src/test/src2")); - assertTestResources("project.test", path("src/test/resources"), path("src/test/resources2")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java"), path("src/test/src2")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources"), path("src/test/resources2")) + ); assertContentRoots("project.customSourceSet", path("src/customSourceSet")); - assertTestSources("project.customSourceSet", path("src/customSourceSet/java")); - assertTestResources("project.customSourceSet", path("src/customSourceSet/resources")); + assertSourceRoots("project.customSourceSet", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/customSourceSet/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/customSourceSet/resources")) + ); }; check.run(); @@ -391,7 +532,6 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { @Test public void testProjectWithInheritedOutputDirs() throws Exception { - createDefaultDirs(); importProject( """ @@ -406,24 +546,48 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertModules("project", "project.main", "project.test"); - assertDefaultGradleJavaProjectFolders(); + assertExcludes("project", ".gradle", "build"); + + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.main", path("src/main")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); + + assertContentRoots("project.test", path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); assertModuleInheritedOutput("project"); assertModuleInheritedOutput("project.main"); assertModuleInheritedOutput("project.test"); - importProjectUsingSingeModulePerGradleProject(); + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); assertModules("project"); - assertDefaultGradleJavaProjectFoldersForMergedModule(); + assertExcludes("project", ".gradle", "build"); + + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); assertModuleInheritedOutput("project"); } @Test public void testSourceFoldersMerge() throws Exception { - createDefaultDirs(); createProjectSubFile("src/B.java"); createProjectSubFile("src/resources/res.properties"); @@ -446,98 +610,153 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { ); assertModules("project", "project.main", "project.test"); - assertContentRoots("project", getProjectPath()); assertExcludes("project", ".gradle", "build"); + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + assertContentRoots("project.main", path("src")); - assertSources("project.main", path("src"), path("src/main/java")); - assertResources("project.main", path("src/resources"), path("src/main/resources")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src"), path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/resources"), path("src/main/resources")) + ); assertContentRoots("project.test", path("test"), path("src/test")); - assertTestSources("project.test", path("test"), path("src/test/java")); - assertTestResources("project.test", path("test/resources"), path("src/test/resources")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("test"), path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("test/resources"), path("src/test/resources")) + ); + + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); - importProjectUsingSingeModulePerGradleProject(); assertModules("project"); - assertContentRoots("project", getProjectPath()); + assertExcludes("project", ".gradle", "build"); - assertSources("project", path("src"), path("src/main/java")); - assertResources("project", path("src/main/resources"), path("src/resources")); - assertTestSources("project", path("test"), path("src/test/java")); - assertTestResources("project", path("src/test/resources"), path("test/resources")); + + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src"), path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/resources"), path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.TEST, path("test"), path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("test/resources"), path("src/test/resources")) + ); } @Test public void testRootsAreNotCreatedIfFilesAreMissing() throws Exception { createProjectSubFile("src/main/java/A.java"); createProjectSubFile("src/test/resources/res.properties"); - importProjectUsingSingeModulePerGradleProject( + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject( """ apply plugin: 'java' apply plugin: 'idea' sourceSets.main.java.srcDirs file('src/generated/java') idea.module { generatedSourceDirs += file('src/generated/java') - }""" + } + """ ); assertModules("project"); + assertExcludes("project", ".gradle", "build"); - assertSources("project", path("src/main/java")); - assertResources("project"); - assertTestSources("project"); - assertGeneratedSources("project"); - assertTestResources("project", path("src/test/resources")); + + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); } @Test public void testRootsAreAddedWhenAFolderCreated() throws Exception { createProjectSubFile("src/main/java/A.java"); - importProjectUsingSingeModulePerGradleProject(""" - apply plugin: 'java' - apply plugin: 'idea' - sourceSets.main.java.srcDirs file('src/generated/java') - idea.module { - generatedSourceDirs += file('src/generated/java') - }"""); + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject( + """ + apply plugin: 'java' + apply plugin: 'idea' + sourceSets.main.java.srcDirs file('src/generated/java') + idea.module { + generatedSourceDirs += file('src/generated/java') + } + """ + ); assertModules("project"); - assertSources("project", path("src/main/java")); - assertTestSources("project"); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + ); createProjectSubFile("src/test/java/ATest.java"); waitForModulesUpdate(); - assertTestSources("project", path("src/test/java")); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + ); createProjectSubFile("src/main/resources/res.txt"); waitForModulesUpdate(); - assertResources("project", path("src/main/resources")); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + ); createProjectSubFile("src/generated/java/Generated.java"); waitForModulesUpdate(); - assertGeneratedSources("project", path("src/generated/java")); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + .sourceRoots(ExternalSystemSourceType.SOURCE_GENERATED, path("src/generated/java")) + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + ); } @Test public void testRootsListenersAreUpdatedWithProjectModel() throws Exception { createProjectSubFile("src/main/java/A.java"); - importProjectUsingSingeModulePerGradleProject("apply plugin: 'java'"); + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject("apply plugin: 'java'"); assertModules("project"); + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + ); - importProjectUsingSingeModulePerGradleProject( + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject( """ apply plugin: 'java' + sourceSets { - test { - java.srcDirs = [file('test-src/java')] } - }"""); + test { + java.srcDirs = [file('test-src/java')] + } + } + """); + + assertModules("project"); + assertContentRoots("project", getProjectPath()); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + ); createProjectSubFile("src/test/java/ATest.java"); createProjectSubFile("test-src/java/BTest.java"); waitForModulesUpdate(); - assertTestSources("project", path("test-src/java")); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.TEST, path("test-src/java")) + ); } @@ -548,44 +767,56 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { createProjectSubFile("test/Test.java"); createProjectSubFile("test/test.properties"); - importProject(""" - apply plugin: 'java' - sourceSets { - main { - java { - srcDir 'src' - } - resources { - srcDir 'src' - } - } - test { - java { - srcDir 'test' - } - resources { - srcDir 'test' - } - } - } - """); - assertModules("project", "project.main", "project.test"); - assertContentRoots("project", getProjectPath()); - assertContentRoots("project.main", path("src")); - assertContentRoots("project.test", path("test"), path("src/test")); - assertSources("project.main", path("src")); - assertTestSources("project.test", path("test")); - assertResources("project"); - assertTestResources("project"); + importProject( + """ + apply plugin: 'java' + sourceSets { + main { + java { + srcDir 'src' + } + resources { + srcDir 'src' + } + } + test { + java { + srcDir 'test' + } + resources { + srcDir 'test' + } + } + } + """ + ); - importProjectUsingSingeModulePerGradleProject(); + assertModules("project", "project.main", "project.test"); + + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.main", path("src")); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src")) + ); + + assertContentRoots("project.test", path("test"), path("src/test")); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("test")) + ); + + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); assertModules("project"); + assertContentRoots("project", getProjectPath()); - assertSources("project", path("src")); - assertTestSources("project", path("test")); - assertResources("project"); - assertTestResources("project"); + assertSourceRoots("project", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src")) + .sourceRoots(ExternalSystemSourceType.TEST, path("test")) + ); } @Test @@ -636,9 +867,10 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertContentRoots("rootName.project1.project3", FileUtil.toSystemIndependentName(new File(getProjectPath(), "project3").getAbsolutePath())); - getCurrentExternalProjectSettings().setUseQualifiedModuleNames(false); + getCurrentExternalProjectSettings().setUseQualifiedModuleNames(false); importProject(); + assertModules("rootName", "project1", "project2", @@ -664,28 +896,38 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { createProjectSubFile("../outer3/A.java", "class A {}"); createProjectSubFile("build/generated/A.java", "class A {}"); createProjectSubFile("../outer4/generated/A.java", "class A {}"); - GradleBuildScriptBuilder buildScript = createBuildScriptBuilder() + createProjectSubFile("build.gradle", script(it -> it .withJavaPlugin() .withIdeaPlugin() .addPrefix( - "sourceSets {", - " generated.java.srcDirs += \"${buildDir}/generated\"", - " generated.java.srcDirs += '../outer4/generated'", - " main.java.srcDirs += '../outer1/src/main/java'", - " main.java.srcDirs += '../outer1/src/main/kotlin'", - " main.java.srcDirs += '../outer2/src/main/java'", - " main.java.srcDirs += '../outer3'", - "}") - .addPrefix( - "idea {", - " module {", - " inheritOutputDirs = true", - " generatedSourceDirs += file(\"${buildDir}/generated\")", - " generatedSourceDirs += file('../outer4/generated')", - " }", - "}"); - importPerSourceSet(true); - importProject(buildScript.generate()); + """ + apply plugin: 'java' + apply plugin: 'idea' + sourceSets { + generated.java.srcDirs += "${buildDir}/generated" + generated.java.srcDirs += '../outer4/generated' + main.java.srcDirs += '../outer1/src/main/java' + main.java.srcDirs += '../outer1/src/main/kotlin' + main.java.srcDirs += '../outer2/src/main/java' + main.java.srcDirs += '../outer3' + } + """ + ).addPrefix( + """ + idea { + module { + inheritOutputDirs = true + generatedSourceDirs += file("${buildDir}/generated") + generatedSourceDirs += file('../outer4/generated') + } + } + """ + ) + )); + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(true); + importProject(); + assertModules("project", "project.main", "project.test", "project.generated"); assertContentEntryExists("project", ""); assertContentEntryExists("project.main", @@ -715,28 +957,36 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { createProjectSubFile("../outer3/A.java", "class A {}"); createProjectSubFile("build/generated/A.java", "class A {}"); createProjectSubFile("../outer4/generated/A.java", "class A {}"); - GradleBuildScriptBuilder buildScript = createBuildScriptBuilder() + createProjectSubFile("build.gradle", script(it -> it .withJavaPlugin() .withIdeaPlugin() .addPrefix( - "sourceSets {", - " generated.java.srcDirs += \"${buildDir}/generated\"", - " generated.java.srcDirs += '../outer4/generated'", - " main.java.srcDirs += '../outer1/src/main/java'", - " main.java.srcDirs += '../outer1/src/main/kotlin'", - " main.java.srcDirs += '../outer2/src/main/java'", - " main.java.srcDirs += '../outer3'", - "}") - .addPrefix( - "idea {", - " module {", - " inheritOutputDirs = true", - " generatedSourceDirs += file(\"${buildDir}/generated\")", - " generatedSourceDirs += file('../outer4/generated')", - " }", - "}"); - importPerSourceSet(false); - importProject(buildScript.generate()); + """ + sourceSets { + generated.java.srcDirs += "${buildDir}/generated" + generated.java.srcDirs += '../outer4/generated' + main.java.srcDirs += '../outer1/src/main/java' + main.java.srcDirs += '../outer1/src/main/kotlin' + main.java.srcDirs += '../outer2/src/main/java' + main.java.srcDirs += '../outer3' + } + """ + ).addPrefix( + """ + idea { + module { + inheritOutputDirs = true + generatedSourceDirs += file("${buildDir}/generated") + generatedSourceDirs += file('../outer4/generated') + } + } + """ + ) + )); + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); + assertModules("project"); assertContentEntryExists("project", "", @@ -760,14 +1010,13 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { public void testMultipleSourcesConsistencyCompilerOutput() throws Exception { createProjectSubFile("src/main/java/A.java", "class A {}"); createProjectSubFile("src/main/kotlin/A.kt", "class A {}"); - importPerSourceSet(false); - importProject( - createBuildScriptBuilder() - .withMavenCentral() - .withKotlinJvmPlugin() - .withJavaLibraryPlugin() - .generate() - ); + + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(script(it -> it + .withMavenCentral() + .withKotlinJvmPlugin() + .withJavaLibraryPlugin() + )); assertModules("project"); assertContentEntryExists("project"); assertSourceExists("project", "src/main/java", "src/main/kotlin"); @@ -784,7 +1033,8 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { module { excludeDirs += file('submodule') } - }""" + } + """ ); assertModules("project"); @@ -803,45 +1053,61 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { public void testSharedSourceFolders() throws Exception { createProjectSubFile("settings.gradle", "include 'app1', 'app2'"); createProjectSubFile("shared/resources/resource.txt"); - createProjectSubFile("app1/build.gradle", createBuildScriptBuilder() + createProjectSubFile("app1/build.gradle", script(it -> it .withJavaPlugin() .addPostfix( - "sourceSets {", - " main.resources.srcDir '../shared/resources'", - " }" + """ + sourceSets { + main.resources.srcDir '../shared/resources' + } + """ ) - .generate()); - createProjectSubFile("app2/build.gradle", createBuildScriptBuilder() + )); + createProjectSubFile("app2/build.gradle", script(it -> it .withJavaPlugin() .addPostfix( - "sourceSets {", - " main.resources.srcDir '../shared/resources'", - " }" + """ + sourceSets { + main.resources.srcDir '../shared/resources' + } + """ ) - .generate()); + )); - importPerSourceSet(false); - importProject(""); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); assertModules("project", "project.app1", "project.app2"); - assertResources("project.app1", getProjectPath() + "/shared/resources"); - assertResources("project.app2"); + + assertContentRoots("project", getProjectPath()); + assertNoSourceRoots("project"); + + assertContentRoots("project.app1", path("app1"), path("shared/resources")); + assertSourceRoots("project.app1", it -> it + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("shared/resources")) + ); + + assertContentRoots("project.app2", path("app2")); + assertNoSourceRoots("project.app2"); } @Test public void testBuildFileAtSourceRootLayout() throws Exception { createProjectSubDir("build"); - final GradleBuildScriptBuilder buildScript = createBuildScriptBuilder() + createProjectSubFile("build.gradle", script(it -> it .withJavaPlugin() .addPostfix( - "sourceSets {", - " main.java.srcDirs = ['.']", - "}" - ); + """ + sourceSets { + main.java.srcDirs = ['.'] + } + """ + ) + )); Registry.get(GradleExcludeBuildFilesDataService.REGISTRY_KEY).setValue(false); - importPerSourceSet(true); - importProject(buildScript.generate()); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(true); + importProject(); assertModules("project", "project.main", "project.test"); assertContentRoots("project"); assertContentRoots("project.main", getProjectPath()); @@ -849,16 +1115,16 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertNoExcludePatterns("project.main", getExternalSystemConfigFileName()); Registry.get(GradleExcludeBuildFilesDataService.REGISTRY_KEY).setValue(true); - importPerSourceSet(true); - importProject(buildScript.generate()); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(true); + importProject(); assertModules("project", "project.main", "project.test"); assertContentRoots("project"); assertContentRoots("project.main", getProjectPath()); assertExcludes("project.main", "build"); assertExcludePatterns("project.main", getExternalSystemConfigFileName()); - importPerSourceSet(false); - importProject(buildScript.generate()); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(); assertModules("project"); assertContentRoots("project", getProjectPath()); assertExcludes("project", "build"); @@ -896,48 +1162,29 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertExcludes("project", ".gradle", "build"); assertContentRoots("project", getProjectPath()); - assertSources("project"); - assertResources("project"); - assertTestSources("project"); - assertTestResources("project"); - assertGeneratedSources("project"); - assertGeneratedResources("project"); - assertGeneratedTestSources("project"); - assertGeneratedTestResources("project"); + assertNoSourceRoots("project"); assertContentRoots("project.main", path("src/main")); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.main"); - assertTestResources("project.main"); - assertGeneratedSources("project.main"); - assertGeneratedResources("project.main"); - assertGeneratedTestSources("project.main"); - assertGeneratedTestResources("project.main"); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); assertModuleOutput("project.main", path("build/classes/java/main"), ""); assertModuleOutputs("project.main", path("build/classes/java/main"), path("build/resources/main")); assertContentRoots("project.test", path("src/test")); - assertSources("project.test"); - assertResources("project.test"); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertGeneratedSources("project.test"); - assertGeneratedResources("project.test"); - assertGeneratedTestSources("project.test"); - assertGeneratedTestResources("project.test"); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); assertModuleOutput("project.test", "", path("build/classes/java/test")); assertModuleOutputs("project.test", path("build/classes/java/test"), path("build/resources/test")); assertContentRoots("project.integrationTest", path("src/integrationTest")); - assertSources("project.integrationTest"); - assertResources("project.integrationTest"); - assertTestSources("project.integrationTest", path("src/integrationTest/java")); - assertTestResources("project.integrationTest", path("src/integrationTest/resources")); - assertGeneratedSources("project.integrationTest"); - assertGeneratedResources("project.integrationTest"); - assertGeneratedTestSources("project.integrationTest"); - assertGeneratedTestResources("project.integrationTest"); + assertSourceRoots("project.integrationTest", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/integrationTest/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/integrationTest/resources")) + ); assertModuleOutput("project.integrationTest", "", path("build/classes/java/integrationTest")); assertModuleOutputs("project.integrationTest", path("build/classes/java/integrationTest"), path("build/resources/integrationTest")); } @@ -973,48 +1220,29 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertExcludes("project", ".gradle", "build", "out"); assertContentRoots("project", getProjectPath()); - assertSources("project"); - assertResources("project"); - assertTestSources("project"); - assertTestResources("project"); - assertGeneratedSources("project"); - assertGeneratedResources("project"); - assertGeneratedTestSources("project"); - assertGeneratedTestResources("project"); + assertNoSourceRoots("project"); assertContentRoots("project.main", path("src/main")); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.main"); - assertTestResources("project.main"); - assertGeneratedSources("project.main"); - assertGeneratedResources("project.main"); - assertGeneratedTestSources("project.main"); - assertGeneratedTestResources("project.main"); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); assertModuleOutput("project.main", path("out/production/classes"), ""); assertModuleOutputs("project.main", path("out/production/classes"), path("out/production/resources")); assertContentRoots("project.test", path("src/test")); - assertSources("project.test"); - assertResources("project.test"); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertGeneratedSources("project.test"); - assertGeneratedResources("project.test"); - assertGeneratedTestSources("project.test"); - assertGeneratedTestResources("project.test"); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); assertModuleOutput("project.test", "", path("out/test/classes")); assertModuleOutputs("project.test", path("out/test/classes"), path("out/test/resources")); assertContentRoots("project.integrationTest", path("src/integrationTest")); - assertSources("project.integrationTest"); - assertResources("project.integrationTest"); - assertTestSources("project.integrationTest", path("src/integrationTest/java")); - assertTestResources("project.integrationTest", path("src/integrationTest/resources")); - assertGeneratedSources("project.integrationTest"); - assertGeneratedResources("project.integrationTest"); - assertGeneratedTestSources("project.integrationTest"); - assertGeneratedTestResources("project.integrationTest"); + assertSourceRoots("project.integrationTest", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/integrationTest/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/integrationTest/resources")) + ); assertModuleOutput("project.integrationTest", "", path("out/integrationTest/classes")); assertModuleOutputs("project.integrationTest", path("out/integrationTest/classes"), path("out/integrationTest/resources")); } @@ -1041,48 +1269,29 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertExcludes("project", ".gradle", "build"); assertContentRoots("project", getProjectPath()); - assertSources("project"); - assertResources("project"); - assertTestSources("project"); - assertTestResources("project"); - assertGeneratedSources("project"); - assertGeneratedResources("project"); - assertGeneratedTestSources("project"); - assertGeneratedTestResources("project"); + assertNoSourceRoots("project"); assertContentRoots("project.main", path("src/main")); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.main"); - assertTestResources("project.main"); - assertGeneratedSources("project.main"); - assertGeneratedResources("project.main"); - assertGeneratedTestSources("project.main"); - assertGeneratedTestResources("project.main"); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); assertModuleOutput("project.main", path("build/classes/java/main"), ""); assertModuleOutputs("project.main", path("build/classes/java/main"), path("build/resources/main")); assertContentRoots("project.test", path("src/test")); - assertSources("project.test"); - assertResources("project.test"); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertGeneratedSources("project.test"); - assertGeneratedResources("project.test"); - assertGeneratedTestSources("project.test"); - assertGeneratedTestResources("project.test"); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); assertModuleOutput("project.test", "", path("build/classes/java/test")); assertModuleOutputs("project.test", path("build/classes/java/test"), path("build/resources/test")); assertContentRoots("project.testFixtures", path("src/testFixtures")); - assertSources("project.testFixtures"); - assertResources("project.testFixtures"); - assertTestSources("project.testFixtures", path("src/testFixtures/java")); - assertTestResources("project.testFixtures", path("src/testFixtures/resources")); - assertGeneratedSources("project.testFixtures"); - assertGeneratedResources("project.testFixtures"); - assertGeneratedTestSources("project.testFixtures"); - assertGeneratedTestResources("project.testFixtures"); + assertSourceRoots("project.testFixtures", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/testFixtures/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/testFixtures/resources")) + ); assertModuleOutput("project.testFixtures", "", path("build/classes/java/testFixtures")); assertModuleOutputs("project.testFixtures", path("build/classes/java/testFixtures"), path("build/resources/testFixtures")); } @@ -1109,90 +1318,33 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { assertExcludes("project", ".gradle", "build", "out"); assertContentRoots("project", getProjectPath()); - assertSources("project"); - assertResources("project"); - assertTestSources("project"); - assertTestResources("project"); - assertGeneratedSources("project"); - assertGeneratedResources("project"); - assertGeneratedTestSources("project"); - assertGeneratedTestResources("project"); + assertNoSourceRoots("project"); assertContentRoots("project.main", path("src/main")); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - assertTestSources("project.main"); - assertTestResources("project.main"); - assertGeneratedSources("project.main"); - assertGeneratedResources("project.main"); - assertGeneratedTestSources("project.main"); - assertGeneratedTestResources("project.main"); + assertSourceRoots("project.main", it -> it + .sourceRoots(ExternalSystemSourceType.SOURCE, path("src/main/java")) + .sourceRoots(ExternalSystemSourceType.RESOURCE, path("src/main/resources")) + ); assertModuleOutput("project.main", path("out/production/classes"), ""); assertModuleOutputs("project.main", path("out/production/classes"), path("out/production/resources")); assertContentRoots("project.test", path("src/test")); - assertSources("project.test"); - assertResources("project.test"); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - assertGeneratedSources("project.test"); - assertGeneratedResources("project.test"); - assertGeneratedTestSources("project.test"); - assertGeneratedTestResources("project.test"); + assertSourceRoots("project.test", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/test/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/test/resources")) + ); assertModuleOutput("project.test", "", path("out/test/classes")); assertModuleOutputs("project.test", path("out/test/classes"), path("out/test/resources")); assertContentRoots("project.testFixtures", path("src/testFixtures")); - assertSources("project.testFixtures"); - assertResources("project.testFixtures"); - assertTestSources("project.testFixtures", path("src/testFixtures/java")); - assertTestResources("project.testFixtures", path("src/testFixtures/resources")); - assertGeneratedSources("project.testFixtures"); - assertGeneratedResources("project.testFixtures"); - assertGeneratedTestSources("project.testFixtures"); - assertGeneratedTestResources("project.testFixtures"); + assertSourceRoots("project.testFixtures", it -> it + .sourceRoots(ExternalSystemSourceType.TEST, path("src/testFixtures/java")) + .sourceRoots(ExternalSystemSourceType.TEST_RESOURCE, path("src/testFixtures/resources")) + ); assertModuleOutput("project.testFixtures", "", path("out/testFixtures/classes")); assertModuleOutputs("project.testFixtures", path("out/testFixtures/classes"), path("out/testFixtures/resources")); } - protected void assertDefaultGradleJavaProjectFolders() { - if (GradleProjectSettings.isDelegatedBuildEnabled(myProject, getProjectPath())) { - assertExcludes("project", ".gradle", "build"); - } - else { - assertExcludes("project", ".gradle", "build", "out"); - } - - assertContentRoots("project", getProjectPath()); - assertSources("project"); - assertResources("project"); - assertTestSources("project"); - assertTestResources("project"); - - assertContentRoots("project.main", path("src/main")); - assertSources("project.main", path("src/main/java")); - assertResources("project.main", path("src/main/resources")); - - assertContentRoots("project.test", path("src/test")); - assertTestSources("project.test", path("src/test/java")); - assertTestResources("project.test", path("src/test/resources")); - } - - protected void assertDefaultGradleJavaProjectFoldersForMergedModule() { - if (GradleProjectSettings.isDelegatedBuildEnabled(myProject, getProjectPath())) { - assertExcludes("project", ".gradle", "build"); - } - else { - assertExcludes("project", ".gradle", "build", "out"); - } - - assertContentRoots("project", getProjectPath()); - assertSources("project", path("src/main/java")); - assertResources("project", path("src/main/resources")); - assertTestSources("project", path("src/test/java")); - assertTestResources("project", path("src/test/resources")); - } - private void createDefaultDirs() throws IOException { createProjectSubFile("src/main/java/A.java"); createProjectSubFile("src/test/java/A.java"); @@ -1228,10 +1380,6 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { } } - protected void importPerSourceSet(boolean b) { - getCurrentExternalProjectSettings().setResolveModulePerSourceSet(b); - } - protected void waitForModulesUpdate() throws Exception { edt(() -> { ((SourceFolderManagerImpl)SourceFolderManager.getInstance(myProject)).consumeBulkOperationsState(future -> { diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java index d5e8b6d74e12..b84d1ef726cf 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java @@ -358,14 +358,9 @@ public abstract class GradleImportingTestCase extends JavaExternalSystemImportin importProject(); } - protected void importProjectUsingSingeModulePerGradleProject(@NonNls String config, Boolean skipIndexing) - throws IOException { - getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); - importProject(config, skipIndexing); - } - protected void importProjectUsingSingeModulePerGradleProject(@NonNls String config) throws IOException { - importProjectUsingSingeModulePerGradleProject(config, null); + getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); + importProject(config); } @Override