diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd4917..e6441136f 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java b/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java index 8a0dc847b..4635a662b 100644 --- a/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java +++ b/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java @@ -6,6 +6,7 @@ import com.intellij.find.findUsages.FindUsagesManager; import com.intellij.find.findUsages.FindUsagesOptions; import com.intellij.find.impl.FindManagerImpl; +import com.intellij.openapi.Disposable; import com.intellij.openapi.externalSystem.importing.ImportSpec; import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder; import com.intellij.openapi.externalSystem.model.DataNode; @@ -13,7 +14,7 @@ import com.intellij.openapi.externalSystem.model.ProjectSystemId; import com.intellij.openapi.externalSystem.model.project.ProjectData; import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId; -import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter; +import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListener; import com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMode; import com.intellij.openapi.externalSystem.service.notification.ExternalSystemProgressNotificationManager; import com.intellij.openapi.externalSystem.service.project.ExternalProjectRefreshCallback; @@ -28,125 +29,123 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; -import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; import com.intellij.openapi.util.Couple; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Ref; 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.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.usageView.UsageInfo; import com.intellij.util.CommonProcessors; import com.intellij.util.containers.ContainerUtil; -import org.assertj.core.api.Assertions; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.java.JavaResourceRootType; -import org.jetbrains.jps.model.java.JavaSourceRootProperties; import org.jetbrains.jps.model.java.JavaSourceRootType; import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import java.io.IOException; import java.io.PrintStream; +import java.nio.file.Path; import java.util.*; import java.util.function.BiPredicate; import java.util.function.Predicate; import static com.intellij.testFramework.EdtTestUtil.runInEdtAndGet; +import static com.intellij.testFramework.EdtTestUtil.runInEdtAndWait; /** * @author Vladislav.Soroka */ public abstract class ExternalSystemImportingTestCase extends ExternalSystemTestCase { - protected void assertModulesContains(@NotNull Project project, String... expectedNames) { - Module[] actual = ModuleManager.getInstance(project).getModules(); - List actualNames = new ArrayList<>(); - for (Module m : actual) { - actualNames.add(m.getName()); - } + private @Nullable Disposable myTestDisposable = null; + + @Override + protected void setUp() throws Exception { + super.setUp(); + + var notificationManager = ExternalSystemProgressNotificationManager.getInstance(); + var notificationListener = new ExternalSystemTaskNotificationListener() { + @Override + public void onTaskOutput(@NotNull ExternalSystemTaskId id, @NotNull String text, boolean stdOut) { + printOutput(text, stdOut); + } + }; + notificationManager.addNotificationListener(notificationListener, getTestDisposable()); + } - assertContain(actualNames, expectedNames); + @Override + public void tearDown() throws Exception { + new RunAll( + () -> Disposer.dispose(getTestDisposable()), + () -> super.tearDown() + ).run(); + } + + private @NotNull Disposable getTestDisposable() { + if (myTestDisposable == null) { + myTestDisposable = Disposer.newDisposable(); + } + return myTestDisposable; } protected void assertModulesContains(String... expectedNames) { - assertModulesContains(myProject, expectedNames); + ModuleAssertions.assertModulesContains(myProject, expectedNames); } protected void assertModules(String... expectedNames) { - Module[] actualModules = ModuleManager.getInstance(myProject).getModules(); + ModuleAssertions.assertModules(myProject, expectedNames); + } - Assertions.assertThat(actualModules) - .extracting("name") - .containsExactlyInAnyOrder(expectedNames); + protected void assertModules(List expectedNames) { + ModuleAssertions.assertModules(myProject, expectedNames); } protected void assertContentRoots(String moduleName, String... expectedRoots) { - List actual = new ArrayList<>(); - for (ContentEntry e : getContentRoots(moduleName)) { - actual.add(e.getUrl()); - } - - for (int i = 0; i < expectedRoots.length; i++) { - expectedRoots[i] = VfsUtilCore.pathToUrl(expectedRoots[i]); - } - - assertUnorderedPathsAreEqual(actual, Arrays.asList(expectedRoots)); + var expectedRootPaths = ContainerUtil.map(expectedRoots, it -> Path.of(it)); + ModuleAssertions.assertContentRoots(myProject, moduleName, expectedRootPaths); } protected void assertSources(String moduleName, String... expectedSources) { - doAssertContentFolders(moduleName, JavaSourceRootType.SOURCE, expectedSources); + assertSourceFolders(moduleName, JavaSourceRootType.SOURCE, Arrays.asList(expectedSources)); } - protected void assertGeneratedSources(String moduleName, String... expectedSources) { - assertGeneratedSources(moduleName, JavaSourceRootType.SOURCE, expectedSources); + protected void assertResources(String moduleName, String... expectedSources) { + assertSourceFolders(moduleName, JavaResourceRootType.RESOURCE, Arrays.asList(expectedSources)); } - protected void assertGeneratedTestSources(String moduleName, String... expectedSources) { - assertGeneratedSources(moduleName, JavaSourceRootType.TEST_SOURCE, expectedSources); + protected void assertTestSources(String moduleName, String... expectedSources) { + assertSourceFolders(moduleName, JavaSourceRootType.TEST_SOURCE, Arrays.asList(expectedSources)); } - private void assertGeneratedSources(String moduleName, JavaSourceRootType type, String... expectedSources) { - final ContentEntry[] contentRoots = getContentRoots(moduleName); - String rootUrl = contentRoots.length > 1 ? ExternalSystemApiUtil.getExternalProjectPath(getModule(moduleName)) : null; - List actual = new ArrayList<>(); - - for (ContentEntry contentRoot : contentRoots) { - rootUrl = VirtualFileManager.extractPath(rootUrl == null ? contentRoot.getUrl() : rootUrl); - for (SourceFolder f : contentRoot.getSourceFolders(type)) { - String folderUrl = VirtualFileManager.extractPath(f.getUrl()); - - if (folderUrl.startsWith(rootUrl)) { - int length = rootUrl.length() + 1; - folderUrl = folderUrl.substring(Math.min(length, folderUrl.length())); - } - - JavaSourceRootProperties properties = f.getJpsElement().getProperties(type); - if (properties != null && properties.isForGeneratedSources()) { - actual.add(folderUrl); - } - } - } + protected void assertTestResources(String moduleName, String... expectedSources) { + assertSourceFolders(moduleName, JavaResourceRootType.TEST_RESOURCE, Arrays.asList(expectedSources)); + } - assertOrderedElementsAreEqual(actual, Arrays.asList(expectedSources)); + protected void assertGeneratedSources(String moduleName, String... expectedSources) { + assertGeneratedSourceFolders(moduleName, JavaSourceRootType.SOURCE, Arrays.asList(expectedSources)); } - protected void assertResources(String moduleName, String... expectedSources) { - doAssertContentFolders(moduleName, JavaResourceRootType.RESOURCE, expectedSources); + protected void assertGeneratedTestSources(String moduleName, String... expectedSources) { + assertGeneratedSourceFolders(moduleName, JavaSourceRootType.TEST_SOURCE, Arrays.asList(expectedSources)); } - protected void assertTestSources(String moduleName, String... expectedSources) { - doAssertContentFolders(moduleName, JavaSourceRootType.TEST_SOURCE, expectedSources); + protected void assertGeneratedResources(String moduleName, String... expectedSources) { + assertGeneratedResourceFolders(moduleName, JavaResourceRootType.RESOURCE, Arrays.asList(expectedSources)); } - protected void assertTestResources(String moduleName, String... expectedSources) { - doAssertContentFolders(moduleName, JavaResourceRootType.TEST_RESOURCE, expectedSources); + protected void assertGeneratedTestResources(String moduleName, String... expectedSources) { + assertGeneratedResourceFolders(moduleName, JavaResourceRootType.TEST_RESOURCE, Arrays.asList(expectedSources)); } protected void assertExcludes(String moduleName, String... expectedExcludes) { @@ -169,35 +168,63 @@ protected void assertContentRootExcludes(String moduleName, String contentRoot, doAssertContentFolders(root, Arrays.asList(root.getExcludeFolders()), expectedExcudes); } - private void doAssertContentFolders(String moduleName, @NotNull JpsModuleSourceRootType rootType, String... expected) { - final ContentEntry[] contentRoots = getContentRoots(moduleName); - Arrays.sort(contentRoots, Comparator.comparing(ContentEntry::getUrl)); - final String rootUrl = contentRoots.length > 1 ? ExternalSystemApiUtil.getExternalProjectPath(getModule(moduleName)) : null; - doAssertContentFolders(rootUrl, contentRoots, rootType, expected); - } - - protected static List doAssertContentFolders(@Nullable String rootUrl, - ContentEntry[] contentRoots, - @NotNull JpsModuleSourceRootType rootType, - String... expected) { - List result = new ArrayList<>(); - List actual = new ArrayList<>(); - for (ContentEntry contentRoot : contentRoots) { - for (SourceFolder f : contentRoot.getSourceFolders(rootType)) { - rootUrl = VirtualFileManager.extractPath(rootUrl == null ? contentRoot.getUrl() : rootUrl); - String folderUrl = VirtualFileManager.extractPath(f.getUrl()); - if (folderUrl.startsWith(rootUrl)) { - int length = rootUrl.length() + 1; - folderUrl = folderUrl.substring(Math.min(length, folderUrl.length())); + private void assertSourceFolders( + @NotNull String moduleName, + @NotNull JpsModuleSourceRootType rootType, + @NotNull List expected + ) { + assertSourceFolders(moduleName, rootType, __ -> true, expected); + } + + private void assertGeneratedSourceFolders( + @NotNull String moduleName, + @NotNull JavaSourceRootType rootType, + @NotNull List expectedSources + ) { + assertSourceFolders(moduleName, rootType, it -> isGeneratedSource(it, rootType), expectedSources); + } + + private void assertGeneratedResourceFolders( + @NotNull String moduleName, + @NotNull JavaResourceRootType rootType, + @NotNull List expectedSources + ) { + assertSourceFolders(moduleName, rootType, it -> isGeneratedResource(it, rootType), expectedSources); + } + + private static boolean isGeneratedSource( + @NotNull SourceFolder sourceFolder, + @NotNull JavaSourceRootType rootType + ) { + var element = sourceFolder.getJpsElement(); + var properties = element.getProperties(rootType); + return properties != null && properties.isForGeneratedSources(); + } + + private static boolean isGeneratedResource( + @NotNull SourceFolder sourceFolder, + @NotNull JavaResourceRootType rootType + ) { + var element = sourceFolder.getJpsElement(); + var properties = element.getProperties(rootType); + return properties != null && properties.isForGeneratedSources(); + } + + private void assertSourceFolders( + @NotNull String moduleName, + @NotNull JpsModuleSourceRootType rootType, + @NotNull Predicate sourceFolderFilter, + @NotNull List expectedSources + ) { + var actualSources = new ArrayList(); + for (var contentRoot : getContentRoots(moduleName)) { + for (var sourceFolder : contentRoot.getSourceFolders(rootType)) { + if (sourceFolderFilter.test(sourceFolder)) { + actualSources.add(VirtualFileManager.extractPath(sourceFolder.getUrl())); } - - actual.add(folderUrl); - result.add(f); } } - - assertOrderedElementsAreEqual(actual, Arrays.asList(expected)); - return result; + assertUnorderedElementsAreEqual(actualSources, expectedSources); } private static void doAssertContentFolders(ContentEntry e, final List folders, String... expected) { @@ -420,21 +447,21 @@ protected void ignoreData(Predicate> booleanFunction, final ProjectDataManager.getInstance().importData(projectDataNode, myProject); } - protected void importProject(@NonNls String config, Boolean skipIndexing) throws IOException { + protected void importProject(@NotNull String config, @Nullable Boolean skipIndexing) throws IOException { createProjectConfig(config); importProject(skipIndexing); } - protected void importProject(Boolean skipIndexing) { + protected void importProject(@Nullable Boolean skipIndexing) { if (skipIndexing != null) { - PlatformTestUtil.withSystemProperty("idea.skip.indices.initialization", skipIndexing.toString(), () -> doImportProject()); + PlatformTestUtil.withSystemProperty("idea.skip.indices.initialization", skipIndexing.toString(), () -> importProject()); } else { - doImportProject(); + importProject(); } } - private void doImportProject() { + protected void importProject() { AbstractExternalSystemSettings systemSettings = ExternalSystemApiUtil.getSettings(myProject, getExternalSystemId()); final ExternalProjectSettings projectSettings = getCurrentExternalProjectSettings(); projectSettings.setExternalProjectPath(getProjectPath()); @@ -472,24 +499,16 @@ public void onFailure(@NotNull String errorMessage, @Nullable String errorDetail }).build(); } - ExternalSystemProgressNotificationManager notificationManager = ExternalSystemProgressNotificationManager.getInstance(); - ExternalSystemTaskNotificationListenerAdapter listener = new ExternalSystemTaskNotificationListenerAdapter() { - @Override - public void onTaskOutput(@NotNull ExternalSystemTaskId id, @NotNull String text, boolean stdOut) { - printOutput(text, stdOut); - } - }; - notificationManager.addNotificationListener(listener); - try { - ExternalSystemUtil.refreshProjects(importSpec); - } - finally { - notificationManager.removeNotificationListener(listener); - } + ExternalSystemUtil.refreshProjects(importSpec); if (!error.isNull()) { handleImportFailure(error.get().first, error.get().second); } + + // allow all the invokeLater to pass through the queue, before waiting for indexes to be ready + // (specifically, all the invokeLater that schedule indexing after language level change performed by import) + runInEdtAndWait(() -> PlatformTestUtil.dispatchAllEventsInIdeEventQueue()); + IndexingTestUtil.waitUntilIndexesAreReady(myProject); } protected void printOutput(@NotNull String text, boolean stdOut) { @@ -511,8 +530,7 @@ protected void handleImportFailure(@NotNull String errorMessage, @Nullable Strin protected ImportSpec createImportSpec() { ImportSpecBuilder importSpecBuilder = new ImportSpecBuilder(myProject, getExternalSystemId()) - .use(ProgressExecutionMode.MODAL_SYNC) - .forceWhenUptodate(); + .use(ProgressExecutionMode.MODAL_SYNC); return importSpecBuilder.build(); } diff --git a/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemTestCase.java b/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemTestCase.java index 827040bc8..ad03ceecd 100644 --- a/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemTestCase.java +++ b/intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemTestCase.java @@ -73,7 +73,7 @@ public abstract class ExternalSystemTestCase extends UsefulTestCase { protected @Nullable WSLDistribution myWSLDistribution; @Override - public void setUp() throws Exception { + protected void setUp() throws Exception { super.setUp(); setUpFixtures(); myProject = myTestFixture.getProject(); @@ -361,6 +361,10 @@ public VirtualFile createProjectSubFile(String relativePath, String content) thr return file; } + protected Project getProject() { + return myProject; + } + protected Module getModule(final String name) { return getModule(myProject, name); } diff --git a/intellij-community/platform/lang-impl/testSources/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt b/intellij-community/platform/lang-impl/testSources/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt index 183dc4264..0eec36ea0 100644 --- a/intellij-community/platform/lang-impl/testSources/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt +++ b/intellij-community/platform/lang-impl/testSources/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt @@ -2,18 +2,19 @@ package com.intellij.openapi.roots.ui.configuration import com.intellij.openapi.Disposable -import com.intellij.openapi.application.invokeAndWaitIfNeeded -import com.intellij.openapi.application.runWriteAction +import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.application.WriteAction import com.intellij.openapi.progress.ProgressIndicator +import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.* import com.intellij.openapi.projectRoots.impl.DependentSdkType -import com.intellij.openapi.projectRoots.impl.MockSdk import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.roots.ui.configuration.projectRoot.SdkDownload import com.intellij.openapi.roots.ui.configuration.projectRoot.SdkDownloadTask +import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.util.use import com.intellij.testFramework.LightPlatformTestCase -import com.intellij.util.containers.MultiMap import org.jdom.Element import java.io.File import java.util.* @@ -22,8 +23,6 @@ import javax.swing.JComponent abstract class SdkTestCase : LightPlatformTestCase() { - val projectSdk get() = ProjectRootManager.getInstance(project).projectSdk - override fun setUp() { super.setUp() @@ -33,67 +32,30 @@ abstract class SdkTestCase : LightPlatformTestCase() { SdkDownload.EP_NAME.point.registerExtension(TestSdkDownloader, testRootDisposable) } - fun createAndRegisterSdk(isProjectSdk: Boolean = false): TestSdk { + fun createAndRegisterSdk(isProjectSdk: Boolean = false): Sdk { val sdk = TestSdkGenerator.createNextSdk() registerSdk(sdk, isProjectSdk) return sdk } - fun createAndRegisterDependentSdk(isProjectSdk: Boolean = false): DependentTestSdk { - val sdk = TestSdkGenerator.createNextDependentSdk() - registerSdk(sdk.parent) + fun createAndRegisterDependentSdk(isProjectSdk: Boolean = false): Sdk { + val parentSdk = TestSdkGenerator.createNextSdk() + registerSdk(parentSdk) + + val sdk = TestSdkGenerator.createNextDependentSdk(parentSdk) registerSdk(sdk, isProjectSdk) return sdk } - private fun registerSdk(sdk: TestSdk, isProjectSdk: Boolean = false) { + private fun registerSdk(sdk: Sdk, isProjectSdk: Boolean = false) { registerSdk(sdk, testRootDisposable) if (isProjectSdk) { - setProjectSdk(sdk) + setProjectSdk(project, sdk, testRootDisposable) } } - fun registerSdks(vararg sdks: TestSdk) { - registerSdks(*sdks, parentDisposable = testRootDisposable) - } - - private fun setProjectSdk(sdk: Sdk?) { - invokeAndWaitIfNeeded { - runWriteAction { - val rootManager = ProjectRootManager.getInstance(project) - rootManager.projectSdk = sdk - } - } - } - - fun withProjectSdk(sdk: TestSdk, action: () -> Unit) { - val projectSdk = projectSdk - setProjectSdk(sdk) - try { - action() - } - finally { - setProjectSdk(projectSdk) - } - } - - fun withRegisteredSdk(sdk: TestSdk, isProjectSdk: Boolean = false, action: () -> Unit) { - withRegisteredSdks(sdk) { - when (isProjectSdk) { - true -> withProjectSdk(sdk, action) - else -> action() - } - } - } - - fun withRegisteredSdks(vararg sdks: TestSdk, action: () -> Unit) { - registerSdks(*sdks) - try { - action() - } - finally { - removeSdks(*sdks) - } + fun withProjectSdk(sdk: Sdk, action: () -> R): R { + return withProjectSdk(project, sdk, action) } interface TestSdkType : JavaSdkType, SdkTypeId { @@ -102,7 +64,7 @@ abstract class SdkTestCase : LightPlatformTestCase() { override fun isValidSdkHome(path: String): Boolean = true override fun suggestSdkName(currentSdkName: String?, sdkHome: String): String = TestSdkGenerator.findTestSdk(sdkHome)!!.name override fun suggestHomePath(): String? = null - override fun suggestHomePaths(): Collection = TestSdkGenerator.getAllTestSdks().map { it.homePath } + override fun suggestHomePaths(): Collection = TestSdkGenerator.getAllTestSdks().map { it.homePath!! } override fun createAdditionalDataConfigurable(sdkModel: SdkModel, sdkModificator: SdkModificator): AdditionalDataConfigurable? = null override fun saveAdditionalData(additionalData: SdkAdditionalData, additional: Element) {} override fun getBinPath(sdk: Sdk): String = File(sdk.homePath, "bin").path @@ -112,18 +74,28 @@ abstract class SdkTestCase : LightPlatformTestCase() { } } + internal val Sdk.parent: Sdk + get() { + if (sdkType != DependentTestSdkType) error("Unexpected state") + val parentSdkName = (sdkAdditionalData as DependentTestSdkAdditionalData).patentSdkName + return ProjectJdkTable.getInstance().findJdk(parentSdkName)!! + } + + class DependentTestSdkAdditionalData(val patentSdkName: String) : SdkAdditionalData + object DependentTestSdkType : DependentSdkType("dependent-test-type"), TestSdkType { - private fun getParentPath(sdk: Sdk, relativePath: String) = - (sdk as? DependentTestSdk) - ?.parent?.homePath - ?.let { File(it, relativePath).path } + private fun getParentPath(sdk: Sdk, relativePath: String): String? { + if (sdk.sdkType != DependentTestSdkType) return null + val additionalData = sdk.sdkAdditionalData + val parentSdkName = (additionalData as DependentTestSdkAdditionalData).patentSdkName + return ProjectJdkTable.getInstance().findJdk(parentSdkName)?.homePath?.let { File(it, relativePath).path } + } override fun getPresentableName(): String = name override fun isValidSdkHome(path: String): Boolean = true override fun suggestSdkName(currentSdkName: String?, sdkHome: String): String = "dependent-sdk-name" override fun suggestHomePath(): String? = null override fun createAdditionalDataConfigurable(sdkModel: SdkModel, sdkModificator: SdkModificator): AdditionalDataConfigurable? = null - override fun saveAdditionalData(additionalData: SdkAdditionalData, additional: Element) {} override fun getBinPath(sdk: Sdk) = getParentPath(sdk, "bin") override fun getToolsPath(sdk: Sdk) = getParentPath(sdk, "lib/tools.jar") override fun getVMExecutablePath(sdk: Sdk) = getParentPath(sdk, "bin/java") @@ -131,20 +103,16 @@ abstract class SdkTestCase : LightPlatformTestCase() { override fun getUnsatisfiedDependencyMessage() = "Unsatisfied dependency message" override fun isValidDependency(sdk: Sdk) = sdk is TestSdkType override fun getDependencyType() = TestSdkType - } - open class TestSdk(name: String, homePath: String, versionString: String, sdkType: TestSdkType) - : MockSdk(name, homePath, versionString, MultiMap(), sdkType) { - - constructor(name: String, homePath: String, versionString: String) - : this(name, homePath, versionString, TestSdkType) + override fun saveAdditionalData(additionalData: SdkAdditionalData, additional: Element) { + additional.setAttribute("patentSdkName", (additionalData as DependentTestSdkAdditionalData).patentSdkName) + } - override fun getHomePath(): String = super.getHomePath()!! + override fun loadAdditionalData(additional: Element): SdkAdditionalData { + return DependentTestSdkAdditionalData(additional.getAttributeValue("patentSdkName") ?: "") + } } - open class DependentTestSdk(name: String, homePath: String, versionString: String, val parent: TestSdk) - : TestSdk(name, homePath, versionString, DependentTestSdkType) - object TestSdkDownloader : SdkDownload { override fun supportsDownload(sdkTypeId: SdkTypeId) = sdkTypeId == TestSdkType @@ -158,22 +126,27 @@ abstract class SdkTestCase : LightPlatformTestCase() { val sdk = TestSdkGenerator.createNextSdk() sdkCreatedCallback.accept(object : SdkDownloadTask { override fun doDownload(indicator: ProgressIndicator) {} - override fun getPlannedVersion() = sdk.versionString + override fun getPlannedVersion() = sdk.versionString!! override fun getSuggestedSdkName() = sdk.name - override fun getPlannedHomeDir() = sdk.homePath + override fun getPlannedHomeDir() = sdk.homePath!! }) } + + override fun pickSdk(sdkTypeId: SdkTypeId, + sdkModel: SdkModel, + parentComponent: JComponent, + selectedSdk: Sdk?): SdkDownloadTask? = null } object TestSdkGenerator { private var createdSdkCounter = 0 - private lateinit var createdSdks: MutableMap + private lateinit var createdSdks: MutableMap fun getAllTestSdks() = createdSdks.values - fun findTestSdk(sdk: Sdk): TestSdk? = findTestSdk(sdk.homePath!!) + fun findTestSdk(sdk: Sdk): Sdk? = findTestSdk(sdk.homePath!!) - fun findTestSdk(homePath: String): TestSdk? = createdSdks[FileUtil.toSystemDependentName(homePath)] + fun findTestSdk(homePath: String): Sdk? = createdSdks[FileUtil.toSystemDependentName(homePath)] fun getCurrentSdk() = createdSdks.values.last() @@ -183,24 +156,40 @@ abstract class SdkTestCase : LightPlatformTestCase() { return SdkInfo(name, versionString, homePath) } - fun createTestSdk(sdkInfo: SdkInfo): TestSdk { - val sdk = TestSdk(sdkInfo.name, sdkInfo.homePath, sdkInfo.versionString) + fun createTestSdk(sdkInfo: SdkInfo): Sdk { + val sdk = ProjectJdkTable.getInstance().createSdk(sdkInfo.name, TestSdkType) + val sdkModificator = sdk.sdkModificator + sdkModificator.homePath = sdkInfo.homePath + sdkModificator.versionString = sdkInfo.versionString + + val application = ApplicationManager.getApplication() + val runnable = { sdkModificator.commitChanges() } + if (application.isDispatchThread) { + application.runWriteAction(runnable) + } else { + application.invokeAndWait { application.runWriteAction(runnable) } + } createdSdks[FileUtil.toSystemDependentName(sdkInfo.homePath)] = sdk return sdk } - fun createNextSdk(versionString: String = "11"): TestSdk { + fun createNextSdk(versionString: String = "11"): Sdk { val sdkInfo = reserveNextSdk(versionString) generateJdkStructure(sdkInfo) return createTestSdk(sdkInfo) } - fun createNextDependentSdk(): DependentTestSdk { + fun createNextDependentSdk(parentSdk: Sdk): Sdk { val name = "dependent-test-name (${createdSdkCounter++})" val versionString = "11" val homePath = FileUtil.getTempDirectory() + "/jdk-$name" - val parentSdk = createNextSdk() - val sdk = DependentTestSdk(name, homePath, versionString, parentSdk) + + val sdk = ProjectJdkTable.getInstance().createSdk(name, DependentTestSdkType) + val sdkModificator = sdk.sdkModificator + sdkModificator.homePath = homePath + sdkModificator.versionString = versionString + sdkModificator.sdkAdditionalData = DependentTestSdkAdditionalData(parentSdk.name) + ApplicationManager.getApplication().runWriteAction { sdkModificator.commitChanges() } createdSdks[homePath] = sdk return sdk } @@ -233,7 +222,37 @@ abstract class SdkTestCase : LightPlatformTestCase() { } companion object { - fun assertSdk(expected: TestSdk?, actual: Sdk?, isAssertSdkName: Boolean = true) { + + inline fun assertUnexpectedSdksRegistration(action: () -> R): R { + return assertNewlyRegisteredSdks({ null }, action = action) + } + + inline fun assertNewlyRegisteredSdks(getExpectedNewSdk: () -> Sdk?, isAssertSdkName: Boolean = true, action: () -> R): R { + val projectSdkTable = ProjectJdkTable.getInstance() + val beforeSdks = projectSdkTable.allJdks.toSet() + + val result = runCatching(action) + + val afterSdks = projectSdkTable.allJdks.toSet() + val newSdks = afterSdks - beforeSdks + removeSdks(*newSdks.toTypedArray()) + + result.onSuccess { + val expectedNewSdk = getExpectedNewSdk() + if (expectedNewSdk != null) { + assertTrue("Expected registration of $expectedNewSdk but found $newSdks", newSdks.size == 1) + val newSdk = newSdks.single() + assertSdk(expectedNewSdk, newSdk, isAssertSdkName) + } + else { + assertTrue("Unexpected sdk registration $newSdks", newSdks.isEmpty()) + } + } + + return result.getOrThrow() + } + + fun assertSdk(expected: Sdk?, actual: Sdk?, isAssertSdkName: Boolean = true) { if (expected != null && actual != null) { if (isAssertSdkName) { assertEquals(expected.name, actual.name) @@ -246,30 +265,53 @@ abstract class SdkTestCase : LightPlatformTestCase() { } } - fun registerSdk(sdk: TestSdk, parentDisposable: Disposable) { - invokeAndWaitIfNeeded { - runWriteAction { - val jdkTable = ProjectJdkTable.getInstance() - jdkTable.addJdk(sdk, parentDisposable) - } + fun registerSdk(sdk: Sdk, parentDisposable: Disposable) { + WriteAction.runAndWait { + val jdkTable = ProjectJdkTable.getInstance() + jdkTable.addJdk(sdk, parentDisposable) } } - fun registerSdks(vararg sdks: TestSdk, parentDisposable: Disposable) { + fun registerSdks(vararg sdks: Sdk, parentDisposable: Disposable) { sdks.forEach { registerSdk(it, parentDisposable) } } fun removeSdk(sdk: Sdk) { - invokeAndWaitIfNeeded { - runWriteAction { - val jdkTable = ProjectJdkTable.getInstance() - jdkTable.removeJdk(sdk) - } + WriteAction.runAndWait { + val jdkTable = ProjectJdkTable.getInstance() + jdkTable.removeJdk(sdk) } } fun removeSdks(vararg sdks: Sdk) { sdks.forEach(::removeSdk) } + + fun setProjectSdk(project: Project, sdk: Sdk?, parentDisposable: Disposable) { + val rootManager = ProjectRootManager.getInstance(project) + val projectSdk = rootManager.projectSdk + WriteAction.runAndWait { + rootManager.projectSdk = sdk + } + Disposer.register(parentDisposable, Disposable { + WriteAction.runAndWait { + rootManager.projectSdk = projectSdk + } + }) + } + + inline fun withProjectSdk(project: Project, sdk: Sdk, action: () -> R): R { + return Disposer.newDisposable().use { disposable -> + setProjectSdk(project, sdk, parentDisposable = disposable) + action() + } + } + + inline fun withRegisteredSdks(vararg sdks: Sdk, action: () -> R): R { + return Disposer.newDisposable().use { disposable -> + registerSdks(*sdks, parentDisposable = disposable) + action() + } + } } } \ No newline at end of file diff --git a/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/JdomAssert.kt b/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/JdomAssert.kt index 066f09874..cee24f9c1 100644 --- a/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/JdomAssert.kt +++ b/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/JdomAssert.kt @@ -1,17 +1,17 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.testFramework.assertions import com.intellij.configurationStore.deserialize import com.intellij.configurationStore.serialize import com.intellij.openapi.util.JDOMUtil import com.intellij.openapi.util.text.StringUtilRt -import com.intellij.rt.execution.junit.FileComparisonFailure +import com.intellij.platform.testFramework.core.FileComparisonFailedError import org.assertj.core.api.AbstractAssert import org.assertj.core.internal.Objects import org.intellij.lang.annotations.Language import org.jdom.Element +import java.nio.file.Files import java.nio.file.Path -import kotlin.io.path.readText class JdomAssert(actual: Element?) : AbstractAssert(actual, JdomAssert::class.java) { fun isEmpty(): JdomAssert { @@ -29,7 +29,7 @@ class JdomAssert(actual: Element?) : AbstractAssert(actual val expected = JDOMUtil.load(file) if (!JDOMUtil.areElementsEqual(actual, expected)) { - throw FileComparisonFailure(null, StringUtilRt.convertLineSeparators(file.readText()), JDOMUtil.writeElement(actual!!), file.toString()) + throw FileComparisonFailedError(null, StringUtilRt.convertLineSeparators(Files.readString(file)), JDOMUtil.writeElement(actual!!), file.toString()) } return this } diff --git a/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/snapshot.kt b/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/snapshot.kt index 715fb957d..51d4c9b8f 100644 --- a/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/snapshot.kt +++ b/intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/snapshot.kt @@ -5,7 +5,7 @@ import com.intellij.concurrency.ConcurrentCollectionFactory import com.intellij.openapi.util.SystemInfo import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.util.text.StringUtilRt -import com.intellij.rt.execution.junit.FileComparisonFailure +import com.intellij.platform.testFramework.core.FileComparisonFailedError import com.intellij.testFramework.UsefulTestCase import com.intellij.util.io.readChars import com.intellij.util.io.write @@ -62,7 +62,7 @@ internal fun loadSnapshotContent(snapshotFile: Path, convertLineSeparators: Bool return content } -@Throws(FileComparisonFailure::class) +@Throws(FileComparisonFailedError::class) fun compareFileContent(actual: Any, snapshotFile: Path, updateIfMismatch: Boolean = isUpdateSnapshotIfMismatch(), writeIfNotFound: Boolean = true) { val actualContent = if (actual is CharSequence) getNormalizedActualContent(actual) else dumpData(actual).trimEnd() @@ -95,7 +95,7 @@ fun compareFileContent(actual: Any, snapshotFile: Path, updateIfMismatch: Boolea "Expected: '${expected.contextAround(firstMismatch, 10)}'\n" + "Actual : '${actualContent.contextAround(firstMismatch, 10)}'\n" + "Inspect your code changes or run with `-Dtest.update.snapshots` to update" - throw FileComparisonFailure(message, expected.toString(), actualContent.toString(), snapshotFile.toString()) + throw FileComparisonFailedError(message, expected.toString(), actualContent.toString(), snapshotFile.toString()) } } diff --git a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java index 35b92f192..d5e8b6d74 100644 --- a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java +++ b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 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.compiler.CompilerTestUtil; @@ -6,6 +6,8 @@ import com.intellij.execution.RunManagerEx; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.wsl.WSLDistribution; +import com.intellij.gradle.toolingExtension.util.GradleVersionUtil; +import com.intellij.openapi.Disposable; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.externalSystem.importing.ImportSpec; @@ -24,6 +26,7 @@ import com.intellij.openapi.ui.TestDialog; import com.intellij.openapi.ui.TestDialogManager; import com.intellij.openapi.util.Couple; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; @@ -36,34 +39,32 @@ import com.intellij.testFramework.IdeaTestUtil; import com.intellij.testFramework.RunAll; import com.intellij.testFramework.UsefulTestCase; -import com.intellij.util.PathUtil; import com.intellij.util.SmartList; -import com.intellij.util.containers.ContainerUtil; import com.intellij.util.lang.JavaVersion; import org.gradle.StartParameter; -import org.gradle.initialization.BuildLayoutParameters; import org.gradle.util.GradleVersion; -import org.gradle.wrapper.GradleWrapperMain; import org.gradle.wrapper.PathAssembler; import org.gradle.wrapper.WrapperConfiguration; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.GradleBuildScriptBuilderUtil; import org.jetbrains.plugins.gradle.frameworkSupport.settingsScript.GradleSettingScriptBuilder; import org.jetbrains.plugins.gradle.frameworkSupport.settingsScript.GroovyDslGradleSettingScriptBuilder; import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix; import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType; import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration; +import org.jetbrains.plugins.gradle.service.execution.GradleUserHomeUtil; +import org.jetbrains.plugins.gradle.service.project.wizard.util.GradleWrapperUtil; import org.jetbrains.plugins.gradle.settings.DistributionType; import org.jetbrains.plugins.gradle.settings.GradleProjectSettings; import org.jetbrains.plugins.gradle.settings.GradleSettings; import org.jetbrains.plugins.gradle.settings.GradleSystemSettings; -import org.jetbrains.plugins.gradle.testFramework.fixtures.impl.graldeJvm.GradleJvmResolver; +import org.jetbrains.plugins.gradle.tooling.GradleJvmResolver; +import org.jetbrains.plugins.gradle.tooling.JavaVersionRestriction; +import org.jetbrains.plugins.gradle.tooling.TargetJavaVersionWatcher; import org.jetbrains.plugins.gradle.tooling.VersionMatcherRule; import org.jetbrains.plugins.gradle.util.GradleConstants; import org.jetbrains.plugins.gradle.util.GradleUtil; -import org.junit.Assume; import org.junit.Rule; import org.junit.rules.TestName; import org.junit.runner.RunWith; @@ -71,19 +72,17 @@ import java.io.File; import java.io.IOException; -import java.io.StringWriter; import java.io.UncheckedIOException; -import java.net.URI; -import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; import java.util.function.Consumer; import java.util.zip.ZipException; import java.util.zip.ZipFile; -import static org.jetbrains.plugins.gradle.tooling.VersionMatcherRule.SUPPORTED_GRADLE_VERSIONS; -import static org.jetbrains.plugins.gradle.tooling.builder.AbstractModelBuilderTest.DistributionLocator; import static org.junit.Assume.assumeThat; @RunWith(Parameterized.class) @@ -95,6 +94,8 @@ public abstract class GradleImportingTestCase extends JavaExternalSystemImportin @Rule public TestName name = new TestName(); public VersionMatcherRule versionMatcherRule = asOuterRule(new VersionMatcherRule()); + public TargetJavaVersionWatcher myTargetJavaVersionWatcher = asOuterRule(new TargetJavaVersionWatcher()); + @Parameterized.Parameter public @NotNull String gradleVersion; private GradleProjectSettings myProjectSettings; @@ -107,8 +108,10 @@ public abstract class GradleImportingTestCase extends JavaExternalSystemImportin private final StringBuilder deprecationTextBuilder = new StringBuilder(); private int deprecationTextLineCount = 0; + private @Nullable Disposable myTestDisposable = null; + @Override - public void setUp() throws Exception { + protected void setUp() throws Exception { assumeThat(gradleVersion, versionMatcherRule.getMatcher()); myProjectSettings = new GradleProjectSettings().withQualifiedModuleNames(); @@ -117,11 +120,24 @@ public void setUp() throws Exception { WriteAction.runAndWait(this::configureJdkTable); System.setProperty(ExternalSystemExecutionSettings.REMOTE_PROCESS_IDLE_TTL_IN_MS_KEY, String.valueOf(GRADLE_DAEMON_TTL_MS)); - ExtensionTestUtil.maskExtensions(UnknownSdkResolver.EP_NAME, List.of(TestUnknownSdkResolver.INSTANCE), getTestRootDisposable()); + ExtensionTestUtil.maskExtensions(UnknownSdkResolver.EP_NAME, List.of(TestUnknownSdkResolver.INSTANCE), getTestDisposable()); setRegistryPropertyForTest("unknown.sdk.auto", "false"); TestUnknownSdkResolver.INSTANCE.setUnknownSdkFixMode(TestUnknownSdkResolver.TestUnknownSdkFixMode.REAL_LOCAL_FIX); cleanScriptsCacheIfNeeded(); + + installGradleJvmConfigurator(); + } + + protected void installGradleJvmConfigurator() { + ExternalSystemApiUtil.subscribe(myProject, GradleConstants.SYSTEM_ID, new ExternalSystemSettingsListener() { + @Override + public void onProjectsLinked(@NotNull Collection settings) { + for (var projectSettings : settings) { + projectSettings.setGradleJvm(GRADLE_JDK_NAME); + } + } + }, getTestDisposable()); } protected void configureJdkTable() { @@ -163,7 +179,7 @@ protected void setUpInWriteAction() throws Exception { protected Path getGradleUserHome() { String serviceDirectory = GradleSettings.getInstance(myProject).getServiceDirectoryPath(); - return serviceDirectory != null ? Path.of(serviceDirectory) : new BuildLayoutParameters().getGradleUserHomeDir().toPath(); + return serviceDirectory != null ? Path.of(serviceDirectory) : GradleUserHomeUtil.gradleUserHomeDir().toPath(); } /** @@ -221,10 +237,6 @@ protected GradleVersion getCurrentGradleBaseVersion() { } protected void assumeTestJavaRuntime(@NotNull JavaVersion javaRuntimeVersion) { - int javaVer = javaRuntimeVersion.feature; - GradleVersion gradleBaseVersion = getCurrentGradleBaseVersion(); - Assume.assumeFalse("Skip integration tests running on JDK " + javaVer + "(>9) for " + gradleBaseVersion + "(<3.0)", - javaVer > 9 && gradleBaseVersion.compareTo(GradleVersion.version("3.0")) < 0); } @NotNull @@ -246,16 +258,22 @@ private static String requireWslJdkHome(@NotNull WSLDistribution distribution) { } public static @NotNull String requireJdkHome(@NotNull GradleVersion gradleVersion) { - if (GradleJvmSupportMatrix.isSupported(gradleVersion, JavaVersion.current())) { + return requireJdkHome(gradleVersion, JavaVersionRestriction.NO); + } + + public static @NotNull String requireJdkHome(@NotNull GradleVersion gradleVersion, + @NotNull JavaVersionRestriction javaVersionRestriction) { + if (GradleJvmSupportMatrix.isSupported(gradleVersion, JavaVersion.current()) && + !javaVersionRestriction.isRestricted(gradleVersion, JavaVersion.current())) { return IdeaTestUtil.requireRealJdkHome(); } // fix exception of FJP at JavaHomeFinder.suggestHomePaths => ... => EnvironmentUtil.getEnvironmentMap => CompletableFuture. IdeaForkJoinWorkerThreadFactory.setupForkJoinCommonPool(true); - return GradleJvmResolver.resolveGradleJvmHomePath(gradleVersion); + return GradleJvmResolver.resolveGradleJvmHomePath(gradleVersion, javaVersionRestriction); } public String findJdkPath() { - return requireJdkHome(getCurrentGradleVersion()); + return requireJdkHome(getCurrentGradleVersion(), myTargetJavaVersionWatcher.getRestriction()); } protected void collectAllowedRoots(final List roots, PathAssembler.LocalDistribution distribution) { @@ -264,10 +282,17 @@ protected void collectAllowedRoots(final List roots, PathAssembler.Local @Override public void tearDown() throws Exception { if (myJdkHome == null) { - //super.setUp() wasn't called + //super.setUpInWriteAction() wasn't called + + RunAll.runAll( + () -> Disposer.dispose(getTestDisposable()), + () -> super.tearDown() + ); + return; } - new RunAll( + + RunAll.runAll( () -> { WriteAction.runAndWait(() -> { Arrays.stream(ProjectJdkTable.getInstance().getAllJdks()).forEach(ProjectJdkTable.getInstance()::removeJdk); @@ -283,12 +308,20 @@ public void tearDown() throws Exception { }, () -> { deprecationError.set(null); - if (isGradleNewerOrSameAs("7.0")) { + if (isGradleAtLeast("7.0")) { GradleSystemSettings.getInstance().setGradleVmOptions(""); } }, - super::tearDown - ).run(); + () -> Disposer.dispose(getTestDisposable()), + () -> super.tearDown() + ); + } + + private @NotNull Disposable getTestDisposable() { + if (myTestDisposable == null) { + myTestDisposable = Disposer.newDisposable(); + } + return myTestDisposable; } @Override @@ -297,7 +330,7 @@ protected void collectAllowedRoots(final List roots) { roots.add(myJdkHome); roots.addAll(collectRootsInside(myJdkHome)); roots.add(PathManager.getConfigPath()); - String gradleHomeEnv = System.getenv("GRADLE_USER_HOME"); + String gradleHomeEnv = Environment.getVariable("GRADLE_USER_HOME"); if (gradleHomeEnv != null) roots.add(gradleHomeEnv); String javaHome = Environment.getVariable("JAVA_HOME"); if (javaHome != null) roots.add(javaHome); @@ -307,19 +340,7 @@ protected void collectAllowedRoots(final List roots) { @Parameterized.Parameters(name = "{index}: with Gradle-{0}") public static Iterable data() { - String gradleVersionsString = System.getProperty("gradle.versions.to.run"); - if (gradleVersionsString != null && !gradleVersionsString.isEmpty()) { - if (gradleVersionsString.startsWith("LAST:")) { - int last = Integer.parseInt(gradleVersionsString.substring("LAST:".length())); - List all = Arrays.asList(SUPPORTED_GRADLE_VERSIONS); - return all.subList(all.size() - last, all.size()); - } - else { - String[] gradleVersionsToRun = gradleVersionsString.split(","); - return Arrays.asList(gradleVersionsToRun); - } - } - return Arrays.asList(SUPPORTED_GRADLE_VERSIONS); + return VersionMatcherRule.getSupportedGradleVersions(); } @Override @@ -337,24 +358,6 @@ protected void importProjectUsingSingeModulePerGradleProject() { importProject(); } - protected void importProject() { - importProject((Boolean)null); - } - - @Override - protected void importProject(Boolean skipIndexing) { - ExternalSystemApiUtil.subscribe(myProject, GradleConstants.SYSTEM_ID, new ExternalSystemSettingsListener<>() { - @Override - public void onProjectsLinked(@NotNull Collection settings) { - final Object item = ContainerUtil.getFirstItem(settings); - if (item instanceof GradleProjectSettings) { - ((GradleProjectSettings)item).setGradleJvm(GRADLE_JDK_NAME); - } - } - }); - super.importProject(skipIndexing); - } - protected void importProjectUsingSingeModulePerGradleProject(@NonNls String config, Boolean skipIndexing) throws IOException { getCurrentExternalProjectSettings().setResolveModulePerSourceSet(false); @@ -366,11 +369,11 @@ protected void importProjectUsingSingeModulePerGradleProject(@NonNls String conf } @Override - protected void importProject(@NonNls String config, Boolean skipIndexing) throws IOException { + protected void importProject(@NotNull String config, @Nullable Boolean skipIndexing) throws IOException { if (UsefulTestCase.IS_UNDER_TEAMCITY) { config = injectRepo(config); } - if (isGradleNewerOrSameAs("7.0")) { + if (isGradleAtLeast("7.0") && !isWarningsAllowed()) { String failOnWarning = "-Dorg.gradle.warning.mode=fail"; String originalVmOptions = GradleSystemSettings.getInstance().getGradleVmOptions(); if (StringUtil.isEmpty(originalVmOptions)) { @@ -391,8 +394,9 @@ protected void handleDeprecationError(Couple errorInfo) { @Override protected void printOutput(@NotNull String text, boolean stdOut) { - if (text.contains("This is scheduled to be removed in Gradle")) { - deprecationTextLineCount = 15; + if (text.contains("This is scheduled to be removed in Gradle") + || text.contains("Deprecated Gradle features were used in this build")) { + deprecationTextLineCount = 30; } if (deprecationTextLineCount > 0) { deprecationTextBuilder.append(text); @@ -485,29 +489,25 @@ protected VirtualFile createSettingsFile(@NonNls String content) throws IOExcept return createProjectSubFile("settings.gradle", content); } - private PathAssembler.LocalDistribution configureWrapper() throws IOException, URISyntaxException { - - final URI distributionUri = new DistributionLocator().getDistributionFor(GradleVersion.version(gradleVersion)); - - myProjectSettings.setDistributionType(DistributionType.DEFAULT_WRAPPED); - final VirtualFile wrapperJarFrom = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(wrapperJar()); - assert wrapperJarFrom != null; + /** + * Produces settings content and creates necessary directories. + * @param projects list of sub-project to create + * @return a block of `include 'project-name'` lines for settings.gradle + */ + protected String including(@NonNls String... projects) { + return including(myProjectRoot, projects); + } - final VirtualFile wrapperJarFromTo = createProjectSubFile("gradle/wrapper/gradle-wrapper.jar"); - WriteAction.runAndWait(() -> wrapperJarFromTo.setBinaryContent(wrapperJarFrom.contentsToByteArray())); + protected String including(VirtualFile root, @NonNls String... projects) { + return new TestGradleSettingsScriptHelper(root.toNioPath(), projects).build(); + } - Properties properties = new Properties(); - properties.setProperty("distributionBase", "GRADLE_USER_HOME"); - properties.setProperty("distributionPath", "wrapper/dists"); - properties.setProperty("zipStoreBase", "GRADLE_USER_HOME"); - properties.setProperty("zipStorePath", "wrapper/dists"); - properties.setProperty("distributionUrl", distributionUri.toString()); + private PathAssembler.LocalDistribution configureWrapper() { - StringWriter writer = new StringWriter(); - properties.store(writer, null); + myProjectSettings.setDistributionType(DistributionType.DEFAULT_WRAPPED); - createProjectSubFile("gradle/wrapper/gradle-wrapper.properties", writer.toString()); + WriteAction.runAndWait(() -> GradleWrapperUtil.generateGradleWrapper(myProjectRoot.toNioPath(), getCurrentGradleVersion())); String projectPath = getProjectPath(); WrapperConfiguration wrapperConfiguration = GradleUtil.getWrapperConfiguration(projectPath); @@ -533,62 +533,30 @@ private PathAssembler.LocalDistribution configureWrapper() throws IOException, U return localDistribution; } - @NotNull - private static File wrapperJar() { - return new File(PathUtil.getJarPathForClass(GradleWrapperMain.class)); - } - protected void assertMergedModuleCompileLibDepScope(String moduleName, String depName) { - if (isGradleOlderThan("3.4") || isGradleNewerThan("4.5")) { - assertModuleLibDepScope(moduleName, depName, DependencyScope.COMPILE); - } - else { - assertModuleLibDepScope(moduleName, depName, DependencyScope.PROVIDED, DependencyScope.TEST, DependencyScope.RUNTIME); - } + assertModuleLibDepScope(moduleName, depName, DependencyScope.COMPILE); } protected void assertMergedModuleCompileModuleDepScope(String moduleName, String depName) { - if (isGradleOlderThan("3.4") || isGradleNewerThan("4.5")) { - assertModuleModuleDepScope(moduleName, depName, DependencyScope.COMPILE); - } - else { - assertModuleModuleDepScope(moduleName, depName, DependencyScope.PROVIDED, DependencyScope.TEST, DependencyScope.RUNTIME); - } - } - - protected boolean isJavaLibraryPluginSupported() { - return GradleBuildScriptBuilderUtil.isJavaLibraryPluginSupported(getCurrentGradleVersion()); + assertModuleModuleDepScope(moduleName, depName, DependencyScope.COMPILE); } protected boolean isGradleOlderThan(@NotNull String ver) { - return getCurrentGradleBaseVersion().compareTo(GradleVersion.version(ver)) < 0; - } - - protected boolean isGradleOlderOrSameAs(@NotNull String ver) { - return getCurrentGradleBaseVersion().compareTo(GradleVersion.version(ver)) <= 0; - } - - protected boolean isGradleNewerOrSameAs(@NotNull String ver) { - return getCurrentGradleBaseVersion().compareTo(GradleVersion.version(ver)) >= 0; + return GradleVersionUtil.isGradleOlderThan(getCurrentGradleBaseVersion(), ver); } - protected boolean isGradleNewerThan(@NotNull String ver) { - return getCurrentGradleBaseVersion().compareTo(GradleVersion.version(ver)) > 0; - } - - protected boolean isNewDependencyResolutionApplicable() { - return isGradleNewerOrSameAs("4.5") && getCurrentExternalProjectSettings().isResolveModulePerSourceSet(); - } - - protected String getExtraPropertiesExtensionFqn() { - return isGradleOlderThan("5.2") ? "org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension" - : "org.gradle.internal.extensibility.DefaultExtraPropertiesExtension"; + protected boolean isGradleAtLeast(@NotNull String ver) { + return GradleVersionUtil.isGradleAtLeast(getCurrentGradleBaseVersion(), ver); } protected void enableGradleDebugWithSuspend() { GradleSystemSettings.getInstance().setGradleVmOptions("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"); } + protected Boolean isWarningsAllowed() { + return false; + } + protected void overrideGradleUserHome(@NotNull String relativeUserHomePath) throws IOException { String gradleUserHome = "%s/%s".formatted(myTestDir.getPath(), relativeUserHomePath); String gradleCachedFolderName = "gradle-%s-bin".formatted(gradleVersion); diff --git a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleBuildScriptBuilder.kt b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleBuildScriptBuilder.kt index 60d66dbc5..93e40b21e 100644 --- a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleBuildScriptBuilder.kt +++ b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleBuildScriptBuilder.kt @@ -2,13 +2,11 @@ package org.jetbrains.plugins.gradle.importing import com.intellij.openapi.util.Version -import com.intellij.testFramework.UsefulTestCase import org.gradle.util.GradleVersion -import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.GroovyDslGradleBuildScriptBuilder -import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.isJavaLibraryPluginSupported import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.isTaskConfigurationAvoidanceSupported import org.jetbrains.plugins.gradle.frameworkSupport.script.ScriptElement.Statement.Expression import org.jetbrains.plugins.gradle.frameworkSupport.script.ScriptTreeBuilder +import org.jetbrains.plugins.gradle.testFramework.util.buildscript.TestGroovyDslGradleBuildScriptBuilder import java.io.File import java.util.function.Consumer import kotlin.apply as applyKt @@ -16,7 +14,7 @@ import kotlin.apply as applyKt @Suppress("MemberVisibilityCanBePrivate", "unused") open class TestGradleBuildScriptBuilder( gradleVersion: GradleVersion -) : GroovyDslGradleBuildScriptBuilder(gradleVersion) { +) : TestGroovyDslGradleBuildScriptBuilder(gradleVersion) { override fun apply(action: TestGradleBuildScriptBuilder.() -> Unit) = applyKt(action) @@ -108,26 +106,6 @@ open class TestGradleBuildScriptBuilder( applyPlugin("org.jetbrains.gradle.plugin.idea-ext") } - override fun withBuildScriptMavenCentral() = - withBuildScriptRepository { - mavenCentralRepository() - } - - override fun withMavenCentral() = - withRepository { - mavenCentralRepository() - } - - private fun ScriptTreeBuilder.mavenCentralRepository() { - if (UsefulTestCase.IS_UNDER_TEAMCITY) { - mavenRepository("https://repo.labs.intellij.net/repo1", false) - } - else { - // IntelliJ internal maven repo is not available in local environment - call("mavenCentral") - } - } - override fun generate(): String { if (this !is TestGradleBuildScriptChildBuilder) { // Needed to identify how was created test script @@ -142,10 +120,7 @@ open class TestGradleBuildScriptBuilder( applyPlugin("java") override fun withJavaLibraryPlugin() = - if (isJavaLibraryPluginSupported(gradleVersion)) - applyPlugin("java-library") - else - applyPlugin("java") + applyPlugin("java-library") override fun withIdeaPlugin() = applyPlugin("idea") @@ -159,17 +134,5 @@ open class TestGradleBuildScriptBuilder( @JvmStatic fun extPluginVersionIsAtLeast(version: String) = Version.parseVersion(IDEA_EXT_PLUGIN_VERSION)!! >= Version.parseVersion(version)!! - - fun ScriptTreeBuilder.mavenRepository(url: String, useOldStyleMetadata: Boolean) { - call("maven") { - call("url", url) - if (useOldStyleMetadata) { - call("metadataSources") { - call("mavenPom") - call("artifact") - } - } - } - } } } \ No newline at end of file diff --git a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleSettingsScriptHelper.kt b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleSettingsScriptHelper.kt new file mode 100644 index 000000000..1cdb29ec9 --- /dev/null +++ b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleSettingsScriptHelper.kt @@ -0,0 +1,15 @@ +// Copyright 2000-2024 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 org.jetbrains.annotations.NonNls +import java.nio.file.Files +import java.nio.file.Path + +class TestGradleSettingsScriptHelper(val root: Path, val subprojects: Array<@NonNls String> = arrayOf()) { + fun build(): String { + subprojects.forEach { + Files.createDirectories(root.resolve(it.replace(":", "/").trim('/'))) + } + return subprojects.joinToString(prefix = "\n", separator = "\n", postfix = "\n") { "include '$it'" } + } +} \ No newline at end of file diff --git a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/fixtures/impl/GradleJvmResolver.kt b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/fixtures/impl/GradleJvmResolver.kt deleted file mode 100644 index 69ff8447a..000000000 --- a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/fixtures/impl/GradleJvmResolver.kt +++ /dev/null @@ -1,101 +0,0 @@ -// 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.testFramework.fixtures.impl.graldeJvm - -import com.intellij.openapi.Disposable -import com.intellij.openapi.application.runReadAction -import com.intellij.openapi.application.runWriteActionAndWait -import com.intellij.openapi.projectRoots.JavaSdk -import com.intellij.openapi.projectRoots.ProjectJdkTable -import com.intellij.openapi.projectRoots.Sdk -import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil -import com.intellij.openapi.util.Disposer -import com.intellij.openapi.util.text.NaturalComparator -import com.intellij.testFramework.runInEdtAndGet -import com.intellij.util.lang.JavaVersion -import org.gradle.util.GradleVersion -import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix - -class GradleJvmResolver(private val gradleVersion: GradleVersion) { - - private val sdkType = JavaSdk.getInstance() - - private fun isSdkSupported(versionString: String): Boolean { - val javaVersion = JavaVersion.tryParse(versionString) ?: return false - return GradleJvmSupportMatrix.isJavaSupportedByIdea(javaVersion) - && GradleJvmSupportMatrix.isSupported(gradleVersion, javaVersion) - } - - private fun throwSdkNotFoundException(): Nothing { - val supportedJavaVersions = GradleJvmSupportMatrix.getSupportedJavaVersions(gradleVersion) - val suggestedJavaHomePaths = sdkType.suggestHomePaths().sortedWith(NaturalComparator.INSTANCE) - throw AssertionError(""" - |Cannot find JDK for $gradleVersion. - |Please, research JDK restrictions or discuss it with test author, and install JDK manually. - |Supported JDKs for current restrictions: $supportedJavaVersions - |Checked paths: [ - ${suggestedJavaHomePaths.joinToString("\n") { "| $it" }} - |] - | - """.trimMargin()) - } - - private fun resolveGradleJvmImpl(parentDisposable: Disposable): Sdk { - return findSdkInTable() - ?: findSdkHomePathOnDisk() - ?.let { createAndAddSdk(it, parentDisposable) } - ?: throwSdkNotFoundException() - } - - private fun resolveGradleJvmHomePathImpl(): String { - return findSdkInTable() - ?.homePath - ?: findSdkHomePathOnDisk() - ?: throwSdkNotFoundException() - } - - private fun findSdkInTable(): Sdk? { - val table = ProjectJdkTable.getInstance() - return runReadAction { table.allJdks }.asSequence() - .filter { it.versionString != null && isSdkSupported(it.versionString!!) } - .sortedBy { it.versionString } - .firstOrNull() - } - - private fun findSdkHomePathOnDisk(): String? { - return sdkType.suggestHomePaths().asSequence() - .filter { sdkType.isValidSdkHome(it) } - .map { sdkType.getVersionString(it) to it } - .filter { it.first != null && isSdkSupported(it.first!!) } - .sortedBy { it.first } - .map { it.second } - .firstOrNull() - } - - private fun createAndAddSdk(sdkHome: String, parentDisposable: Disposable): Sdk? { - val table = ProjectJdkTable.getInstance() - val sdk = runInEdtAndGet { - SdkConfigurationUtil.createAndAddSDK(sdkHome, sdkType) - } - if (sdk != null) { - Disposer.register(parentDisposable, Disposable { - runWriteActionAndWait { - table.removeJdk(sdk) - } - }) - } - return sdk - } - - companion object { - - @JvmStatic - fun resolveGradleJvm(gradleVersion: GradleVersion, parentDisposable: Disposable): Sdk { - return GradleJvmResolver(gradleVersion).resolveGradleJvmImpl(parentDisposable) - } - - @JvmStatic - fun resolveGradleJvmHomePath(gradleVersion: GradleVersion): String { - return GradleJvmResolver(gradleVersion).resolveGradleJvmHomePathImpl() - } - } -} \ No newline at end of file diff --git a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGradleBuildScriptBuilder.kt b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGradleBuildScriptBuilder.kt new file mode 100644 index 000000000..2d7df41f3 --- /dev/null +++ b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGradleBuildScriptBuilder.kt @@ -0,0 +1,19 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.testFramework.util.buildscript + +import org.gradle.util.GradleVersion +import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.GradleBuildScriptBuilder + +interface TestGradleBuildScriptBuilder> : GradleBuildScriptBuilder { + + companion object { + + @JvmStatic + fun create(gradleVersion: GradleVersion, useKotlinDsl: Boolean): TestGradleBuildScriptBuilder<*> { + return when (useKotlinDsl) { + true -> TestKotlinDslGradleBuildScriptBuilder.Impl(gradleVersion) + else -> TestGroovyDslGradleBuildScriptBuilder.Impl(gradleVersion) + } + } + } +} \ No newline at end of file diff --git a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGroovyDslGradleBuildScriptBuilder.kt b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGroovyDslGradleBuildScriptBuilder.kt new file mode 100644 index 000000000..e7b947290 --- /dev/null +++ b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGroovyDslGradleBuildScriptBuilder.kt @@ -0,0 +1,33 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.testFramework.util.buildscript + +import com.intellij.testFramework.UsefulTestCase +import org.gradle.util.GradleVersion +import org.jetbrains.annotations.ApiStatus +import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.GroovyDslGradleBuildScriptBuilder +import org.jetbrains.plugins.gradle.frameworkSupport.script.ScriptTreeBuilder +import kotlin.apply as applyKt + +@ApiStatus.Internal +@ApiStatus.NonExtendable +abstract class TestGroovyDslGradleBuildScriptBuilder>( + gradleVersion: GradleVersion +) : GroovyDslGradleBuildScriptBuilder(gradleVersion), + TestGradleBuildScriptBuilder { + + override fun ScriptTreeBuilder.mavenCentral(): ScriptTreeBuilder = applyKt { + when { + UsefulTestCase.IS_UNDER_TEAMCITY -> { + mavenRepository("https://repo.labs.intellij.net/repo1") + } + else -> { + // IntelliJ internal maven repo is not available in local environment + call("mavenCentral") + } + } + } + + internal class Impl(gradleVersion: GradleVersion) : TestGroovyDslGradleBuildScriptBuilder(gradleVersion) { + override fun apply(action: Impl.() -> Unit) = applyKt(action) + } +} \ No newline at end of file diff --git a/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestKotlinDslGradleBuildScriptBuilder.kt b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestKotlinDslGradleBuildScriptBuilder.kt new file mode 100644 index 000000000..0b8948360 --- /dev/null +++ b/intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestKotlinDslGradleBuildScriptBuilder.kt @@ -0,0 +1,33 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.testFramework.util.buildscript + +import com.intellij.testFramework.UsefulTestCase +import org.gradle.util.GradleVersion +import org.jetbrains.annotations.ApiStatus +import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.KotlinDslGradleBuildScriptBuilder +import org.jetbrains.plugins.gradle.frameworkSupport.script.ScriptTreeBuilder +import kotlin.apply as applyKt + +@ApiStatus.Internal +@ApiStatus.NonExtendable +abstract class TestKotlinDslGradleBuildScriptBuilder>( + gradleVersion: GradleVersion +) : KotlinDslGradleBuildScriptBuilder(gradleVersion), + TestGradleBuildScriptBuilder { + + override fun ScriptTreeBuilder.mavenCentral(): ScriptTreeBuilder = applyKt { + when { + UsefulTestCase.IS_UNDER_TEAMCITY -> { + mavenRepository("https://repo.labs.intellij.net/repo1") + } + else -> { + // IntelliJ internal maven repo is not available in local environment + call("mavenCentral") + } + } + } + + internal class Impl(gradleVersion: GradleVersion) : TestKotlinDslGradleBuildScriptBuilder(gradleVersion) { + override fun apply(action: Impl.() -> Unit) = applyKt(action) + } +} \ No newline at end of file diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/GradleJvmResolver.kt b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/GradleJvmResolver.kt new file mode 100644 index 000000000..e947f383a --- /dev/null +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/GradleJvmResolver.kt @@ -0,0 +1,143 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.tooling + +import com.intellij.gradle.toolingExtension.util.GradleVersionUtil.isGradleAtLeast +import com.intellij.gradle.toolingExtension.util.GradleVersionUtil.isGradleOlderThan +import com.intellij.openapi.Disposable +import com.intellij.openapi.application.ReadAction +import com.intellij.openapi.application.WriteAction +import com.intellij.openapi.projectRoots.JavaSdk +import com.intellij.openapi.projectRoots.ProjectJdkTable +import com.intellij.openapi.projectRoots.Sdk +import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil +import com.intellij.openapi.util.Disposer +import com.intellij.openapi.util.ThrowableComputable +import com.intellij.openapi.util.text.NaturalComparator +import com.intellij.util.lang.JavaVersion +import org.gradle.util.GradleVersion +import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix + +class GradleJvmResolver( + private val gradleVersion: GradleVersion, + private val javaVersionRestriction: JavaVersionRestriction +) { + + private val sdkType = JavaSdk.getInstance() + + private fun isSdkSupported(versionString: String): Boolean { + val javaVersion = JavaVersion.tryParse(versionString) ?: return false + return isSdkSupported(javaVersion) + } + + private fun isSdkSupported(javaVersion: JavaVersion): Boolean { + return GradleJvmSupportMatrix.isJavaSupportedByIdea(javaVersion) + && GradleJvmSupportMatrix.isSupported(gradleVersion, javaVersion) + && isJavaSupportedByGradleToolingApi(gradleVersion, javaVersion) + && !javaVersionRestriction.isRestricted(gradleVersion, javaVersion) + } + + private fun throwSdkNotFoundException(): Nothing { + val supportedJavaVersions = GradleJvmSupportMatrix.getSupportedJavaVersions(gradleVersion) + val restrictedJavaVersions = supportedJavaVersions.filter { isSdkSupported(it) } + val suggestedJavaHomePaths = sdkType.suggestHomePaths().sortedWith(NaturalComparator.INSTANCE) + throw AssertionError(""" + |Cannot find JDK for $gradleVersion. + |Please, research JDK restrictions or discuss it with test author, and install JDK manually. + |Supported JDKs for current Gradle version: $supportedJavaVersions + |Supported JDKs for current restrictions: $restrictedJavaVersions + |Checked paths: [ + ${suggestedJavaHomePaths.joinToString("\n") { "| $it" }} + |] + | + """.trimMargin()) + } + + private fun resolveGradleJvmImpl(parentDisposable: Disposable): Sdk { + val sdk = findSdkInTable() + ?: findSdkHomePathOnDisk() + ?.let { createAndAddSdk(it, parentDisposable) } + ?: throwSdkNotFoundException() + println(""" + | + |Resolved Gradle JVM for the Gradle ${gradleVersion.version} + |Gradle JVM name: ${sdk.name} + |Gradle JVM version: ${sdk.versionString} + |Gradle JVM path: ${sdk.homePath} + | + """.trimMargin()) + return sdk + } + + private fun resolveGradleJvmHomePathImpl(): String { + val homePath = findSdkInTable()?.homePath + ?: findSdkHomePathOnDisk() + ?: throwSdkNotFoundException() + println(""" + | + |Resolved Gradle JVM for the Gradle ${gradleVersion.version} + |Gradle JVM version: ${sdkType.getVersionString(homePath)} + |Gradle JVM path: $homePath + | + """.trimMargin()) + return homePath + } + + private fun isJavaSupportedByGradleToolingApi(gradleVersion: GradleVersion, javaVersion: JavaVersion): Boolean { + // https://github.com/gradle/gradle/issues/9339 + if (isGradleAtLeast(gradleVersion, "5.6") && isGradleOlderThan(gradleVersion, "7.3")) { + if (javaVersion.feature < 11) { + return false + } + } + return true + } + + private fun findSdkInTable(): Sdk? { + val table = ProjectJdkTable.getInstance() + return ReadAction.compute(ThrowableComputable { table.allJdks }) + .asSequence() + .filter { it.versionString != null && isSdkSupported(it.versionString!!) } + .sortedBy { it.versionString } + .firstOrNull() + } + + private fun findSdkHomePathOnDisk(): String? { + return sdkType.suggestHomePaths().asSequence() + .filter { sdkType.isValidSdkHome(it) } + .map { sdkType.getVersionString(it) to it } + .filter { it.first != null && isSdkSupported(it.first!!) } + .sortedBy { it.first } + .map { it.second } + .firstOrNull() + } + + private fun createAndAddSdk(sdkHome: String, parentDisposable: Disposable): Sdk? { + val table = ProjectJdkTable.getInstance() + val sdk = WriteAction.computeAndWait(ThrowableComputable { + SdkConfigurationUtil.createAndAddSDK(sdkHome, sdkType) + }) + if (sdk != null) { + Disposer.register(parentDisposable, Disposable { + WriteAction.computeAndWait(ThrowableComputable { + table.removeJdk(sdk) + }) + }) + } + return sdk + } + + companion object { + + @JvmStatic + fun resolveGradleJvm(gradleVersion: GradleVersion, parentDisposable: Disposable, javaVersionRestriction: JavaVersionRestriction): Sdk { + return GradleJvmResolver(gradleVersion, javaVersionRestriction) + .resolveGradleJvmImpl(parentDisposable) + } + + @JvmStatic + fun resolveGradleJvmHomePath(gradleVersion: GradleVersion, javaVersionRestriction: JavaVersionRestriction): String { + return GradleJvmResolver(gradleVersion, javaVersionRestriction) + .resolveGradleJvmHomePathImpl() + } + } +} \ No newline at end of file diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/JavaVersionRestriction.kt b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/JavaVersionRestriction.kt new file mode 100644 index 000000000..4da898136 --- /dev/null +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/JavaVersionRestriction.kt @@ -0,0 +1,25 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.tooling + +import com.intellij.util.lang.JavaVersion +import org.gradle.util.GradleVersion +import org.jetbrains.plugins.gradle.tooling.util.JavaVersionMatcher.isVersionMatch + +fun interface JavaVersionRestriction { + + fun isRestricted(gradleVersion: GradleVersion, source: JavaVersion): Boolean + + companion object { + @JvmField + val NO = JavaVersionRestriction { _, _ -> false } + + /** + * @param targetVersionNotation the java version restriction in string form. + * The notation variants can be found in the [org.jetbrains.plugins.gradle.tooling.annotation.TargetJavaVersion] documentation. + */ + @JvmStatic + fun javaRestrictionOf(targetVersionNotation: String): JavaVersionRestriction { + return JavaVersionRestriction { _, source -> !isVersionMatch(source, targetVersionNotation) } + } + } +} \ No newline at end of file diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/TargetJavaVersionWatcher.java b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/TargetJavaVersionWatcher.java new file mode 100644 index 000000000..e9a09966a --- /dev/null +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/TargetJavaVersionWatcher.java @@ -0,0 +1,27 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.tooling; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.gradle.tooling.annotation.TargetJavaVersion; +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; + +public class TargetJavaVersionWatcher extends TestWatcher { + + @Nullable + private JavaVersionRestriction myRestriction; + + public @NotNull JavaVersionRestriction getRestriction() { + return myRestriction != null ? myRestriction : JavaVersionRestriction.NO; + } + + @Override + protected void starting(@NotNull Description description) { + TargetJavaVersion targetJavaVersion = description.getAnnotation(TargetJavaVersion.class); + if (targetJavaVersion == null) { + return; + } + myRestriction = JavaVersionRestriction.javaRestrictionOf(targetJavaVersion.value()); + } +} diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/VersionMatcherRule.java b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/VersionMatcherRule.java index a0453d331..6f4580a75 100644 --- a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/VersionMatcherRule.java +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/VersionMatcherRule.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.plugins.gradle.tooling; import org.gradle.util.GradleVersion; @@ -14,6 +14,7 @@ import org.junit.runner.Description; import java.util.Arrays; +import java.util.List; public class VersionMatcherRule extends TestWatcher { @@ -25,14 +26,13 @@ public class VersionMatcherRule extends TestWatcher { * - {@link GradleJvmSupportDefaultDataKt#getDEFAULT_DATA()}
*/ public static final String[] SUPPORTED_GRADLE_VERSIONS = { - "3.0", /*"3.1", "3.2", "3.3", "3.4",*/ "3.5", - "4.0", /*"4.1", "4.2", "4.3", "4.4", "4.5.1", "4.6", "4.7", "4.8", "4.9",*/ "4.10.3", + "4.5.1", /*"4.6", "4.7", "4.8", "4.9",*/ "4.10.3", "5.0", /*"5.1", "5.2", "5.3.1", "5.4.1", "5.5.1",*/ "5.6.2", - "6.0", /* "6.0.1", "6.1", "6.2", "6.3", "6.4", "6.8.3", */ "6.9", - "7.0.2", /* "7.1", "7.2", "7.4", "7.5.1", */ "7.6", - "8.0", /*"8.2", "8.3", */ "8.4" + "6.0", /* "6.0.1", "6.1", "6.2", "6.3", "6.4", "6.8.3",*/ "6.9", + "7.0.2", /* "7.1", "7.2", "7.4", "7.5.1",*/ "7.6", + "8.0", /*"8.2", "8.3", "8.4", "8.5", "8.6", "8.7",*/ "8.8" }; - public static final String BASE_GRADLE_VERSION = "8.4"; + public static final String BASE_GRADLE_VERSION = "8.8"; @Nullable private CustomMatcher myMatcher; @@ -54,4 +54,20 @@ public boolean matches(Object item) { } }; } + + public static @NotNull List getSupportedGradleVersions() { + String gradleVersionsString = System.getProperty("gradle.versions.to.run"); + if (gradleVersionsString != null && !gradleVersionsString.isEmpty()) { + if (gradleVersionsString.startsWith("LAST:")) { + int last = Integer.parseInt(gradleVersionsString.substring("LAST:".length())); + List all = Arrays.asList(SUPPORTED_GRADLE_VERSIONS); + return all.subList(all.size() - last, all.size()); + } + else { + String[] gradleVersionsToRun = gradleVersionsString.split(","); + return Arrays.asList(gradleVersionsToRun); + } + } + return Arrays.asList(SUPPORTED_GRADLE_VERSIONS); + } } diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetJavaVersion.java b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetJavaVersion.java new file mode 100644 index 000000000..ffeca5e37 --- /dev/null +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetJavaVersion.java @@ -0,0 +1,36 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.tooling.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Defines a test assumption by Java version used to run the Gradle daemon. + *

+ * Variants: + *

    + *
  • "11" -- run test with Java 11
  • + *
  • "11+" -- run test with any Java version greater than 11 (included)
  • + *
  • ">=11" -- run test with any Java version greater than 11 (included)
  • + *
  • "<11" -- run test with any Java version prior to 11 (excluded)
  • + *
  • "!11" -- run test with any Java version other than 11
  • + *
+ *

+ * Deprecated notation: + * Version comparisons '>' and '<=' aren't logical. Changes can be made only in the specific version and present in the future. + * We always can identify the version where new changes were made. + *

    + *
  • "<=11" -- run test with any Java version prior to 11 (included)
  • + *
  • ">11" -- run test with any Java version greater than 11 (excluded)
  • + *
+ */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD}) +public @interface TargetJavaVersion { + + String value(); + + String reason(); +} diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetVersions.java b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetVersions.java index 59a8c8de4..7f2308662 100644 --- a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetVersions.java +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetVersions.java @@ -26,10 +26,13 @@ * Variants: *
    *
  • "7.0" -- start test with 7.0 Gradle version
  • - *
  • "4.0 <=> 7.0" -- start tests with Gradle versions in range [4.0, 7.0]
  • *
  • "7.0+" -- start tests with Gradle versions since 7.0 (included)
  • *
  • "<7.0" -- start tests with Gradle versions until 7.0 (excluded)
  • + *
  • "<=7.0" -- start tests with Gradle versions until 7.0 (included)
  • *
  • "!7.0" -- start tests with Gradle versions except 7.0
  • + *
  • "4.0 <=> 7.0" -- start tests with Gradle versions in range [4.0, 7.0]
  • + *
  • {"4.0+", <7.0} -- start tests with Gradle versions in range [4.0, 7.0)
  • + *
  • {"4.0+", !7.0} -- start tests with Gradle versions since 4.0 (included) except 7.0
  • *
*/ @Retention(RetentionPolicy.RUNTIME) diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java index 98b80b9e1..0534d8e92 100644 --- a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java @@ -3,204 +3,90 @@ import com.amazon.ion.IonType; import com.intellij.concurrency.IdeaForkJoinWorkerThreadFactory; +import com.intellij.gradle.toolingExtension.GradleToolingExtensionClass; +import com.intellij.gradle.toolingExtension.impl.GradleToolingExtensionImplClass; +import com.intellij.gradle.toolingExtension.impl.modelAction.GradleModelFetchAction; +import com.intellij.gradle.toolingExtension.impl.modelAction.GradleModelHolderState; import com.intellij.gradle.toolingExtension.modelProvider.GradleClassBuildModelProvider; import com.intellij.gradle.toolingExtension.modelProvider.GradleClassProjectModelProvider; -import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType; -import com.intellij.openapi.util.Pair; +import com.intellij.openapi.externalSystem.model.settings.ExternalSystemExecutionSettings; import com.intellij.openapi.util.SystemInfoRt; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.util.io.StreamUtil; +import com.intellij.platform.externalSystem.rt.ExternalSystemRtClass; import com.intellij.testFramework.ApplicationRule; -import com.intellij.testFramework.IdeaTestUtil; -import com.intellij.testFramework.UsefulTestCase; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.lang.JavaVersion; import it.unimi.dsi.fastutil.objects.Object2ObjectMap; import org.codehaus.groovy.runtime.typehandling.ShortTypeHandling; import org.gradle.internal.impldep.com.google.common.collect.Multimap; -import org.gradle.tooling.BuildActionExecuter; import org.gradle.tooling.GradleConnector; import org.gradle.tooling.ProjectConnection; import org.gradle.tooling.internal.consumer.DefaultGradleConnector; -import org.gradle.tooling.model.DomainObjectSet; -import org.gradle.tooling.model.idea.IdeaModule; import org.gradle.tooling.model.idea.IdeaProject; import org.gradle.util.GradleVersion; -import org.hamcrest.CustomMatcher; import org.jetbrains.annotations.NotNull; -import org.jetbrains.plugins.gradle.frameworkSupport.buildscript.GradleBuildScriptBuilderUtil; -import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix; -import org.jetbrains.plugins.gradle.model.BuildScriptClasspathModel; -import org.jetbrains.plugins.gradle.model.ClasspathEntryModel; -import org.jetbrains.plugins.gradle.model.ProjectImportAction; -import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper; +import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider; +import org.jetbrains.plugins.gradle.service.modelAction.GradleIdeaModelHolder; import org.jetbrains.plugins.gradle.service.execution.GradleInitScriptUtil; import org.jetbrains.plugins.gradle.settings.DistributionType; import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings; +import org.jetbrains.plugins.gradle.tooling.GradleJvmResolver; +import org.jetbrains.plugins.gradle.tooling.TargetJavaVersionWatcher; import org.jetbrains.plugins.gradle.tooling.VersionMatcherRule; -import org.jetbrains.plugins.gradle.tooling.internal.init.Init; import org.jetbrains.plugins.gradle.util.GradleConstants; -import org.junit.After; -import org.junit.Before; -import org.junit.ClassRule; -import org.junit.Rule; +import org.jetbrains.plugins.gradle.util.GradleUtil; +import org.junit.*; import org.junit.rules.TestName; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URI; -import java.net.URISyntaxException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assume.assumeThat; -import static org.junit.Assume.assumeTrue; - /** * @author Vladislav.Soroka */ -@RunWith(value = Parameterized.class) +@RunWith(Parameterized.class) public abstract class AbstractModelBuilderTest { - public static final Pattern TEST_METHOD_NAME_PATTERN = Pattern.compile("(.*)\\[(\\d*: with Gradle-.*)\\]"); - - private static File ourTempDir; - - @NotNull - protected final String gradleVersion; - protected File testDir; - protected ProjectImportAction.AllModels allModels; + public static final Pattern TEST_METHOD_NAME_PATTERN = Pattern.compile("(.*)\\[(\\d*: with Gradle-.*)]"); @Rule public TestName name = new TestName(); @Rule public VersionMatcherRule versionMatcherRule = new VersionMatcherRule(); + @Rule public TargetJavaVersionWatcher myTargetJavaVersionWatcher = new TargetJavaVersionWatcher(); + @ClassRule public static final ApplicationRule ourApplicationRule = new ApplicationRule(); + protected final @NotNull GradleVersion gradleVersion; + + private static File ourTempDir; + private File testDir; + private String gradleJvmHomePath; + public AbstractModelBuilderTest(@NotNull String gradleVersion) { - this.gradleVersion = gradleVersion; + this.gradleVersion = GradleVersion.version(gradleVersion); } @Parameterized.Parameters(name = "{index}: with Gradle-{0}") public static Iterable data() { - return Arrays.asList(VersionMatcherRule.SUPPORTED_GRADLE_VERSIONS); + return VersionMatcherRule.getSupportedGradleVersions(); } - @Before - public void setUp() throws Exception { - assumeThat(gradleVersion, versionMatcherRule.getMatcher()); - assumeGradleCompatibleWithJava(gradleVersion); - - ensureTempDirCreated(); - - String methodName = name.getMethodName(); - Matcher m = TEST_METHOD_NAME_PATTERN.matcher(methodName); - if (m.matches()) { - methodName = m.group(1); - } - - testDir = new File(ourTempDir, methodName); - FileUtil.ensureExists(testDir); - - GradleVersion _gradleVersion = GradleVersion.version(gradleVersion); - String compileConfiguration = GradleBuildScriptBuilderUtil.isJavaLibraryPluginSupported(_gradleVersion) ? "implementation" : "compile"; - String testCompileConfiguration = GradleBuildScriptBuilderUtil.isJavaLibraryPluginSupported(_gradleVersion) - ? "testImplementation" : "testCompile"; - String integrationTestCompileConfiguration = GradleBuildScriptBuilderUtil.isJavaLibraryPluginSupported(_gradleVersion) - ? "integrationTestImplementation" - : "integrationTestCompile"; - try (InputStream buildScriptStream = getClass().getResourceAsStream('/' + methodName + '/' + GradleConstants.DEFAULT_SCRIPT_NAME)) { - String text = StreamUtil.readText(new InputStreamReader(buildScriptStream, StandardCharsets.UTF_8)); - text = text.replaceAll("<>", compileConfiguration); - text = text.replaceAll("<>", testCompileConfiguration); - text = text.replaceAll("<>", testCompileConfiguration); - FileUtil.writeToFile(new File(testDir, GradleConstants.DEFAULT_SCRIPT_NAME), text, StandardCharsets.UTF_8); - } - - try (InputStream settingsStream = getClass().getResourceAsStream('/' + methodName + '/' + GradleConstants.SETTINGS_FILE_NAME)) { - if (settingsStream != null) { - Files.copy(settingsStream, new File(testDir, GradleConstants.SETTINGS_FILE_NAME).toPath(), StandardCopyOption.REPLACE_EXISTING); - } - } + public void setUp() { + Assume.assumeThat(gradleVersion.getVersion(), versionMatcherRule.getMatcher()); // fix exception of FJP at org.gradle.process.internal.ExecHandleRunner.run => ... => net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start => java.lang.ProcessBuilder.start => java.lang.ProcessHandleImpl.completion IdeaForkJoinWorkerThreadFactory.setupForkJoinCommonPool(true); - GradleConnector connector = GradleConnector.newConnector(); - final URI distributionUri = new DistributionLocator().getDistributionFor(_gradleVersion); - connector.useDistribution(distributionUri); - connector.forProjectDirectory(testDir); - int daemonMaxIdleTime = 10; - try { - daemonMaxIdleTime = Integer.parseInt(System.getProperty("gradleDaemonMaxIdleTime", "10")); - } - catch (NumberFormatException ignore) { - } - - ((DefaultGradleConnector)connector).daemonMaxIdleTime(daemonMaxIdleTime, TimeUnit.SECONDS); - - try (ProjectConnection connection = connector.connect()) { - final ProjectImportAction projectImportAction = new ProjectImportAction(false); - projectImportAction.addProjectImportModelProviders(GradleClassProjectModelProvider.createAll(getModels())); - projectImportAction.addProjectImportModelProviders(GradleClassBuildModelProvider.createAll(IdeaProject.class)); - BuildActionExecuter buildActionExecutor = connection.action(projectImportAction); - GradleExecutionSettings executionSettings = new GradleExecutionSettings(null, null, DistributionType.BUNDLED, false); - GradleExecutionHelper.attachTargetPathMapperInitScript(executionSettings); - Path initScript = GradleInitScriptUtil.createMainInitScript(false, getToolingExtensionClasses()); - executionSettings.withArguments(GradleConstants.INIT_SCRIPT_CMD_OPTION, initScript.toString()); - - buildActionExecutor.withArguments(executionSettings.getArguments()); - String jdkHome = IdeaTestUtil.requireRealJdkHome(); - buildActionExecutor.setJavaHome(new File(jdkHome)); - buildActionExecutor.setJvmArguments("-Xmx128m", "-XX:MaxPermSize=64m"); - allModels = buildActionExecutor.run(); - assertNotNull(allModels); - } - } - - public static void assumeGradleCompatibleWithJava(@NotNull String gradleVersion) { - assumeTrue("Gradle [" + gradleVersion + "] cannot be execution on Java [" + JavaVersion.current() + "]", - GradleJvmSupportMatrix.isSupported(GradleVersion.version(gradleVersion), JavaVersion.current())); - - if (GradleVersion.version(gradleVersion).getBaseVersion().compareTo(GradleVersion.version("4.8")) < 0) { - assumeThat(JavaVersion.current().feature, new CustomMatcher("Java version older than 9") { - @Override - public boolean matches(Object item) { - return item instanceof Integer && ((Integer)item).compareTo(9) < 0; - } - }); - } - } - - @NotNull - public static Set> getToolingExtensionClasses() { - return new HashSet<>(Arrays.asList( - // external-system-rt.jar - ExternalSystemSourceType.class, - // gradle-tooling-extension-api jar - ProjectImportAction.class, - // gradle-tooling-extension-impl jar - Init.class, - Multimap.class, - ShortTypeHandling.class, - // fastutil - Object2ObjectMap.class, - // ion-java jar - IonType.class, - // util-rt jat - SystemInfoRt.class // !!! do not replace it with SystemInfo.class from util module - )); + setUpGradleJvmHomePath(); + setUpTemporaryTestDirectory(); } @After @@ -210,99 +96,106 @@ public void tearDown() { } } - protected abstract Set> getModels(); - - - protected Map getModulesMap(final Class aClass) { - final DomainObjectSet ideaModules = allModels.getModel(IdeaProject.class).getModules(); - - final String filterKey = "to_filter"; - final Map map = ContainerUtil.map2Map(ideaModules, module -> { - final T value = allModels.getModel(module, aClass); - final String key = value != null ? module.getGradleProject().getPath() : filterKey; - return Pair.create(key, value); - }); - - map.remove(filterKey); - return map; + private @NotNull String getTestMethodName() { + String methodName = name.getMethodName(); + Matcher matcher = TEST_METHOD_NAME_PATTERN.matcher(methodName); + if (matcher.matches()) { + return matcher.group(1); + } + return methodName; } - protected void assertBuildClasspath(String projectPath, String... classpath) { - final Map classpathModelMap = getModulesMap(BuildScriptClasspathModel.class); - final BuildScriptClasspathModel classpathModel = classpathModelMap.get(projectPath); - - assertNotNull(classpathModel); - - final List classpathEntryModels = classpathModel.getClasspath().getAll(); - assertEquals(classpath.length, classpathEntryModels.size()); + private void setUpGradleJvmHomePath() { + gradleJvmHomePath = GradleJvmResolver.resolveGradleJvmHomePath(gradleVersion, myTargetJavaVersionWatcher.getRestriction()); + } - for (int i = 0, length = classpath.length; i < length; i++) { - String classpathEntry = classpath[i]; - final ClasspathEntryModel classpathEntryModel = classpathEntryModels.get(i); - assertNotNull(classpathEntryModel); - assertEquals(1, classpathEntryModel.getClasses().size()); - final String path = classpathEntryModel.getClasses().iterator().next(); - assertEquals(classpathEntry, new File(path).getName()); + private void setUpTemporaryTestDirectory() { + try { + if (ourTempDir == null) { + ourTempDir = new File(FileUtil.getTempDirectory(), "gradleTests"); + FileUtil.delete(ourTempDir); + FileUtil.ensureExists(ourTempDir); + } + testDir = new File(ourTempDir, getTestMethodName()); + FileUtil.delete(testDir); + FileUtil.ensureExists(testDir); + } + catch (IOException e) { + throw new RuntimeException(e); } } - private static void ensureTempDirCreated() throws IOException { - if (ourTempDir != null) return; + public void createProjectFile(@NotNull String relativePath, @NotNull String content) { + try { + File file = testDir.toPath().resolve(relativePath).toFile(); + FileUtil.writeToFile(file, content); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } - ourTempDir = new File(FileUtil.getTempDirectory(), "gradleTests"); - FileUtil.delete(ourTempDir); - FileUtil.ensureExists(ourTempDir); + public @NotNull GradleIdeaModelHolder runBuildAction(Class... projectModels) { + return runBuildAction(GradleClassProjectModelProvider.createAll(projectModels)); } - public static class DistributionLocator { - private static final String RELEASE_REPOSITORY_ENV = "GRADLE_RELEASE_REPOSITORY"; - private static final String SNAPSHOT_REPOSITORY_ENV = "GRADLE_SNAPSHOT_REPOSITORY"; - private static final String INTELLIJ_LABS_GRADLE_RELEASE_MIRROR = - "https://cache-redirector.jetbrains.com/downloads.gradle.org/distributions"; - private static final String INTELLIJ_LABS_GRADLE_SNAPSHOT_MIRROR = - "https://cache-redirector.jetbrains.com/downloads.gradle.org/distributions-snapshots"; - private static final String GRADLE_RELEASE_REPO = "https://services.gradle.org/distributions"; - private static final String GRADLE_SNAPSHOT_REPO = "https://services.gradle.org/distributions-snapshots"; + public @NotNull GradleIdeaModelHolder runBuildAction(ProjectImportModelProvider... modelProviders) { + return runBuildAction(Arrays.asList(modelProviders)); + } - @NotNull private final String myReleaseRepoUrl; - @NotNull private final String mySnapshotRepoUrl; + private @NotNull GradleIdeaModelHolder runBuildAction(@NotNull List modelProviders) { + GradleModelFetchAction buildAction = new GradleModelFetchAction() + .addProjectImportModelProviders(GradleClassBuildModelProvider.createAll(IdeaProject.class)) + .addProjectImportModelProviders(modelProviders); - public DistributionLocator() { - this(DistributionLocator.getRepoUrl(false), DistributionLocator.getRepoUrl(true)); - } + Path targetPathMapperInitScript = GradleInitScriptUtil.createTargetPathMapperInitScript(); + Path mainInitScript = GradleInitScriptUtil.createMainInitScript(false, getToolingExtensionClasses()); + ExternalSystemExecutionSettings executionSettings = new GradleExecutionSettings(null, null, DistributionType.BUNDLED, false) + .withArguments(GradleConstants.INIT_SCRIPT_CMD_OPTION, targetPathMapperInitScript.toString()) + .withArguments(GradleConstants.INIT_SCRIPT_CMD_OPTION, mainInitScript.toString()) + .withVmOptions("-Xmx128m", "-XX:MaxPermSize=64m", "-Dorg.gradle.warning.mode=fail"); - public DistributionLocator(@NotNull String releaseRepoUrl, @NotNull String snapshotRepoUrl) { - myReleaseRepoUrl = releaseRepoUrl; - mySnapshotRepoUrl = snapshotRepoUrl; - } + GradleConnector connector = GradleConnector.newConnector() + .useDistribution(GradleUtil.getWrapperDistributionUri(gradleVersion)) + .forProjectDirectory(testDir); + ((DefaultGradleConnector)connector).daemonMaxIdleTime(getDaemonMaxIdleTimeSeconds(), TimeUnit.SECONDS); - @NotNull - public URI getDistributionFor(@NotNull GradleVersion version) throws URISyntaxException { - return getDistribution(getDistributionRepository(version), version, "gradle", "bin"); + try (ProjectConnection connection = connector.connect()) { + GradleModelHolderState state = connection.action(buildAction) + .setStandardError(System.err) + .setStandardOutput(System.out) + .setJavaHome(new File(gradleJvmHomePath)) + .withArguments(executionSettings.getArguments()) + .setJvmArguments(executionSettings.getJvmArguments()) + .run(); + Assert.assertNotNull(state); + + GradleIdeaModelHolder models = new GradleIdeaModelHolder(); + models.addState(state); + return models; } + } - @NotNull - private String getDistributionRepository(@NotNull GradleVersion version) { - return version.isSnapshot() ? mySnapshotRepoUrl : myReleaseRepoUrl; + private static int getDaemonMaxIdleTimeSeconds() { + try { + return Integer.parseInt(System.getProperty("gradleDaemonMaxIdleTime", "5")); } - - private static URI getDistribution(@NotNull String repositoryUrl, - @NotNull GradleVersion version, - @NotNull String archiveName, - @NotNull String archiveClassifier) throws URISyntaxException { - return new URI(String.format("%s/%s-%s-%s.zip", repositoryUrl, archiveName, version.getVersion(), archiveClassifier)); + catch (NumberFormatException ignore) { } + return 5; + } - @NotNull - public static String getRepoUrl(boolean isSnapshotUrl) { - final String envRepoUrl = System.getenv(isSnapshotUrl ? SNAPSHOT_REPOSITORY_ENV : RELEASE_REPOSITORY_ENV); - if (envRepoUrl != null) return envRepoUrl; - - if (UsefulTestCase.IS_UNDER_TEAMCITY) { - return isSnapshotUrl ? INTELLIJ_LABS_GRADLE_SNAPSHOT_MIRROR : INTELLIJ_LABS_GRADLE_RELEASE_MIRROR; - } - - return isSnapshotUrl ? GRADLE_SNAPSHOT_REPO : GRADLE_RELEASE_REPO; - } + @NotNull + public static Set> getToolingExtensionClasses() { + return ContainerUtil.newHashSet( + ExternalSystemRtClass.class, // intellij.platform.externalSystem.rt + GradleToolingExtensionClass.class, // intellij.gradle.toolingExtension + GradleToolingExtensionImplClass.class, // intellij.gradle.toolingExtension.impl + Multimap.class, // repacked gradle guava + ShortTypeHandling.class, // groovy + Object2ObjectMap.class, // fastutil + IonType.class, // ion-java jar + SystemInfoRt.class // jar containing classes of `intellij.platform.util.rt` module + ); } } diff --git a/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util/JavaVersionMatcher.kt b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util/JavaVersionMatcher.kt new file mode 100644 index 000000000..1b5c3922e --- /dev/null +++ b/intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util/JavaVersionMatcher.kt @@ -0,0 +1,40 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.tooling.util + +import com.intellij.util.lang.JavaVersion + +object JavaVersionMatcher { + + @JvmStatic + fun isVersionMatch(sourceVersion: JavaVersion, targetVersionNotation: String): Boolean { + val (targetJavaVersion, relation) = parseDeclaration(targetVersionNotation) ?: return false + val baseSourceVersion = sourceVersion.feature + val baseTargetVersion = targetJavaVersion.feature + return when (relation) { + Relation.GREATER_THAN -> baseSourceVersion > baseTargetVersion + Relation.LESS_THAN -> baseSourceVersion < baseTargetVersion + Relation.LESS_THAN_OR_EQUAL -> baseSourceVersion <= baseTargetVersion + Relation.GREATER, Relation.GREATER_THAN_OR_EQUAL -> baseSourceVersion >= baseTargetVersion + Relation.NOT -> baseSourceVersion != baseTargetVersion + Relation.EQUAL -> baseSourceVersion == baseTargetVersion + } + } + + private fun parseDeclaration(query: String): Pair? { + val relation = Relation.values() + .find { query.startsWith(it.sign) || query.endsWith(it.sign) } + ?: Relation.EQUAL + val javaVersion = query.replace(relation.sign, "").let { JavaVersion.tryParse(it) } ?: return null + return Pair(javaVersion, relation) + } + + private enum class Relation(val sign: String) { + GREATER_THAN(">"), + GREATER_THAN_OR_EQUAL(">="), + GREATER("+"), + LESS_THAN("<"), + LESS_THAN_OR_EQUAL("<="), + NOT("!"), + EQUAL("==") + } +} \ No newline at end of file diff --git a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenImportingTestCase.kt b/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenImportingTestCase.kt index ad3905b88..331f9b267 100644 --- a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenImportingTestCase.kt +++ b/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenImportingTestCase.kt @@ -4,7 +4,6 @@ package com.intellij.maven.testFramework import com.intellij.application.options.CodeStyle import com.intellij.compiler.CompilerTestUtil import com.intellij.java.library.LibraryWithMavenCoordinatesProperties -import com.intellij.maven.testFramework.utils.importMavenProjects import com.intellij.openapi.application.* import com.intellij.openapi.externalSystem.autoimport.AutoImportProjectNotificationAware import com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker @@ -12,8 +11,10 @@ import com.intellij.openapi.externalSystem.statistics.ProjectImportCollector import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.module.ModuleWithNameAlreadyExists +import com.intellij.openapi.progress.runBlockingMaybeCancellable import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.ModuleListener +import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl @@ -30,27 +31,23 @@ import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess import com.intellij.psi.codeStyle.CodeStyleSchemes import com.intellij.psi.codeStyle.CodeStyleSettings -import com.intellij.testFramework.CodeStyleSettingsTracker -import com.intellij.testFramework.IdeaTestUtil -import com.intellij.testFramework.PlatformTestUtil +import com.intellij.testFramework.* import com.intellij.testFramework.RunAll.Companion.runAll import com.intellij.util.ThrowableRunnable import com.intellij.util.concurrency.annotations.RequiresBackgroundThread -import com.intellij.util.containers.ContainerUtil import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import org.intellij.lang.annotations.Language import org.jetbrains.annotations.ApiStatus.Obsolete import org.jetbrains.concurrency.AsyncPromise -import org.jetbrains.idea.maven.buildtool.MavenImportSpec +import org.jetbrains.idea.maven.buildtool.MavenSyncSpec import org.jetbrains.idea.maven.execution.MavenRunner import org.jetbrains.idea.maven.execution.MavenRunnerParameters import org.jetbrains.idea.maven.execution.MavenRunnerSettings -import org.jetbrains.idea.maven.importing.MavenProjectImporter.Companion.isImportToWorkspaceModelEnabled import org.jetbrains.idea.maven.model.MavenExplicitProfiles import org.jetbrains.idea.maven.project.* -import org.jetbrains.idea.maven.project.preimport.MavenProjectPreImporter +import org.jetbrains.idea.maven.project.preimport.MavenProjectStaticImporter +import org.jetbrains.idea.maven.project.preimport.SimpleStructureProjectVisitor import org.jetbrains.idea.maven.server.MavenServerManager import org.jetbrains.idea.maven.utils.MavenLog import org.jetbrains.idea.maven.utils.MavenUtil @@ -81,20 +78,18 @@ abstract class MavenImportingTestCase : MavenTestCase() { if (settingsFile != null) { VfsRootAccess.allowRootAccess(getTestRootDisposable(), settingsFile.absolutePath) } - myNotificationAware = AutoImportProjectNotificationAware.getInstance(myProject) - myProjectTracker = AutoImportProjectTracker.getInstance(myProject) - myProject.messageBus.connect(testRootDisposable).subscribe(MavenImportListener.TOPIC, MavenImportLoggingListener()) + myNotificationAware = AutoImportProjectNotificationAware.getInstance(project) + myProjectTracker = AutoImportProjectTracker.getInstance(project) + project.messageBus.connect(testRootDisposable).subscribe(MavenImportListener.TOPIC, MavenImportLoggingListener()) } @Throws(Exception::class) override fun tearDown() { - val projectsManager = myProjectsManager runAll( ThrowableRunnable { WriteAction.runAndWait { JavaAwareProjectJdkTableImpl.removeInternalJdkInTests() } }, ThrowableRunnable { TestDialogManager.setTestDialog(TestDialog.DEFAULT) }, ThrowableRunnable { removeFromLocalRepository("test") }, - ThrowableRunnable { CompilerTestUtil.deleteBuildSystemDirectory(myProject) }, - ThrowableRunnable { projectsManager?.waitForAfterImportJobs() }, + ThrowableRunnable { CompilerTestUtil.deleteBuildSystemDirectory(project) }, ThrowableRunnable { myProjectsManager = null }, ThrowableRunnable { super.tearDown() }, ThrowableRunnable { @@ -109,42 +104,10 @@ abstract class MavenImportingTestCase : MavenTestCase() { return true } - val isWorkspaceImport: Boolean - get() = isImportToWorkspaceModelEnabled(myProject) - - fun supportModuleGroups(): Boolean { - return !isWorkspaceImport - } - - fun supportsKeepingManualChanges(): Boolean { - return !isWorkspaceImport - } - - fun supportsImportOfNonExistingFolders(): Boolean { - return isWorkspaceImport - } - - fun supportsKeepingModulesFromPreviousImport(): Boolean { - return !isWorkspaceImport - } - - fun supportsLegacyKeepingFoldersFromPreviousImport(): Boolean { - return !isWorkspaceImport - } - - fun supportsKeepingFacetsFromPreviousImport(): Boolean { - return !isWorkspaceImport - } - - fun supportsCreateAggregatorOption(): Boolean { - return !isWorkspaceImport - } - - @Throws(Exception::class) override fun setUpInWriteAction() { super.setUpInWriteAction() - myProjectsManager = MavenProjectsManager.getInstance(myProject) + myProjectsManager = MavenProjectsManager.getInstance(project) removeFromLocalRepository("test") } @@ -155,7 +118,7 @@ abstract class MavenImportingTestCase : MavenTestCase() { } protected fun assertModules(vararg expectedNames: String) { - val actual = ModuleManager.getInstance(myProject).modules + val actual = ModuleManager.getInstance(project).modules val actualNames: MutableList = ArrayList() for (m in actual) { actualNames.add(m.getName()) @@ -165,12 +128,12 @@ abstract class MavenImportingTestCase : MavenTestCase() { protected fun assertRootProjects(vararg expectedNames: String?) { val rootProjects = projectsManager.getProjectsTree().rootProjects - val actualNames = ContainerUtil.map(rootProjects) { it: MavenProject -> it.mavenId.artifactId } + val actualNames = rootProjects.map { it.mavenId.artifactId } assertUnorderedElementsAreEqual(actualNames, *expectedNames) } protected val projectsTree: MavenProjectsTree - protected get() = projectsManager.getProjectsTree() + get() = projectsManager.getProjectsTree() protected fun assertModuleOutput(moduleName: String, output: String?, testOutput: String?) { val e = getCompilerExtension(moduleName) @@ -180,13 +143,13 @@ abstract class MavenImportingTestCase : MavenTestCase() { } protected val projectsManager: MavenProjectsManager - protected get() = myProjectsManager!! + get() = myProjectsManager!! protected fun assertProjectOutput(module: String) { assertTrue(getCompilerExtension(module)!!.isCompilerOutputPathInherited()) } - protected fun getCompilerExtension(module: String): CompilerModuleExtension? { + private fun getCompilerExtension(module: String): CompilerModuleExtension? { val m = getRootManager(module) return CompilerModuleExtension.getInstance(m.getModule()) } @@ -252,7 +215,7 @@ abstract class MavenImportingTestCase : MavenTestCase() { assertOrderedElementsAreEqual(collectModuleDepsNames(moduleName, clazz), *expectedDeps) } - protected fun assertModuleModuleDepScope(moduleName: String, depName: String, scope: DependencyScope?) { + protected fun assertModuleModuleDepScope(moduleName: String, depName: String, scope: DependencyScope) { val dep = getModuleModuleDep(moduleName, depName) assertEquals(scope, dep.getScope()) } @@ -288,7 +251,7 @@ abstract class MavenImportingTestCase : MavenTestCase() { fun assertProjectLibraries(vararg expectedNames: String) { val actualNames: MutableList = ArrayList() - for (each in LibraryTablesRegistrar.getInstance().getLibraryTable(myProject).getLibraries()) { + for (each in LibraryTablesRegistrar.getInstance().getLibraryTable(project).getLibraries()) { val name = each.getName() actualNames.add(name ?: "") } @@ -308,7 +271,7 @@ abstract class MavenImportingTestCase : MavenTestCase() { classifier: String?, packaging: String?, version: String?) { - val lib = LibraryTablesRegistrar.getInstance().getLibraryTable(myProject).getLibraryByName(libraryName) + val lib = LibraryTablesRegistrar.getInstance().getLibraryTable(project).getLibraryByName(libraryName) assertNotNull("Library [$libraryName] not found", lib) val libraryProperties = (lib as LibraryEx?)!!.getProperties() assertInstanceOf(libraryProperties, LibraryWithMavenCoordinatesProperties::class.java) @@ -321,41 +284,25 @@ abstract class MavenImportingTestCase : MavenTestCase() { assertEquals("Unexpected version", version, coords.version) } - protected fun assertModuleGroupPath(moduleName: String, vararg expected: String) { - assertModuleGroupPath(moduleName, false, *expected) - } - - protected fun assertModuleGroupPath(moduleName: String, groupWasManuallyAdded: Boolean, vararg expected: String) { - val moduleGroupsSupported = supportModuleGroups() || groupWasManuallyAdded && supportsKeepingManualChanges() - val path = ModuleManager.getInstance(myProject).getModuleGroupPath(getModule(moduleName)!!) - if (!moduleGroupsSupported || expected.size == 0) { - assertNull(path) - } - else { - assertNotNull(path) - assertOrderedElementsAreEqual(listOf(*path!!), *expected) - } - } - protected fun getModule(name: String): Module { - val m = ReadAction.compute { ModuleManager.getInstance(myProject).findModuleByName(name) } + val m = ReadAction.compute { ModuleManager.getInstance(project).findModuleByName(name) } assertNotNull("Module $name not found", m) return m } protected fun assertMavenizedModule(name: String) { - assertTrue(MavenProjectsManager.getInstance(myProject).isMavenizedModule(getModule(name))) + assertTrue(MavenProjectsManager.getInstance(project).isMavenizedModule(getModule(name))) } protected fun assertNotMavenizedModule(name: String) { - assertFalse(MavenProjectsManager.getInstance(myProject).isMavenizedModule(getModule(name))) + assertFalse(MavenProjectsManager.getInstance(project).isMavenizedModule(getModule(name))) } fun getContentRoots(moduleName: String): Array { return getRootManager(moduleName).getContentEntries() } - fun getRootManager(module: String): ModuleRootManager { + private fun getRootManager(module: String): ModuleRootManager { return ModuleRootManager.getInstance(getModule(module)) } @@ -378,7 +325,7 @@ abstract class MavenImportingTestCase : MavenTestCase() { } protected suspend fun importProjectAsync() { - importProjectsAsync(listOf(myProjectPom)) + importProjectsAsync(listOf(projectPom)) } protected suspend fun importProjectAsync(file: VirtualFile) { @@ -389,12 +336,12 @@ abstract class MavenImportingTestCase : MavenTestCase() { importProjectsAsync(listOf(*files)) } - protected suspend fun importProjectsAsync(files: List) { + protected open suspend fun importProjectsAsync(files: List) { if (preimportTestMode) { - val activity = ProjectImportCollector.IMPORT_ACTIVITY.started(myProject) + val activity = ProjectImportCollector.IMPORT_ACTIVITY.started(project) try { - MavenProjectPreImporter.getInstance(myProject) - .preimport(files, null, mavenImporterSettings, mavenGeneralSettings, activity) + MavenProjectStaticImporter.getInstance(project) + .syncStatic(files, null, mavenImporterSettings, mavenGeneralSettings, true, SimpleStructureProjectVisitor(), activity, true) } finally { activity.finished() @@ -404,27 +351,14 @@ abstract class MavenImportingTestCase : MavenTestCase() { } else { initProjectsManager(false) - projectsManager.addManagedFilesWithProfilesAndUpdate(files, MavenExplicitProfiles.NONE, null, null) - projectsManager.waitForAfterImportJobs() + projectsManager.addManagedFilesWithProfiles(files, MavenExplicitProfiles.NONE, null, null, true) } - - } - - protected fun importProjectWithErrors() { - val files = listOf(myProjectPom) - doImportProjects(files, false) - importMavenProjects(projectsManager, files) + IndexingTestUtil.suspendUntilIndexesAreReady(project) } protected fun importProjectWithProfiles(vararg profiles: String) { - doImportProjects(listOf(myProjectPom), true, *profiles) - } - - @Obsolete - // use importProjectAsync() - protected fun importProject(file: VirtualFile) { - importProjects(file) + doImportProjects(listOf(projectPom), true, *profiles) } @Obsolete @@ -445,44 +379,34 @@ abstract class MavenImportingTestCase : MavenTestCase() { projectsManager.setIgnoredFilesPatterns(patterns) } - protected open fun doImportProjects(files: List, failOnReadingError: Boolean, vararg profiles: String) { - doImportProjects(files, failOnReadingError, emptyList(), *profiles) - } - - - protected fun doImportProjects(files: List, failOnReadingError: Boolean, - disabledProfiles: List, vararg profiles: String) { + private fun doImportProjects(files: List, failOnReadingError: Boolean, vararg profiles: String) { assertFalse(ApplicationManager.getApplication().isWriteAccessAllowed()) initProjectsManager(false) - readProjects(files, disabledProfiles, *profiles) - resolvePlugins() - val promise = projectsManager.waitForImportCompletion() - ApplicationManager.getApplication().invokeAndWait { PlatformTestUtil.waitForPromise(promise) } + projectsManager.projectsTree.resetManagedFilesAndProfiles(files, MavenExplicitProfiles(profiles.toList(), emptyList())) + runBlockingMaybeCancellable { updateAllProjects() } if (failOnReadingError) { for (each in projectsManager.getProjectsTree().projects) { assertFalse("Failed to import Maven project: " + each.getProblems(), each.hasReadingProblems()) } } + IndexingTestUtil.waitUntilIndexesAreReady(project); } - protected fun waitForImportCompletion() { - edt { - PlatformTestUtil.waitForPromise( - projectsManager.waitForImportCompletion(), 60000) - } - } - - protected fun readProjects(files: List, vararg profiles: String) { - readProjects(files, emptyList(), *profiles) - } - - protected fun readProjects(files: List, disabledProfiles: List, vararg profiles: String) { - projectsManager.resetManagedFilesAndProfilesInTests(files, MavenExplicitProfiles(listOf(*profiles), disabledProfiles)) - waitForImportCompletion() + protected suspend fun doImportProjectsAsync(files: List, failOnReadingError: Boolean, vararg profiles: String) { + return doImportProjectsAsync(files, failOnReadingError, emptyList(), *profiles) } - protected fun updateProjectsAndImport(vararg files: VirtualFile) { - readProjects(*files) + protected suspend fun doImportProjectsAsync(files: List, failOnReadingError: Boolean, + disabledProfiles: List, vararg profiles: String) { + assertFalse(ApplicationManager.getApplication().isWriteAccessAllowed()) + initProjectsManager(false) + projectsManager.projectsTree.resetManagedFilesAndProfiles(files, MavenExplicitProfiles(profiles.toList(), disabledProfiles)) + updateAllProjects() + if (failOnReadingError) { + for (each in projectsManager.getProjectsTree().projects) { + assertFalse("Failed to import Maven project: " + each.getProblems(), each.hasReadingProblems()) + } + } } protected fun initProjectsManager(enableEventHandling: Boolean) { @@ -501,9 +425,11 @@ abstract class MavenImportingTestCase : MavenTestCase() { assertTrue("Auto-reload is disabled for tests by default", isAutoReloadEnabled) } - protected fun assertHasPendingProjectForReload() { + protected suspend fun assertHasPendingProjectForReload() { assertAutoReloadIsInitialized() - assertTrue("Expected notification about pending projects for auto-reload", myNotificationAware!!.isNotificationVisible()) + assertWithinTimeout(10) { + assertTrue("Expected notification about pending projects for auto-reload", myNotificationAware!!.isNotificationVisible()) + } assertNotEmpty(myNotificationAware!!.getProjectsWithNotification()) } @@ -514,20 +440,16 @@ abstract class MavenImportingTestCase : MavenTestCase() { } @RequiresBackgroundThread - // TODO: suspend - protected fun scheduleProjectImportAndWait() { + protected suspend fun scheduleProjectImportAndWait() { assertAutoReloadIsInitialized() // otherwise all imports will be skipped assertHasPendingProjectForReload() - runBlocking { - waitForImportWithinTimeout { - withContext(Dispatchers.EDT) { - myProjectTracker!!.scheduleProjectRefresh() - } + waitForImportWithinTimeout { + withContext(Dispatchers.EDT) { + myProjectTracker!!.scheduleProjectRefresh() } } - MavenUtil.invokeAndWait(myProject) {} // otherwise project settings was modified while importing assertNoPendingProjectForReload() @@ -549,69 +471,42 @@ abstract class MavenImportingTestCase : MavenTestCase() { } protected suspend fun updateAllProjects() { - projectsManager.updateAllMavenProjects(MavenImportSpec.EXPLICIT_IMPORT) - projectsManager.waitForAfterImportJobs() + projectsManager.updateAllMavenProjects(MavenSyncSpec.incremental("MavenImportingTestCase incremental sync")) } - protected fun waitForReadingCompletion() { - ApplicationManager.getApplication().invokeAndWait { - try { - projectsManager.waitForReadingCompletion() - } - catch (e: Exception) { - throw RuntimeException(e) - } - } - } - - @Throws(Exception::class) - protected open fun readProjects() { - readProjects(projectsManager.getProjectsFiles()) - } - - protected fun readProjects(vararg files: VirtualFile?) { - val projects: MutableList = ArrayList() - for (each in files) { - val mavenProject = projectsManager.findProject(each!!) - if (null != mavenProject) { - projects.add(mavenProject) - } - } - projectsManager.scheduleForceUpdateMavenProjects(projects) - waitForReadingCompletion() - } - - protected fun resolveDependenciesAndImport() { - ApplicationManager.getApplication().invokeAndWait { projectsManager.waitForReadingCompletion() } - } - - protected fun resolvePlugins() { - projectsManager.waitForImportCompletion() + /** + * Use updateAllProjects() + * + * This method runs full sync. + * However, in most cases, incremental sync should be sufficient. + * If it is not, consider improving incremental sync instead of using full sync. + */ + @Obsolete + protected suspend fun updateAllProjectsFullSync() { + projectsManager.updateAllMavenProjects(MavenSyncSpec.full("MavenImportingTestCase full sync")) } protected suspend fun downloadArtifacts() { projectsManager.downloadArtifacts(projectsManager.getProjects(), null, true, true) } - protected open fun performPostImportTasks() {} - @Throws(Exception::class) protected fun executeGoal(relativePath: String?, goal: String) { - val dir = myProjectRoot.findFileByRelativePath(relativePath!!) + val dir = projectRoot.findFileByRelativePath(relativePath!!) val rp = MavenRunnerParameters(true, dir!!.getPath(), null as String?, listOf(goal), emptyList()) val rs = MavenRunnerSettings() val wait = Semaphore(1) wait.acquire() - MavenRunner.getInstance(myProject).run(rp, rs) { wait.release() } + MavenRunner.getInstance(project).run(rp, rs) { wait.release() } val tryAcquire = wait.tryAcquire(10, TimeUnit.SECONDS) assertTrue("Maven execution failed", tryAcquire) } - protected fun removeFromLocalRepository(relativePath: String?) { + protected fun removeFromLocalRepository(relativePath: String) { if (SystemInfo.isWindows) { - MavenServerManager.getInstance().shutdown(true) + MavenServerManager.getInstance().closeAllConnectorsAndWait() } - FileUtil.delete(File(getRepositoryPath(), relativePath)) + FileUtil.delete(File(repositoryPath, relativePath)) } protected fun setupJdkForModules(vararg moduleNames: String) { @@ -629,16 +524,16 @@ abstract class MavenImportingTestCase : MavenTestCase() { private val currentCodeStyleSettings: CodeStyleSettings get() = if (CodeStyleSchemes.getInstance().getCurrentScheme() == null) CodeStyle.createTestSettings() - else CodeStyle.getSettings(myProject) + else CodeStyle.getSettings(project) protected fun waitForSmartMode() { val promise = AsyncPromise() - DumbService.getInstance(myProject).smartInvokeLater { promise.setResult(null) } + DumbService.getInstance(project).smartInvokeLater { promise.setResult(null) } edt { PlatformTestUtil.waitForPromise(promise, 60_000) } } protected suspend fun renameModule(oldName: String, newName: String) { - val moduleManager = ModuleManager.getInstance(myProject) + val moduleManager = ModuleManager.getInstance(project) val module = moduleManager.findModuleByName(oldName)!! val modifiableModel = moduleManager.getModifiableModel() try { @@ -649,18 +544,23 @@ abstract class MavenImportingTestCase : MavenTestCase() { } writeAction { modifiableModel.commit() - myProject.getMessageBus().syncPublisher(ModuleListener.TOPIC).modulesRenamed(myProject, listOf(module)) { oldName } + project.getMessageBus().syncPublisher(ModuleListener.TOPIC).modulesRenamed(project, listOf(module)) { oldName } } } @RequiresBackgroundThread - protected suspend fun waitForImportWithinTimeout(action: suspend () -> Any?) { + protected suspend fun waitForImportWithinTimeout(action: suspend () -> Unit) { + waitForImportWithinTimeout(project, action) + } + + @RequiresBackgroundThread + protected suspend fun waitForImportWithinTimeout(project: Project, action: suspend () -> Unit) { MavenLog.LOG.warn("waitForImportWithinTimeout started") val importStarted = AtomicBoolean(false) val importFinished = AtomicBoolean(false) val pluginResolutionFinished = AtomicBoolean(true) val artifactDownloadingFinished = AtomicBoolean(true) - myProject.messageBus.connect(testRootDisposable) + project.messageBus.connect(testRootDisposable) .subscribe(MavenImportListener.TOPIC, object : MavenImportListener { override fun importStarted() { importStarted.set(true) @@ -754,41 +654,36 @@ abstract class MavenImportingTestCase : MavenTestCase() { } } - companion object { - private fun getAbsolutePath(path: String?): String { - return if (path == null) "" else FileUtil.toSystemIndependentName(FileUtil.toCanonicalPath(VirtualFileManager.extractPath(path))) - } + private fun getAbsolutePath(path: String?): String { + return if (path == null) "" else FileUtil.toSystemIndependentName(FileUtil.toCanonicalPath(VirtualFileManager.extractPath(path))) + } - private fun assertModuleLibDepPath(lib: LibraryOrderEntry, type: OrderRootType, paths: List?) { - if (paths == null) return - assertUnorderedPathsAreEqual(listOf(*lib.getRootUrls(type)), paths) - // also check the library because it may contain slight different set of urls (e.g. with duplicates) - assertUnorderedPathsAreEqual(listOf(*lib.getLibrary()!!.getUrls(type)), paths) - } + private fun assertModuleLibDepPath(lib: LibraryOrderEntry, type: OrderRootType, paths: List?) { + if (paths == null) return + assertUnorderedPathsAreEqual(listOf(*lib.getRootUrls(type)), paths) + // also check the library because it may contain slight different set of urls (e.g. with duplicates) + assertUnorderedPathsAreEqual(listOf(*lib.getLibrary()!!.getUrls(type)), paths) + } - @JvmStatic - protected fun createJdk(): Sdk { - return IdeaTestUtil.getMockJdk17() - } + protected fun createJdk(): Sdk { + return IdeaTestUtil.getMockJdk17() + } - @JvmStatic - protected fun configConfirmationForYesAnswer(): AtomicInteger { - val counter = AtomicInteger() - TestDialogManager.setTestDialog { - counter.getAndIncrement() - Messages.YES - } - return counter + protected fun configConfirmationForYesAnswer(): AtomicInteger { + val counter = AtomicInteger() + TestDialogManager.setTestDialog { + counter.getAndIncrement() + Messages.YES } + return counter + } - @JvmStatic - protected fun configConfirmationForNoAnswer(): AtomicInteger { - val counter = AtomicInteger() - TestDialogManager.setTestDialog { - counter.getAndIncrement() - Messages.NO - } - return counter + protected fun configConfirmationForNoAnswer(): AtomicInteger { + val counter = AtomicInteger() + TestDialogManager.setTestDialog { + counter.getAndIncrement() + Messages.NO } + return counter } } diff --git a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.java b/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.java deleted file mode 100644 index 8dc059fa4..000000000 --- a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.java +++ /dev/null @@ -1,747 +0,0 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.maven.testFramework; - -import com.intellij.execution.wsl.WSLDistribution; -import com.intellij.execution.wsl.WslDistributionManager; -import com.intellij.ide.DataManager; -import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.application.ModalityState; -import com.intellij.openapi.application.WriteAction; -import com.intellij.openapi.command.WriteCommandAction; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.module.ModuleType; -import com.intellij.openapi.module.StdModuleTypes; -import com.intellij.openapi.progress.EmptyProgressIndicator; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; -import com.intellij.openapi.projectRoots.JavaSdk; -import com.intellij.openapi.projectRoots.ProjectJdkTable; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.roots.ex.ProjectRootManagerEx; -import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.SystemInfo; -import com.intellij.openapi.util.ThrowableComputable; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.rt.execution.junit.FileComparisonFailure; -import com.intellij.testFramework.*; -import com.intellij.testFramework.fixtures.IdeaProjectTestFixture; -import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory; -import com.intellij.util.ExceptionUtil; -import com.intellij.util.ThrowableRunnable; -import com.intellij.util.containers.CollectionFactory; -import com.intellij.util.containers.ContainerUtil; -import org.intellij.lang.annotations.Language; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.idea.maven.indices.MavenIndicesManager; -import org.jetbrains.idea.maven.project.*; -import org.jetbrains.idea.maven.server.MavenServerConnector; -import org.jetbrains.idea.maven.server.MavenServerConnectorImpl; -import org.jetbrains.idea.maven.server.MavenServerManager; -import org.jetbrains.idea.maven.server.RemotePathTransformerFactory; -import org.jetbrains.idea.maven.utils.MavenProgressIndicator; -import org.jetbrains.idea.maven.utils.MavenUtil; -import org.junit.Assume; - -import java.awt.*; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; -import java.util.*; -import java.util.concurrent.TimeUnit; - -public abstract class MavenTestCase extends UsefulTestCase { - protected static final String MAVEN_COMPILER_PROPERTIES = """ - - UTF-8 - 1.7 - 1.7 - - """; - protected static final MavenConsole NULL_MAVEN_CONSOLE = new NullMavenConsole(); - private MavenProgressIndicator myProgressIndicator; - private WSLDistribution myWSLDistribution; - protected RemotePathTransformerFactory.Transformer myPathTransformer; - - private File ourTempDir; - - protected IdeaProjectTestFixture myTestFixture; - - @NotNull - protected Project myProject; - - protected File myDir; - protected VirtualFile myProjectRoot; - - protected VirtualFile myProjectPom; - protected List myAllPoms = new ArrayList<>(); - - protected static final boolean preimportTestMode = Boolean.getBoolean("MAVEN_TEST_PREIMPORT"); - - - @Override - protected void setUp() throws Exception { - assumeThisTestCanBeReusedForPreimport(); - super.setUp(); - - setUpFixtures(); - myProject = myTestFixture.getProject(); - myPathTransformer = RemotePathTransformerFactory.createForProject(myProject); - setupWsl(); - ensureTempDirCreated(); - - myDir = new File(ourTempDir, getTestName(false)); - FileUtil.ensureExists(myDir); - - - myProgressIndicator = new MavenProgressIndicator(myProject, new EmptyProgressIndicator(ModalityState.nonModal()), null); - - MavenWorkspaceSettingsComponent.getInstance(myProject).loadState(new MavenWorkspaceSettings()); - - String home = getTestMavenHome(); - if (home != null) { - getMavenGeneralSettings().setMavenHomeType(new MavenInSpecificPath(home)); - } - - getMavenGeneralSettings().setAlwaysUpdateSnapshots(true); - - MavenUtil.cleanAllRunnables(); - - EdtTestUtil.runInEdtAndWait(() -> { - restoreSettingsFile(); - - try { - WriteAction.run(this::setUpInWriteAction); - } - catch (Throwable e) { - try { - tearDown(); - } - catch (Exception e1) { - e1.printStackTrace(); - } - throw new RuntimeException(e); - } - }); - } - - public static void assumeTestCanBeReusedForPreimport(Class aClass, String testName) { - if (!preimportTestMode) return; - try { - if (aClass.getDeclaredAnnotation(InstantImportCompatible.class) == null) { - Method testMethod = aClass.getMethod(testName); - Assume.assumeNotNull(testMethod.getDeclaredAnnotation(InstantImportCompatible.class)); - } - } - catch (NoSuchMethodException ignore) { - } - } - - protected void assumeThisTestCanBeReusedForPreimport() { - assumeTestCanBeReusedForPreimport(this.getClass(), getName()); - } - - - private void setupWsl() { - String wslMsId = System.getProperty("wsl.distribution.name"); - if (wslMsId == null) return; - List distributions = WslDistributionManager.getInstance().getInstalledDistributions(); - if (distributions.isEmpty()) throw new IllegalStateException("no WSL distributions configured!"); - myWSLDistribution = distributions.stream().filter(it -> wslMsId.equals(it.getMsId())).findFirst() - .orElseThrow(() -> new IllegalStateException("Distribution " + wslMsId + " was not found")); - String jdkPath = System.getProperty("wsl.jdk.path"); - if (jdkPath == null) { - jdkPath = "/usr/lib/jvm/java-11-openjdk-amd64"; - } - - Sdk wslSdk = getWslSdk(myWSLDistribution.getWindowsPath(jdkPath)); - WriteAction.runAndWait(() -> ProjectRootManagerEx.getInstanceEx(myProject).setProjectSdk(wslSdk)); - assertTrue(new File(myWSLDistribution.getWindowsPath(myWSLDistribution.getUserHome())).isDirectory()); - } - - protected void waitForMavenUtilRunnablesComplete() { - PlatformTestUtil.waitWithEventsDispatching(() -> "Waiting for MavenUtils runnables completed" + MavenUtil.getUncompletedRunnables(), - () -> MavenUtil.noUncompletedRunnables(), 15); - } - - @Override - protected void runBare(@NotNull ThrowableRunnable testRunnable) throws Throwable { - LoggedErrorProcessor.executeWith(new LoggedErrorProcessor() { - @Override - public @NotNull Set processError(@NotNull String category, - @NotNull String message, - String @NotNull [] details, - @Nullable Throwable t) { - boolean intercept = t != null && ( - StringUtil.notNullize(t.getMessage()).contains("The network name cannot be found") && - message.contains("Couldn't read shelf information") || - "JDK annotations not found".equals(t.getMessage()) && "#com.intellij.openapi.projectRoots.impl.JavaSdkImpl".equals(category)); - return intercept ? Action.NONE : Action.ALL; - } - }, () -> super.runBare(testRunnable)); - } - - private Sdk getWslSdk(String jdkPath) { - Sdk sdk = ContainerUtil.find(ProjectJdkTable.getInstance().getAllJdks(), it -> jdkPath.equals(it.getHomePath())); - ProjectJdkTable jdkTable = ProjectJdkTable.getInstance(); - for (Sdk existingSdk : jdkTable.getAllJdks()) { - if (existingSdk == sdk) return sdk; - } - Sdk newSdk = JavaSdk.getInstance().createJdk("Wsl JDK For Tests", jdkPath); - WriteAction.runAndWait(() -> jdkTable.addJdk(newSdk, myProject)); - return newSdk; - } - - - @Override - protected void tearDown() throws Exception { - String basePath = myProject.getBasePath(); - new RunAll( - () -> { - MavenProgressIndicator.MavenProgressTracker mavenProgressTracker = - myProject.getServiceIfCreated(MavenProgressIndicator.MavenProgressTracker.class); - if (mavenProgressTracker != null) { - mavenProgressTracker.assertProgressTasksCompleted(); - } - }, - () -> MavenServerManager.getInstance().shutdown(true), - () -> tearDownEmbedders(), - () -> checkAllMavenConnectorsDisposed(), - () -> myProject = null, - () -> { - Project defaultProject = ProjectManager.getInstance().getDefaultProject(); - MavenIndicesManager mavenIndicesManager = defaultProject.getServiceIfCreated(MavenIndicesManager.class); - if (mavenIndicesManager != null) { - Disposer.dispose(mavenIndicesManager); - } - }, - () -> EdtTestUtil.runInEdtAndWait(() -> tearDownFixtures()), - () -> deleteDirOnTearDown(myDir), - () -> { - if (myWSLDistribution != null) { - deleteDirOnTearDown(new File(basePath)); - } - }, - () -> super.tearDown() - ).run(); - } - - private void tearDownEmbedders() { - MavenProjectsManager manager = MavenProjectsManager.getInstanceIfCreated(myProject); - if (manager == null) return; - manager.getEmbeddersManager().releaseInTests(); - } - - - private static void checkAllMavenConnectorsDisposed() { - assertEmpty("all maven connectors should be disposed", MavenServerManager.getInstance().getAllConnectors()); - } - - private void ensureTempDirCreated() throws IOException { - if (ourTempDir != null) return; - - if (myWSLDistribution == null) { - ourTempDir = new File(FileUtil.getTempDirectory(), "mavenTests"); - } - else { - ourTempDir = new File(myWSLDistribution.getWindowsPath("/tmp"), "mavenTests"); - } - - FileUtil.delete(ourTempDir); - FileUtil.ensureExists(ourTempDir); - } - - protected void setUpFixtures() throws Exception { - String wslMsId = System.getProperty("wsl.distribution.name"); - - boolean isDirectoryBasedProject = useDirectoryBasedProjectFormat(); - if (wslMsId != null) { - Path path = TemporaryDirectory - .generateTemporaryPath(FileUtil.sanitizeFileName(getName(), false), Paths.get("\\\\wsl$\\" + wslMsId + "\\tmp")); - myTestFixture = - IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName(), path, isDirectoryBasedProject).getFixture(); - } - else { - myTestFixture = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName(), isDirectoryBasedProject).getFixture(); - } - - myTestFixture.setUp(); - } - - protected boolean useDirectoryBasedProjectFormat() { - return false; - } - - protected void setUpInWriteAction() throws Exception { - File projectDir = new File(myDir, "project"); - projectDir.mkdirs(); - myProjectRoot = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(projectDir); - } - - protected MavenProgressIndicator getMavenProgressIndicator() { - return myProgressIndicator; - } - - protected static void deleteDirOnTearDown(File dir) { - FileUtil.delete(dir); - // cannot use reliably the result of the com.intellij.openapi.util.io.FileUtil.delete() method - // because com.intellij.openapi.util.io.FileUtilRt.deleteRecursivelyNIO() does not honor this contract - if (dir.exists()) { - System.err.println("Cannot delete " + dir); - //printDirectoryContent(myDir); - dir.deleteOnExit(); - } - } - - private static void printDirectoryContent(File dir) { - File[] files = dir.listFiles(); - if (files == null) return; - - for (File file : files) { - System.out.println(file.getAbsolutePath()); - - if (file.isDirectory()) { - printDirectoryContent(file); - } - } - } - - protected void tearDownFixtures() throws Exception { - try { - myTestFixture.tearDown(); - } - finally { - myTestFixture = null; - } - } - - @Override - protected void runTestRunnable(@NotNull ThrowableRunnable testRunnable) throws Throwable { - try { - super.runTestRunnable(testRunnable); - } - catch (Throwable throwable) { - if (ExceptionUtil.causedBy(throwable, HeadlessException.class)) { - printIgnoredMessage("Doesn't work in Headless environment"); - } - throw throwable; - } - } - - protected static String getRoot() { - if (SystemInfo.isWindows) return "c:"; - return ""; - } - - protected static String getEnvVar() { - if (SystemInfo.isWindows) { - return "TEMP"; - } - else if (SystemInfo.isLinux) return "HOME"; - return "TMPDIR"; - } - - protected MavenGeneralSettings getMavenGeneralSettings() { - return MavenProjectsManager.getInstance(myProject).getGeneralSettings(); - } - - protected MavenImportingSettings getMavenImporterSettings() { - return MavenProjectsManager.getInstance(myProject).getImportingSettings(); - } - - protected String getRepositoryPath() { - String path = getRepositoryFile().getPath(); - return FileUtil.toSystemIndependentName(path); - } - - protected File getRepositoryFile() { - return getMavenGeneralSettings().getEffectiveLocalRepository(); - } - - protected void setRepositoryPath(String path) { - getMavenGeneralSettings().setLocalRepository(path); - } - - protected String getProjectPath() { - return myProjectRoot.getPath(); - } - - protected String getParentPath() { - return myProjectRoot.getParent().getPath(); - } - - protected String pathFromBasedir(String relPath) { - return pathFromBasedir(myProjectRoot, relPath); - } - - protected static String pathFromBasedir(VirtualFile root, String relPath) { - return FileUtil.toSystemIndependentName(root.getPath() + "/" + relPath); - } - - protected VirtualFile createSettingsXml(String innerContent) throws IOException { - var content = createSettingsXmlContent(innerContent); - var path = Path.of(myDir.getPath(), "settings.xml"); - Files.writeString(path, content); - getMavenGeneralSettings().setUserSettingsFile(path.toString()); - return LocalFileSystem.getInstance().refreshAndFindFileByNioFile(path); - } - - protected VirtualFile updateSettingsXml(String content) throws IOException { - return updateSettingsXmlFully(createSettingsXmlContent(content)); - } - - protected VirtualFile updateSettingsXmlFully(@NonNls @Language("XML") String content) throws IOException { - File ioFile = new File(myDir, "settings.xml"); - ioFile.createNewFile(); - VirtualFile f = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ioFile); - setFileContent(f, content, true); - getMavenGeneralSettings().setUserSettingsFile(f.getPath()); - return f; - } - - private static String createSettingsXmlContent(String content) { - return "" + - content + - "\r\n"; - } - - protected void restoreSettingsFile() throws IOException { - updateSettingsXml(""); - } - - protected Module createModule(String name) { - return createModule(name, StdModuleTypes.JAVA); - } - - protected Module createModule(final String name, final ModuleType type) { - try { - return WriteCommandAction.writeCommandAction(myProject).compute(() -> { - VirtualFile f = createProjectSubFile(name + "/" + name + ".iml"); - Module module = ModuleManager.getInstance(myProject).newModule(f.getPath(), type.getId()); - PsiTestUtil.addContentRoot(module, f.getParent()); - return module; - }); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - protected VirtualFile createProjectPom(@NotNull @Language(value = "XML", prefix = "", suffix = "") String xml) { - return myProjectPom = createPomFile(myProjectRoot, xml); - } - - protected VirtualFile createModulePom(String relativePath, - @Language(value = "XML", prefix = "", suffix = "") String xml) { - return createPomFile(createProjectSubDir(relativePath), xml); - } - - protected VirtualFile createPomFile(final VirtualFile dir, - @Language(value = "XML", prefix = "", suffix = "") String xml) { - VirtualFile f = dir.findChild("pom.xml"); - if (f == null) { - try { - f = WriteAction.computeAndWait(() -> dir.createChildData(null, "pom.xml")); - } - catch (IOException e) { - throw new RuntimeException(e); - } - myAllPoms.add(f); - } - setPomContent(f, xml); - return f; - } - - @NonNls - @Language("XML") - public static String createPomXml(@NonNls @Language(value = "XML", prefix = "", suffix = "") String xml) { - return """ - - - 4.0.0 - """ + xml + ""; - } - - protected VirtualFile createProfilesXmlOldStyle(String xml) { - return createProfilesFile(myProjectRoot, xml, true); - } - - protected VirtualFile createProfilesXmlOldStyle(String relativePath, String xml) { - return createProfilesFile(createProjectSubDir(relativePath), xml, true); - } - - protected VirtualFile createProfilesXml(String xml) { - return createProfilesFile(myProjectRoot, xml, false); - } - - protected VirtualFile createProfilesXml(String relativePath, String xml) { - return createProfilesFile(createProjectSubDir(relativePath), xml, false); - } - - private static VirtualFile createProfilesFile(VirtualFile dir, String xml, boolean oldStyle) { - return createProfilesFile(dir, createValidProfiles(xml, oldStyle)); - } - - protected VirtualFile createFullProfilesXml(String content) { - return createProfilesFile(myProjectRoot, content); - } - - protected VirtualFile createFullProfilesXml(String relativePath, String content) { - return createProfilesFile(createProjectSubDir(relativePath), content); - } - - private static VirtualFile createProfilesFile(final VirtualFile dir, String content) { - VirtualFile f = dir.findChild("profiles.xml"); - if (f == null) { - try { - f = WriteAction.computeAndWait(() -> dir.createChildData(null, "profiles.xml")); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - setFileContent(f, content, true); - return f; - } - - @Language("XML") - private static String createValidProfiles(@Language("XML") String xml, boolean oldStyle) { - if (oldStyle) { - return "" + - "" + - xml + - ""; - } - return "" + - "" + - "" + - xml + - "" + - ""; - } - - protected void deleteProfilesXml() throws IOException { - WriteCommandAction.writeCommandAction(myProject).run(() -> { - VirtualFile f = myProjectRoot.findChild("profiles.xml"); - if (f != null) f.delete(this); - }); - } - - protected void createProjectSubDirs(String... relativePaths) { - for (String path : relativePaths) { - createProjectSubDir(path); - } - } - - protected VirtualFile createProjectSubDir(String relativePath) { - File f = new File(getProjectPath(), relativePath); - f.mkdirs(); - return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f); - } - - protected VirtualFile createProjectSubFile(String relativePath) throws IOException { - File f = new File(getProjectPath(), relativePath); - f.getParentFile().mkdirs(); - f.createNewFile(); - return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f); - } - - protected VirtualFile createProjectSubFile(String relativePath, String content) throws IOException { - VirtualFile file = createProjectSubFile(relativePath); - setFileContent(file, content, false); - return file; - } - - protected static void setPomContent(VirtualFile file, @Language(value = "XML", prefix = "", suffix = "") String xml) { - setFileContent(file, createPomXml(xml), true); - } - - protected static void setFileContent(final VirtualFile file, final String content, final boolean advanceStamps) { - try { - WriteAction.runAndWait(() -> { - if (advanceStamps) { - file.setBinaryContent(content.getBytes(StandardCharsets.UTF_8), -1, file.getTimeStamp() + 4000); - } - else { - file.setBinaryContent(content.getBytes(StandardCharsets.UTF_8), file.getModificationStamp(), file.getTimeStamp()); - } - }); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - protected static void assertOrderedElementsAreEqual(Collection actual, Collection expected) { - assertOrderedElementsAreEqual(actual, expected.toArray()); - } - - protected static void assertUnorderedElementsAreEqual(@NotNull Collection actual, @NotNull Collection expected) { - assertSameElements(actual, expected); - } - - protected static void assertUnorderedPathsAreEqual(Collection actual, Collection expected) { - assertEquals(new SetWithToString<>(CollectionFactory.createFilePathSet(expected)), - new SetWithToString<>(CollectionFactory.createFilePathSet(actual))); - } - - protected static void assertUnorderedElementsAreEqual(T[] actual, T... expected) { - assertUnorderedElementsAreEqual(Arrays.asList(actual), expected); - } - - protected static void assertUnorderedElementsAreEqual(Collection actual, T... expected) { - assertUnorderedElementsAreEqual(actual, Arrays.asList(expected)); - } - - protected static void assertOrderedElementsAreEqual(Collection actual, T... expected) { - String s = "\nexpected: " + Arrays.asList(expected) + "\nactual: " + new ArrayList<>(actual); - assertEquals(s, expected.length, actual.size()); - - List actualList = new ArrayList<>(actual); - for (int i = 0; i < expected.length; i++) { - T expectedElement = expected[i]; - U actualElement = actualList.get(i); - assertEquals(s, expectedElement, actualElement); - } - } - - protected static void assertContain(Collection actual, T... expected) { - List expectedList = Arrays.asList(expected); - if (actual.containsAll(expectedList)) return; - Set absent = new HashSet<>(expectedList); - absent.removeAll(actual); - fail("expected: " + expectedList + "\n" + "actual: " + actual + - "\nthis elements not present: " + absent); - } - - protected static void assertDoNotContain(List actual, T... expected) { - List actualCopy = new ArrayList<>(actual); - actualCopy.removeAll(Arrays.asList(expected)); - assertEquals(actual.toString(), actualCopy.size(), actual.size()); - } - - protected static void assertUnorderedLinesWithFile(String filePath, String expectedText) { - try { - assertSameLinesWithFile(filePath, expectedText); - } - catch (FileComparisonFailure e) { - String expected = e.getExpected(); - String actual = e.getActual(); - assertUnorderedElementsAreEqual(expected.split("\n"), actual.split("\n")); - } - } - - protected boolean ignore() { - //printIgnoredMessage(null); - return false; - } - - protected boolean hasMavenInstallation() { - boolean result = getTestMavenHome() != null; - if (!result) printIgnoredMessage("Maven installation not found"); - return result; - } - - protected static MavenServerConnector ensureConnected(MavenServerConnector connector) { - assertTrue("Connector is Dummy!", connector instanceof MavenServerConnectorImpl); - long timeout = TimeUnit.SECONDS.toMillis(10); - long start = System.currentTimeMillis(); - while (connector.getState() == MavenServerConnectorImpl.State.STARTING) { - if (System.currentTimeMillis() > start + timeout) { - throw new RuntimeException("Server connector not connected in 10 seconds"); - } - EdtTestUtil.runInEdtAndWait(() -> { - PlatformTestUtil.dispatchAllEventsInIdeEventQueue(); - }); - } - assertTrue(connector.checkConnected()); - return connector; - } - - private void printIgnoredMessage(String message) { - String toPrint = "Ignored"; - if (message != null) { - toPrint += ", because " + message; - } - toPrint += ": " + getClass().getSimpleName() + "." + getName(); - System.out.println(toPrint); - } - - protected R runWriteAction(@NotNull ThrowableComputable computable) throws E { - return WriteCommandAction.writeCommandAction(myProject).compute(computable); - } - - protected void runWriteAction(@NotNull ThrowableRunnable runnable) throws E { - WriteCommandAction.writeCommandAction(myProject).run(runnable); - } - - private static String getTestMavenHome() { - return System.getProperty("idea.maven.test.home"); - } - - protected DataContext createTestDataContext(VirtualFile pomFile) { - final DataContext defaultContext = DataManager.getInstance().getDataContext(); - return dataId -> { - if (CommonDataKeys.PROJECT.is(dataId)) { - return myProject; - } - if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { - return new VirtualFile[]{pomFile}; - } - return defaultContext.getData(dataId); - }; - } - - private static class SetWithToString extends AbstractSet { - - private final Set myDelegate; - - SetWithToString(@NotNull Set delegate) { - myDelegate = delegate; - } - - @Override - public int size() { - return myDelegate.size(); - } - - @Override - public boolean contains(Object o) { - return myDelegate.contains(o); - } - - @NotNull - @Override - public Iterator iterator() { - return myDelegate.iterator(); - } - - @Override - public boolean containsAll(Collection c) { - return myDelegate.containsAll(c); - } - - @Override - public boolean equals(Object o) { - return myDelegate.equals(o); - } - - @Override - public int hashCode() { - return myDelegate.hashCode(); - } - } -} diff --git a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.kt b/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.kt new file mode 100644 index 000000000..ad47e048d --- /dev/null +++ b/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.kt @@ -0,0 +1,789 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.maven.testFramework + +import com.intellij.diagnostic.ThreadDumper +import com.intellij.execution.wsl.WSLDistribution +import com.intellij.execution.wsl.WslDistributionManager +import com.intellij.ide.DataManager +import com.intellij.openapi.actionSystem.CommonDataKeys +import com.intellij.openapi.actionSystem.DataContext +import com.intellij.openapi.application.* +import com.intellij.openapi.command.WriteCommandAction +import com.intellij.openapi.module.Module +import com.intellij.openapi.module.ModuleManager.Companion.getInstance +import com.intellij.openapi.module.ModuleType +import com.intellij.openapi.module.StdModuleTypes +import com.intellij.openapi.progress.EmptyProgressIndicator +import com.intellij.openapi.progress.runBlockingMaybeCancellable +import com.intellij.openapi.project.Project +import com.intellij.openapi.project.ProjectManager +import com.intellij.openapi.projectRoots.JavaSdk +import com.intellij.openapi.projectRoots.ProjectJdkTable +import com.intellij.openapi.projectRoots.Sdk +import com.intellij.openapi.roots.ex.ProjectRootManagerEx +import com.intellij.openapi.util.Disposer +import com.intellij.openapi.util.SystemInfo +import com.intellij.openapi.util.ThrowableComputable +import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.vfs.LocalFileSystem +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.platform.testFramework.core.FileComparisonFailedError +import com.intellij.testFramework.* +import com.intellij.testFramework.TemporaryDirectory.Companion.generateTemporaryPath +import com.intellij.testFramework.fixtures.IdeaProjectTestFixture +import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory +import com.intellij.util.ExceptionUtil +import com.intellij.util.ThrowableRunnable +import com.intellij.util.containers.CollectionFactory +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.intellij.lang.annotations.Language +import org.jetbrains.annotations.NonNls +import org.jetbrains.idea.maven.indices.MavenIndicesManager +import org.jetbrains.idea.maven.project.* +import org.jetbrains.idea.maven.server.MavenServerConnector +import org.jetbrains.idea.maven.server.MavenServerConnectorImpl +import org.jetbrains.idea.maven.server.MavenServerManager +import org.jetbrains.idea.maven.server.RemotePathTransformerFactory +import org.jetbrains.idea.maven.utils.MavenLog +import org.jetbrains.idea.maven.utils.MavenProgressIndicator +import org.jetbrains.idea.maven.utils.MavenProgressIndicator.MavenProgressTracker +import org.jetbrains.idea.maven.utils.MavenUtil +import org.junit.AssumptionViolatedException +import java.awt.HeadlessException +import java.io.File +import java.io.IOException +import java.nio.charset.StandardCharsets +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths +import java.util.* +import java.util.concurrent.TimeUnit + +abstract class MavenTestCase : UsefulTestCase() { + protected var mavenProgressIndicator: MavenProgressIndicator? = null + private set + private var myWSLDistribution: WSLDistribution? = null + private var myPathTransformer: RemotePathTransformerFactory.Transformer? = null + + private var ourTempDir: File? = null + + private var myTestFixture: IdeaProjectTestFixture? = null + + private var myProject: Project? = null + + private var myDir: File? = null + private var myProjectRoot: VirtualFile? = null + + private var myProjectPom: VirtualFile? = null + private val myAllPoms: MutableList = ArrayList() + + val pathTransformer: RemotePathTransformerFactory.Transformer + get() = myPathTransformer!! + + var testFixture: IdeaProjectTestFixture + get() = myTestFixture!! + set(testFixture) { + myTestFixture = testFixture + } + + fun setTestFixtureNull() { + myTestFixture = null + } + + val project: Project + get() = myProject!! + + val dir: File + get() = myDir!! + + val projectRoot: VirtualFile + get() = myProjectRoot!! + + var projectPom: VirtualFile + get() = myProjectPom!! + set(projectPom) { + myProjectPom = projectPom + } + + val allPoms: List + get() = myAllPoms + + fun addPom(pom: VirtualFile) { + myAllPoms.add(pom) + } + + @Throws(Exception::class) + override fun setUp() { + assumeThisTestCanBeReusedForPreimport() + super.setUp() + + setUpFixtures() + myProject = myTestFixture!!.project + myPathTransformer = RemotePathTransformerFactory.createForProject(project) + setupWsl() + ensureTempDirCreated() + + myDir = File(ourTempDir, getTestName(false)) + FileUtil.ensureExists(myDir!!) + + + mavenProgressIndicator = MavenProgressIndicator(project, EmptyProgressIndicator(ModalityState.nonModal()), null) + + MavenWorkspaceSettingsComponent.getInstance(project).loadState(MavenWorkspacePersistedSettings()) + + val home = testMavenHome + if (home != null) { + mavenGeneralSettings.mavenHomeType = MavenInSpecificPath(home) + } + + mavenGeneralSettings.isAlwaysUpdateSnapshots = true + + MavenUtil.cleanAllRunnables() + + EdtTestUtil.runInEdtAndWait { + restoreSettingsFile() + try { + WriteAction.run { this.setUpInWriteAction() } + } + catch (e: Throwable) { + try { + tearDown() + } + catch (e1: Exception) { + e1.printStackTrace() + } + throw RuntimeException(e) + } + } + } + + protected fun assumeThisTestCanBeReusedForPreimport() { + assumeTestCanBeReusedForPreimport(this.javaClass, name) + } + + + private fun setupWsl() { + val wslMsId = System.getProperty("wsl.distribution.name") + if (wslMsId == null) return + val distributions = WslDistributionManager.getInstance().installedDistributions + if (distributions.isEmpty()) throw IllegalStateException("no WSL distributions configured!") + myWSLDistribution = distributions.firstOrNull { it.msId == wslMsId } + ?: throw IllegalStateException("Distribution $wslMsId was not found") + var jdkPath = System.getProperty("wsl.jdk.path") + if (jdkPath == null) { + jdkPath = "/usr/lib/jvm/java-11-openjdk-amd64" + } + + val wslSdk = getWslSdk(myWSLDistribution!!.getWindowsPath(jdkPath)) + WriteAction.runAndWait { ProjectRootManagerEx.getInstanceEx(myProject).projectSdk = wslSdk } + assertTrue(File(myWSLDistribution!!.getWindowsPath(myWSLDistribution!!.userHome!!)).isDirectory) + } + + protected fun waitForMavenUtilRunnablesComplete() { + PlatformTestUtil.waitWithEventsDispatching( + { "Waiting for MavenUtils runnables completed" + MavenUtil.getUncompletedRunnables() }, + { MavenUtil.noUncompletedRunnables() }, 15) + } + + @Throws(Throwable::class) + override fun runBare(testRunnable: ThrowableRunnable) { + LoggedErrorProcessor.executeWith(object : LoggedErrorProcessor() { + override fun processError(category: String, + message: String, + details: Array, + t: Throwable?): Set { + val intercept = t != null && ((t.message ?: "").contains("The network name cannot be found") && + message.contains("Couldn't read shelf information") || + "JDK annotations not found" == t.message && "#com.intellij.openapi.projectRoots.impl.JavaSdkImpl" == category) + return if (intercept) Action.NONE else Action.ALL + } + }) { super.runBare(testRunnable) } + } + + private fun getWslSdk(jdkPath: String): Sdk { + val sdk = ProjectJdkTable.getInstance().allJdks.find { jdkPath == it.homePath }!! + val jdkTable = ProjectJdkTable.getInstance() + for (existingSdk in jdkTable.allJdks) { + if (existingSdk === sdk) return sdk + } + val newSdk = JavaSdk.getInstance().createJdk("Wsl JDK For Tests", jdkPath) + WriteAction.runAndWait { jdkTable.addJdk(newSdk, testRootDisposable) } + return newSdk + } + + + @Throws(Exception::class) + override fun tearDown() { + val basePath = myProject!!.basePath + RunAll( + ThrowableRunnable { + val mavenProgressTracker = + myProject!!.getServiceIfCreated(MavenProgressTracker::class.java) + mavenProgressTracker?.assertProgressTasksCompleted() + }, + ThrowableRunnable { MavenServerManager.getInstance().closeAllConnectorsAndWait() }, + ThrowableRunnable { tearDownEmbedders() }, + ThrowableRunnable { checkAllMavenConnectorsDisposed() }, + ThrowableRunnable { myProject = null }, + ThrowableRunnable { + val defaultProject = ProjectManager.getInstance().defaultProject + val mavenIndicesManager = defaultProject.getServiceIfCreated(MavenIndicesManager::class.java) + if (mavenIndicesManager != null) { + Disposer.dispose(mavenIndicesManager) + } + }, + ThrowableRunnable { doTearDownFixtures() }, + ThrowableRunnable { deleteDirOnTearDown(myDir) }, + ThrowableRunnable { + if (myWSLDistribution != null && basePath != null) { + deleteDirOnTearDown(File(basePath)) + } + }, + ThrowableRunnable { super.tearDown() } + ).run() + } + + private fun doTearDownFixtures() { + if (ApplicationManager.getApplication().isDispatchThread) { + EdtTestUtil.runInEdtAndWait { tearDownFixtures() } + } + else { + runBlockingMaybeCancellable { + withContext(Dispatchers.EDT) { + tearDownFixtures() + } + } + } + } + + private fun tearDownEmbedders() { + val manager = MavenProjectsManager.getInstanceIfCreated(myProject!!) + if (manager == null) return + manager.embeddersManager.releaseInTests() + } + + + @Throws(IOException::class) + private fun ensureTempDirCreated() { + if (ourTempDir != null) return + + ourTempDir = if (myWSLDistribution == null) { + File(FileUtil.getTempDirectory(), "mavenTests") + } + else { + File(myWSLDistribution!!.getWindowsPath("/tmp"), "mavenTests") + } + + FileUtil.delete(ourTempDir!!) + FileUtil.ensureExists(ourTempDir!!) + } + + @Throws(Exception::class) + protected open fun setUpFixtures() { + val wslMsId = System.getProperty("wsl.distribution.name") + + val isDirectoryBasedProject = useDirectoryBasedProjectFormat() + if (wslMsId != null) { + val path = generateTemporaryPath(FileUtil.sanitizeFileName(name, false), Paths.get( + "\\\\wsl$\\$wslMsId\\tmp")) + myTestFixture = + IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(name, path, isDirectoryBasedProject).fixture + } + else { + myTestFixture = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(name, isDirectoryBasedProject).fixture + } + + myTestFixture!!.setUp() + } + + protected open fun useDirectoryBasedProjectFormat(): Boolean { + return false + } + + @Throws(Exception::class) + protected open fun setUpInWriteAction() { + val projectDir = File(myDir, "project") + projectDir.mkdirs() + myProjectRoot = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(projectDir) + } + + @Throws(Exception::class) + protected open fun tearDownFixtures() { + try { + myTestFixture!!.tearDown() + } + finally { + myTestFixture = null + } + } + + @Throws(Throwable::class) + override fun runTestRunnable(testRunnable: ThrowableRunnable) { + try { + super.runTestRunnable(testRunnable) + } + catch (throwable: Throwable) { + if (ExceptionUtil.causedBy(throwable, HeadlessException::class.java)) { + printIgnoredMessage("Doesn't work in Headless environment") + } + throw throwable + } + } + + protected val mavenGeneralSettings: MavenGeneralSettings + get() = MavenProjectsManager.getInstance(myProject!!).generalSettings + + protected val mavenImporterSettings: MavenImportingSettings + get() = MavenProjectsManager.getInstance(myProject!!).importingSettings + + protected var repositoryPath: String? + get() { + val path = repositoryFile.path + return FileUtil.toSystemIndependentName(path) + } + protected set(path) { + mavenGeneralSettings.setLocalRepository(path) + } + + protected val repositoryFile: File + get() = mavenGeneralSettings.effectiveLocalRepository + + protected val projectPath: String + get() = myProjectRoot!!.path + + protected val parentPath: String + get() = myProjectRoot!!.parent.path + + protected fun pathFromBasedir(relPath: String): String { + return pathFromBasedir(myProjectRoot, relPath) + } + + @Throws(IOException::class) + protected fun createSettingsXml(innerContent: String): VirtualFile { + val content = createSettingsXmlContent(innerContent) + val path = Path.of(myDir!!.path, "settings.xml") + Files.writeString(path, content) + mavenGeneralSettings.setUserSettingsFile(path.toString()) + return LocalFileSystem.getInstance().refreshAndFindFileByNioFile(path)!! + } + + @Throws(IOException::class) + protected fun updateSettingsXml(content: String): VirtualFile { + return updateSettingsXmlFully(createSettingsXmlContent(content)) + } + + @Throws(IOException::class) + protected fun updateSettingsXmlFully(@Language("XML") content: @NonNls String?): VirtualFile { + val ioFile = File(myDir, "settings.xml") + ioFile.createNewFile() + val f = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ioFile) + setFileContent(f, content, true) + mavenGeneralSettings.setUserSettingsFile(f!!.path) + return f + } + + @Throws(IOException::class) + protected fun restoreSettingsFile() { + updateSettingsXml("") + } + + protected fun createModule(name: String, type: ModuleType<*>): Module { + try { + return WriteCommandAction.writeCommandAction(myProject).compute { + val f = createProjectSubFile("$name/$name.iml") + val module = getInstance(myProject!!).newModule(f.path, type.id) + PsiTestUtil.addContentRoot(module, f.parent) + module + } + } + catch (e: IOException) { + throw RuntimeException(e) + } + } + + protected fun createModule(name: String): Module = createModule(name, StdModuleTypes.JAVA) + + + protected fun createProjectPom(@Language(value = "XML", prefix = "", suffix = "") xml: String): VirtualFile { + return createPomFile(myProjectRoot, xml).also { myProjectPom = it } + } + + protected fun createModulePom(relativePath: String, + @Language(value = "XML", prefix = "", suffix = "") xml: String?): VirtualFile { + return createPomFile(createProjectSubDir(relativePath), xml) + } + + protected fun createPomFile(dir: VirtualFile?, + @Language(value = "XML", prefix = "", suffix = "") xml: String?): VirtualFile { + return createPomFile(dir, "pom.xml", xml) + } + + protected fun createPomFile(dir: VirtualFile?, fileName: String? = "pom.xml", + @Language(value = "XML", prefix = "", suffix = "") xml: String?): VirtualFile { + val pomName = fileName ?: "pom.xml" + var f = dir!!.findChild(pomName) + if (f == null) { + try { + f = WriteAction.computeAndWait { dir.createChildData(null, pomName) } + } + catch (e: IOException) { + throw RuntimeException(e) + } + myAllPoms.add(f) + } + setPomContent(f, xml) + return f!! + } + + protected fun createProfilesXmlOldStyle(xml: String): VirtualFile { + return createProfilesFile(myProjectRoot, xml, true) + } + + protected fun createProfilesXmlOldStyle(relativePath: String, xml: String): VirtualFile { + return createProfilesFile(createProjectSubDir(relativePath), xml, true) + } + + protected fun createProfilesXml(xml: String): VirtualFile { + return createProfilesFile(myProjectRoot, xml, false) + } + + protected fun createProfilesXml(relativePath: String, xml: String): VirtualFile { + return createProfilesFile(createProjectSubDir(relativePath), xml, false) + } + + protected fun createFullProfilesXml(content: String): VirtualFile { + return createProfilesFile(myProjectRoot, content) + } + + protected fun createFullProfilesXml(relativePath: String, content: String): VirtualFile { + return createProfilesFile(createProjectSubDir(relativePath), content) + } + + @Throws(IOException::class) + protected fun deleteProfilesXml() { + WriteCommandAction.writeCommandAction(myProject).run { + val f = myProjectRoot!!.findChild("profiles.xml") + f?.delete(this) + } + } + + protected fun createProjectSubDirs(vararg relativePaths: String) { + for (path in relativePaths) { + createProjectSubDir(path) + } + } + + protected fun createProjectSubDir(relativePath: String): VirtualFile { + val f = File(projectPath, relativePath) + f.mkdirs() + return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f)!! + } + + @Throws(IOException::class) + protected fun createProjectSubFile(relativePath: String): VirtualFile { + val f = File(projectPath, relativePath) + f.parentFile.mkdirs() + f.createNewFile() + return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f)!! + } + + @Throws(IOException::class) + protected fun createProjectSubFile(relativePath: String, content: String): VirtualFile { + val file = createProjectSubFile(relativePath) + setFileContent(file, content, false) + return file + } + + protected fun ignore(): Boolean { + //printIgnoredMessage(null); + return false + } + + protected fun hasMavenInstallation(): Boolean { + val result = testMavenHome != null + if (!result) printIgnoredMessage("Maven installation not found") + return result + } + + private fun printIgnoredMessage(message: String?) { + var toPrint = "Ignored" + if (message != null) { + toPrint += ", because $message" + } + toPrint += ": " + javaClass.simpleName + "." + name + println(toPrint) + } + + protected fun runWriteAction(computable: ThrowableComputable): R { + return WriteCommandAction.writeCommandAction(myProject).compute(computable) + } + + protected fun runWriteAction(runnable: ThrowableRunnable) { + WriteCommandAction.writeCommandAction(myProject).run(runnable) + } + + protected fun createTestDataContext(pomFile: VirtualFile): DataContext { + val defaultContext = DataManager.getInstance().dataContext + return DataContext { dataId: String? -> + if (CommonDataKeys.PROJECT.`is`(dataId)) { + return@DataContext myProject + } + if (CommonDataKeys.VIRTUAL_FILE_ARRAY.`is`(dataId)) { + return@DataContext arrayOf(pomFile) + } + defaultContext.getData(dataId!!) + } + } + + protected val MAVEN_COMPILER_PROPERTIES: String = """ + + UTF-8 + 11 + 11 + + + """.trimIndent() + + private fun checkAllMavenConnectorsDisposed() { + val connectors = MavenServerManager.getInstance().getAllConnectors() + if (!connectors.isEmpty()) { + MavenLog.LOG.warn("Connectors not empty, printing thread dump") + MavenLog.LOG.warn("===============================================") + MavenLog.LOG.warn(ThreadDumper.getThreadDumpInfo(ThreadDumper.getThreadInfos(), false).rawDump) + MavenLog.LOG.warn("===============================================") + fail("all maven connectors should be disposed but got $connectors") + } + } + + protected fun deleteDirOnTearDown(dir: File?) { + FileUtil.delete(dir!!) + // cannot use reliably the result of the com.intellij.openapi.util.io.FileUtil.delete() method + // because com.intellij.openapi.util.io.FileUtilRt.deleteRecursivelyNIO() does not honor this contract + if (dir.exists()) { + System.err.println("Cannot delete $dir") + //printDirectoryContent(myDir); + dir.deleteOnExit() + } + } + + private fun printDirectoryContent(dir: File) { + val files = dir.listFiles() + if (files == null) return + + for (file in files) { + println(file.absolutePath) + + if (file.isDirectory) { + printDirectoryContent(file) + } + } + } + + protected val root: String + get() { + if (SystemInfo.isWindows) return "c:" + return "" + } + + protected val envVar: String + get() { + if (SystemInfo.isWindows) { + return "TEMP" + } + else if (SystemInfo.isLinux) return "HOME" + return "TMPDIR" + } + + protected fun pathFromBasedir(root: VirtualFile?, relPath: String): String { + return FileUtil.toSystemIndependentName(root!!.path + "/" + relPath) + } + + private fun createSettingsXmlContent(content: String): String { + return "" + + content + + "\r\n" + } + + private fun createProfilesFile(dir: VirtualFile?, xml: String, oldStyle: Boolean): VirtualFile { + return createProfilesFile(dir, createValidProfiles(xml, oldStyle)) + } + + private fun createProfilesFile(dir: VirtualFile?, content: String): VirtualFile { + var f = dir!!.findChild("profiles.xml") + if (f == null) { + try { + f = WriteAction.computeAndWait { dir.createChildData(null, "profiles.xml") } + } + catch (e: IOException) { + throw RuntimeException(e) + } + } + setFileContent(f, content, true) + return f!! + } + + @Language("XML") + private fun createValidProfiles(@Language("XML") xml: String, oldStyle: Boolean): String { + if (oldStyle) { + return "" + + "" + + xml + + "" + } + return "" + + "" + + "" + + xml + + "" + + "" + } + + protected fun setPomContent(file: VirtualFile?, @Language(value = "XML", prefix = "", suffix = "") xml: String?) { + setFileContent(file, createPomXml(xml), true) + } + + protected fun setFileContent(file: VirtualFile?, content: String?, advanceStamps: Boolean) { + try { + WriteAction.runAndWait { + doSetFileContent(file!!, content!!, advanceStamps) + } + } + catch (e: IOException) { + throw RuntimeException(e) + } + } + + protected suspend fun setPomContentAsync(file: VirtualFile, @Language(value = "XML", prefix = "", suffix = "") xml: String) { + setFileContentAsync(file, createPomXml(xml), true) + } + + protected suspend fun setFileContentAsync(file: VirtualFile, content: String, advanceStamps: Boolean) { + writeAction { + doSetFileContent(file, content, advanceStamps) + } + } + + private fun doSetFileContent(file: VirtualFile, content: String, advanceStamps: Boolean) { + val bytes = content.toByteArray(StandardCharsets.UTF_8) + val newModificationStamp = if (advanceStamps) -1 else file.modificationStamp + val newTimeStamp = if (advanceStamps) file.timeStamp + 4000 else file.timeStamp + MavenLog.LOG.debug("Set file content, modification stamp $newModificationStamp, time stamp $newTimeStamp, file $file") + file.setBinaryContent(bytes, newModificationStamp, newTimeStamp) + } + + protected fun assertOrderedElementsAreEqual(actual: Collection, expected: List) { + val s = "\nexpected: $expected\nactual: $actual" + assertEquals(s, expected.size, actual.size) + + val actualList: List = ArrayList(actual) + for (i in expected.indices) { + val expectedElement = expected[i] + val actualElement = actualList[i] + assertEquals(s, expectedElement, actualElement) + } + } + + protected fun assertOrderedElementsAreEqual(actual: Collection, vararg expected: T) { + assertOrderedElementsAreEqual(actual, expected.toList()) + } + + protected fun assertUnorderedElementsAreEqual(actual: Collection, expected: Collection) { + assertSameElements(actual, expected) + } + + protected fun assertUnorderedPathsAreEqual(actual: Collection, expected: Collection) { + assertEquals((CollectionFactory.createFilePathSet(expected)), (CollectionFactory.createFilePathSet(actual))) + } + + protected fun assertUnorderedElementsAreEqual(actual: Array, vararg expected: T) { + assertUnorderedElementsAreEqual(actual.toList(), *expected) + } + + protected fun assertUnorderedElementsAreEqual(actual: Collection, vararg expected: T) { + assertUnorderedElementsAreEqual(actual, expected.toList()) + } + + protected fun assertContain(actual: Collection, vararg expected: T) { + val expectedList = expected.toList() + if (actual.containsAll(expectedList)) return + val absent: MutableSet = HashSet(expectedList) + absent.removeAll(actual.toSet()) + fail(""" + expected: $expectedList + actual: $actual + this elements not present: $absent + """.trimIndent()) + } + + protected fun assertDoNotContain(actual: List, vararg expected: T) { + val actualCopy: MutableList = ArrayList(actual) + actualCopy.removeAll(expected.toSet()) + assertEquals(actual.toString(), actualCopy.size, actual.size) + } + + protected fun assertUnorderedLinesWithFile(filePath: String?, expectedText: String?) { + try { + assertSameLinesWithFile(filePath!!, expectedText!!) + } + catch (e: FileComparisonFailedError) { + val expected: String = e.expectedStringPresentation + val actual: String = e.actualStringPresentation + assertUnorderedElementsAreEqual(expected.split("\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray(), + *actual.split("\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()) + } + } + + protected fun ensureConnected(connector: MavenServerConnector): MavenServerConnector { + assertTrue("Connector is Dummy!", connector is MavenServerConnectorImpl) + val timeout = TimeUnit.SECONDS.toMillis(10) + val start = System.currentTimeMillis() + while (connector.state == MavenServerConnector.State.STARTING) { + if (System.currentTimeMillis() > start + timeout) { + throw RuntimeException("Server connector not connected in 10 seconds") + } + EdtTestUtil.runInEdtAndWait { + PlatformTestUtil.dispatchAllEventsInIdeEventQueue() + } + } + assertTrue(connector.checkConnected()) + return connector + } + + private val testMavenHome: String? + get() = System.getProperty("idea.maven.test.home") + + companion object { + val preimportTestMode: Boolean = java.lang.Boolean.getBoolean("MAVEN_TEST_PREIMPORT") + + @Language("XML") + fun createPomXml(@Language(value = "XML", prefix = "", suffix = "") xml: @NonNls String?): @NonNls String { + return """ + + + 4.0.0 + + """.trimIndent() + xml + "" + } + + fun assumeTestCanBeReusedForPreimport(aClass: Class<*>, testName: String) { + if (!preimportTestMode) return + try { + var annotation = aClass.getDeclaredAnnotation(InstantImportCompatible::class.java) + if (annotation == null) { + val testMethod = aClass.getMethod(testName) + annotation = testMethod.getDeclaredAnnotation(InstantImportCompatible::class.java) + if (annotation == null) { + throw AssumptionViolatedException( + "No InstantImportCompatible annotation present on class and method in pre-import testing mode, skipping test") + } + } + } + catch (ignore: NoSuchMethodException) { + } + } + + } +} diff --git a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/NullMavenConsole.java b/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/NullMavenConsole.java deleted file mode 100644 index 329d2a42e..000000000 --- a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/NullMavenConsole.java +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.maven.testFramework; - -import com.intellij.execution.process.ProcessHandler; -import org.jetbrains.idea.maven.execution.MavenExecutionOptions; -import org.jetbrains.idea.maven.project.MavenConsole; - -public class NullMavenConsole extends MavenConsole { - public NullMavenConsole() { - super(MavenExecutionOptions.LoggingLevel.DISABLED, false); - } - - @Override - public boolean canPause() { - return false; - } - - @Override - public boolean isOutputPaused() { - return false; - } - - @Override - public void setOutputPaused(boolean outputPaused) { - } - - @Override - public void attachToProcess(ProcessHandler processHandler) { - } - - @Override - protected void doPrint(String text, MavenConsole.OutputType type) { - } -} diff --git a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/utils/MavenImportingTestCase.kt b/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/utils/MavenImportingTestCase.kt deleted file mode 100644 index 0be94270d..000000000 --- a/intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/utils/MavenImportingTestCase.kt +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.maven.testFramework.utils - -import com.intellij.openapi.vfs.VirtualFile -import kotlinx.coroutines.launch -import org.jetbrains.idea.maven.project.MavenProject -import org.jetbrains.idea.maven.project.MavenProjectChanges -import org.jetbrains.idea.maven.project.MavenProjectsManager -import org.jetbrains.idea.maven.utils.MavenCoroutineScopeProvider - -fun importMavenProjects(mavenProjectsManager: MavenProjectsManager) = importMavenProjects(mavenProjectsManager, emptyList()) - -fun importMavenProjects(mavenProjectsManager: MavenProjectsManager, projectFiles: List) { - val toImport= mutableMapOf() - for (each in projectFiles) { - val project = mavenProjectsManager.findProject(each) - if (project != null) { - toImport[project] = MavenProjectChanges.ALL - } - } - val cs = MavenCoroutineScopeProvider.getCoroutineScope(mavenProjectsManager.project) - cs.launch { mavenProjectsManager.importMavenProjects(toImport) } -} - - diff --git a/pull_intellij_tests.sh b/pull_intellij_tests.sh index 8f1131901..7756c6fc5 100755 --- a/pull_intellij_tests.sh +++ b/pull_intellij_tests.sh @@ -4,18 +4,18 @@ rm -rf intellij-community-tmp 2>/dev/null git clone --single-branch --depth 1 --branch $IDEA_VERSION https://github.com/JetBrains/intellij-community intellij-community-tmp rm -rf intellij-community 2>/dev/null mkdir -p intellij-community/java/testFramework/src/com/intellij/compiler/artifacts -cp -p intellij-community-tmp/java/testFramework/src/com/intellij/compiler/artifacts/ArtifactsTestUtil.java intellij-community/java/testFramework/src/com/intellij/compiler/artifacts +cp intellij-community-tmp/java/testFramework/src/com/intellij/compiler/artifacts/ArtifactsTestUtil.java intellij-community/java/testFramework/src/com/intellij/compiler/artifacts mkdir -p intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions -cp -p intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/Assertions.java intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions -cp -p intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/JdomAssert.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions -cp -p intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/StringAssertEx.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions -cp -p intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/snapshot.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions -cp -p intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/PathAssertEx.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions +cp intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/Assertions.java intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions +cp intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/JdomAssert.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions +cp intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/StringAssertEx.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions +cp intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/snapshot.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions +cp intellij-community-tmp/platform/testFramework/extensions/src/com/intellij/testFramework/assertions/PathAssertEx.kt intellij-community/platform/testFramework/extensions/src/com/intellij/testFramework/assertions mkdir -p intellij-community/platform/lang-impl/testSources/com/intellij/openapi/roots/ui/configuration cp intellij-community-tmp/platform/lang-impl/testSources/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt intellij-community/platform/lang-impl/testSources/com/intellij/openapi/roots/ui/configuration mkdir -p intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework -cp -p intellij-community-tmp/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework -cp -p intellij-community-tmp/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemTestCase.java intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework +cp intellij-community-tmp/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemImportingTestCase.java intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework +cp intellij-community-tmp/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework/ExternalSystemTestCase.java intellij-community/platform/external-system-api/testFramework/src/com/intellij/platform/externalSystem/testFramework mkdir -p intellij-community/platform/external-system-impl/testSrc/com/intellij/openapi/externalSystem/service/execution cp intellij-community-tmp/platform/external-system-impl/testSrc/com/intellij/openapi/externalSystem/service/execution/TestUnknownSdkResolver.kt intellij-community/platform/external-system-impl/testSrc/com/intellij/openapi/externalSystem/service/execution mkdir -p intellij-community/platform/external-system-impl/testSrc/com/intellij/openapi/externalSystem/test @@ -26,21 +26,29 @@ cp intellij-community-tmp/platform/external-system-impl/testSrc/com/intellij/ope mkdir -p intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework cp intellij-community-tmp/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenImportingTestCase.kt intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework cp intellij-community-tmp/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCaseUtil.kt intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework -cp intellij-community-tmp/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.java intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework -cp intellij-community-tmp/plugins/maven/testFramework/src/com/intellij/maven/testFramework/NullMavenConsole.java intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework +cp intellij-community-tmp/plugins/maven/testFramework/src/com/intellij/maven/testFramework/MavenTestCase.kt intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework cp intellij-community-tmp/plugins/maven/testFramework/src/com/intellij/maven/testFramework/InstantImportCompatible.java intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework -mkdir -p intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/utils -cp intellij-community-tmp/plugins/maven/testFramework/src/com/intellij/maven/testFramework/utils/MavenImportingTestCase.kt intellij-community/plugins/maven/testFramework/src/com/intellij/maven/testFramework/utils mkdir -p intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing -cp -p intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleBuildScriptBuilder.kt intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing -cp -p intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing +cp intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleBuildScriptBuilder.kt intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing +cp intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing +cp intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/TestGradleSettingsScriptHelper.kt intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing +mkdir -p intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/ +cp intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGradleBuildScriptBuilder.kt intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/ +cp intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestGroovyDslGradleBuildScriptBuilder.kt intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/ +cp intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/TestKotlinDslGradleBuildScriptBuilder.kt intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/util/buildscript/ +mkdir -p intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/ +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/VersionMatcherRule.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/GradleJvmResolver.kt intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/JavaVersionRestriction.kt intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/TargetJavaVersionWatcher.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling mkdir -p intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder -cp -p intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder -cp -p intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/VersionMatcherRule.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder mkdir -p intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation -cp -p intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetVersions.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetVersions.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation/TargetJavaVersion.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/annotation mkdir -p intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util/ -cp -p intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util/VersionMatcher.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util -mkdir -p intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/fixtures/impl/ -cp -p intellij-community-tmp/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/fixtures/impl/graldeJvm/GradleJvmResolver.kt intellij-community/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testFramework/fixtures/impl/ +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util/VersionMatcher.java intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util +cp intellij-community-tmp/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util/JavaVersionMatcher.kt intellij-community/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/util + + echo "Done!" \ No newline at end of file diff --git a/src/test/java/com/redhat/devtools/intellij/MavenEditorTest.java b/src/test/java/com/redhat/devtools/intellij/MavenEditorTest.java index cebcf37b9..83db12e9a 100644 --- a/src/test/java/com/redhat/devtools/intellij/MavenEditorTest.java +++ b/src/test/java/com/redhat/devtools/intellij/MavenEditorTest.java @@ -18,6 +18,6 @@ public abstract class MavenEditorTest extends MavenModuleImportingTestCase { @Override protected void setUp() throws Exception { super.setUp(); - codeInsightTestFixture = (CodeInsightTestFixture) myTestFixture; + codeInsightTestFixture = (CodeInsightTestFixture) getTestFixture(); } } diff --git a/src/test/java/com/redhat/devtools/intellij/MavenModuleImportingTestCase.java b/src/test/java/com/redhat/devtools/intellij/MavenModuleImportingTestCase.java index 1fba57182..c5bae61dc 100644 --- a/src/test/java/com/redhat/devtools/intellij/MavenModuleImportingTestCase.java +++ b/src/test/java/com/redhat/devtools/intellij/MavenModuleImportingTestCase.java @@ -11,6 +11,7 @@ package com.redhat.devtools.intellij; import com.intellij.maven.testFramework.MavenImportingTestCase; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; @@ -18,15 +19,19 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; +import com.intellij.testFramework.IndexingTestUtil; import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; import com.intellij.testFramework.fixtures.*; import com.redhat.devtools.intellij.lsp4mp4ij.psi.core.utils.IPsiUtils; import com.redhat.devtools.intellij.lsp4mp4ij.psi.internal.core.ls.PsiUtilsLSImpl; import kotlin.coroutines.EmptyCoroutineContext; import kotlinx.coroutines.BuildersKt; +import kotlinx.coroutines.CoroutineScopeKt; +import kotlinx.coroutines.future.FutureKt; import org.apache.commons.io.FileUtils; import java.io.File; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -39,9 +44,10 @@ protected void setUpFixtures() throws Exception { myProjectBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName()); final JavaTestFixtureFactory factory = JavaTestFixtureFactory.getFixtureFactory(); myProjectBuilder.addModule(JavaModuleFixtureBuilder.class); - myTestFixture = factory.createCodeInsightFixture(myProjectBuilder.getFixture()); - myTestFixture.setUp(); - LanguageLevelProjectExtension.getInstance(myTestFixture.getProject()).setLanguageLevel(LanguageLevel.JDK_17); + IdeaProjectTestFixture myFixture = factory.createCodeInsightFixture(myProjectBuilder.getFixture()); + setTestFixture(myFixture); + myFixture.setUp(); + LanguageLevelProjectExtension.getInstance(myFixture.getProject()).setLanguageLevel(LanguageLevel.JDK_17); } private static int counter = 0; @@ -53,22 +59,25 @@ protected void setUpFixtures() throws Exception { * @return the created modules */ protected List createMavenModules(List projectDirs) throws Exception { - Project project = myTestFixture.getProject(); + Project project = getTestFixture().getProject(); + List pomFiles = new ArrayList<>(); for(File projectDir : projectDirs) { File moduleDir = new File(project.getBasePath(), projectDir.getName() + counter++); FileUtils.copyDirectory(projectDir, moduleDir); - VirtualFile pomFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(moduleDir).findFileByRelativePath("pom.xml"); - BuildersKt.runBlocking( - EmptyCoroutineContext.INSTANCE, - (scope, continuation) -> importProjectAsync(pomFile,continuation) - ); + VirtualFile pomFile = LocalFileSystem.getInstance().refreshAndFindFileByNioFile(moduleDir.toPath()).findFileByRelativePath("pom.xml"); + pomFiles.add(pomFile); } + // Calling the non-suspending importProjects method instead of the Kotlin suspending function + // importProjectsAsync(file: VirtualFile) to prevent blocking unit tests starting from IntelliJ version 2024.2. + importProjects(pomFiles.toArray(VirtualFile[]::new)); + Module[] modules = ModuleManager.getInstance(project).getModules(); for(Module module : modules) { setupJdkForModule(module.getName()); } - return Arrays.stream(modules).skip(1).toList(); + + return Arrays.stream(modules).toList(); } protected Module createMavenModule(File projectDir) throws Exception { @@ -84,22 +93,22 @@ protected Module createMavenModule(File projectDir) throws Exception { * @return the created module */ protected Module createMavenModule(String name, String xml) throws Exception { - Module module = myTestFixture.getModule(); + Module module = getTestFixture().getModule(); File moduleDir = new File(module.getModuleFilePath()).getParentFile(); VirtualFile pomFile = createPomFile(LocalFileSystem.getInstance().findFileByIoFile(moduleDir), xml); - BuildersKt.runBlocking( - EmptyCoroutineContext.INSTANCE, - (scope, continuation) -> importProjectAsync(pomFile,continuation) - ); - Module[] modules = ModuleManager.getInstance(myTestFixture.getProject()).getModules(); + List pomFiles = new ArrayList<>(); + pomFiles.add(pomFile); + importProjects(pomFiles.toArray(VirtualFile[]::new)); + Module[] modules = ModuleManager.getInstance(getTestFixture().getProject()).getModules(); if (modules.length > 0) { module = modules[modules.length - 1]; setupJdkForModule(module.getName()); } + IndexingTestUtil.waitUntilIndexesAreReady(getTestFixture().getProject()); return module; } protected IPsiUtils getJDTUtils() { - return PsiUtilsLSImpl.getInstance(myProject); + return PsiUtilsLSImpl.getInstance(getProject()); } } diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/GradlePropertiesManagerLocationUsingVertxTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/GradlePropertiesManagerLocationUsingVertxTest.java index 708f36933..8b84b2873 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/GradlePropertiesManagerLocationUsingVertxTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/GradlePropertiesManagerLocationUsingVertxTest.java @@ -11,6 +11,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.EmptyProgressIndicator; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.GradleTestCase; import com.redhat.devtools.intellij.lsp4mp4ij.psi.internal.core.ls.PsiUtilsLSImpl; import com.redhat.devtools.intellij.quarkus.QuarkusDeploymentSupport; @@ -40,6 +41,7 @@ public void setUp() throws Exception { public void testUsingVertxTest() { Module javaProject = getModule("using-vertx.main"); QuarkusDeploymentSupport.getInstance(javaProject.getProject()).updateClasspathWithQuarkusDeployment(javaProject, new EmptyProgressIndicator()); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); // Test with JAR // quarkus.datasource.url diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/LSP4MPMavenModuleImportingTestCase.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/LSP4MPMavenModuleImportingTestCase.java index 862ab2e09..2740ec386 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/LSP4MPMavenModuleImportingTestCase.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/LSP4MPMavenModuleImportingTestCase.java @@ -14,6 +14,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.EmptyProgressIndicator; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.MavenModuleImportingTestCase; import com.redhat.devtools.intellij.quarkus.QuarkusDeploymentSupport; @@ -31,8 +32,9 @@ protected Module loadMavenProject(String projectName) throws Exception { protected Module loadMavenProject(String projectName, boolean collectAndAddQuarkusDeploymentDependencies) throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/" + projectName)); if(collectAndAddQuarkusDeploymentDependencies) { - QuarkusDeploymentSupport.getInstance(myTestFixture.getProject()).updateClasspathWithQuarkusDeployment(module, new EmptyProgressIndicator()); + QuarkusDeploymentSupport.getInstance(getTestFixture().getProject()).updateClasspathWithQuarkusDeployment(module, new EmptyProgressIndicator()); } + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); return module; } } diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/MicroProfileAssert.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/MicroProfileAssert.java index 4ef1865a2..bca2b9c0b 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/MicroProfileAssert.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/MicroProfileAssert.java @@ -18,6 +18,7 @@ import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDocumentManager; +import com.intellij.testFramework.IndexingTestUtil; import org.eclipse.lsp4j.Hover; import org.eclipse.lsp4j.MarkupContent; import org.eclipse.lsp4j.Position; @@ -269,11 +270,12 @@ public static void saveFile(String name, String content, Module javaProject, boo // second. // Here we wait for > 1s to be sure that call of Files.getLastModifiedTime will // work. - try { + /*try { Thread.sleep(1050); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - } + }*/ + IndexingTestUtil.waitUntilIndexesAreReady(javaProject.getProject()); WriteAction.runAndWait(() -> { try { VirtualFile folder = null; diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerForJavaTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerForJavaTest.java index ecffc3c72..9dd662c20 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerForJavaTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerForJavaTest.java @@ -42,7 +42,7 @@ public void testFileInfoWithPackage() throws Exception { MicroProfileJavaFileInfoParams params = new MicroProfileJavaFileInfoParams(); String javaFileUri = getJavaFileUri("src/main/java/org/acme/config/GreetingResource.java"); params.setUri(javaFileUri); - JavaFileInfo javaFileInfo = PropertiesManagerForJava.getInstance().fileInfo(params, PsiUtilsLSImpl.getInstance(myProject)); + JavaFileInfo javaFileInfo = PropertiesManagerForJava.getInstance().fileInfo(params, PsiUtilsLSImpl.getInstance(getProject())); assertNotNull(javaFileInfo); assertEquals("org.acme.config", javaFileInfo.getPackageName()); } @@ -53,7 +53,7 @@ public void testFileInfoWithoutPackage() throws Exception { MicroProfileJavaFileInfoParams params = new MicroProfileJavaFileInfoParams(); params.setUri(javaFileUri); - JavaFileInfo javaFileInfo = PropertiesManagerForJava.getInstance().fileInfo(params, PsiUtilsLSImpl.getInstance(myProject)); + JavaFileInfo javaFileInfo = PropertiesManagerForJava.getInstance().fileInfo(params, PsiUtilsLSImpl.getInstance(getProject())); assertNotNull(javaFileInfo); assertEquals("", javaFileInfo.getPackageName()); } @@ -64,7 +64,7 @@ public void testFileInfoNull() throws Exception { MicroProfileJavaFileInfoParams params = new MicroProfileJavaFileInfoParams(); params.setUri(javaFileUri); - JavaFileInfo javaFileInfo = PropertiesManagerForJava.getInstance().fileInfo(params, PsiUtilsLSImpl.getInstance(myProject)); + JavaFileInfo javaFileInfo = PropertiesManagerForJava.getInstance().fileInfo(params, PsiUtilsLSImpl.getInstance(getProject())); assertNull(javaFileInfo); } } diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerLocationTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerLocationTest.java index 13aaebd39..092399800 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerLocationTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerLocationTest.java @@ -10,7 +10,7 @@ package com.redhat.devtools.intellij.lsp4mp4ij.psi.core; import com.intellij.openapi.module.Module; -import com.redhat.devtools.intellij.MavenModuleImportingTestCase; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.lsp4mp4ij.psi.internal.core.ls.PsiUtilsLSImpl; import org.eclipse.lsp4j.Location; import org.junit.Assert; @@ -33,19 +33,19 @@ public void testUsingVertxTest() throws Exception { // Test with JAR // quarkus.datasource.url Location location = PropertiesManager.getInstance().findPropertyLocation(javaProject, - "io.quarkus.reactive.pg.client.runtime.DataSourceConfig", "url", null, PsiUtilsLSImpl.getInstance(myProject)); + "io.quarkus.reactive.pg.client.runtime.DataSourceConfig", "url", null, PsiUtilsLSImpl.getInstance(getProject())); Assert.assertNotNull("Definition from JAR", location); // Test with deployment JAR // quarkus.arc.auto-inject-fields location = PropertiesManager.getInstance().findPropertyLocation(javaProject, - "io.quarkus.arc.deployment.ArcConfig", "autoInjectFields", null, PsiUtilsLSImpl.getInstance(myProject)); + "io.quarkus.arc.deployment.ArcConfig", "autoInjectFields", null, PsiUtilsLSImpl.getInstance(getProject())); Assert.assertNotNull("Definition deployment from JAR", location); // Test with Java sources // myapp.schema.create location = PropertiesManager.getInstance().findPropertyLocation(javaProject, "org.acme.vertx.FruitResource", - "schemaCreate", null, PsiUtilsLSImpl.getInstance(myProject)); + "schemaCreate", null, PsiUtilsLSImpl.getInstance(getProject())); Assert.assertNotNull("Definition from Java Sources", location); } @@ -57,7 +57,7 @@ public void testConfigPropertiesTest() throws Exception { // greetingInterface.name Location location = PropertiesManager.getInstance().findPropertyLocation(javaProject, "org.acme.config.IGreetingConfiguration", null, "getName()QOptional;", - PsiUtilsLSImpl.getInstance(myProject)); + PsiUtilsLSImpl.getInstance(getProject())); Assert.assertNotNull("Definition from IGreetingConfiguration#getName() method", location); } @@ -70,7 +70,7 @@ public void testConfigPropertiesMethodTest() throws Exception { // greeting.constructor.message Location location = PropertiesManager.getInstance().findPropertyLocation(javaProject, "org.acme.config.GreetingMethodResource", null, "setMessage(QString;)V", - PsiUtilsLSImpl.getInstance(myProject)); + PsiUtilsLSImpl.getInstance(getProject())); Assert.assertNotNull("Definition from GreetingMethodResource#setMessage() method", location); } @@ -84,7 +84,7 @@ public void testConfigPropertiesConstructorTest() throws Exception { Location location = PropertiesManager.getInstance().findPropertyLocation(javaProject, "org.acme.config.GreetingConstructorResource", null, "GreetingConstructorResource(QString;QString;QOptional;)V", - PsiUtilsLSImpl.getInstance(myProject)); + PsiUtilsLSImpl.getInstance(getProject())); Assert.assertNotNull("Definition from GreetingConstructorResource constructor", location); } diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerTest.java index a8575cd51..936fb4402 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/PropertiesManagerTest.java @@ -52,7 +52,7 @@ public void setUp() throws Exception { } public void testQuarkusCoreDeploymentProperties() { - MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); MavenProjectsManager myProjectsManager = MavenProjectsManager.getInstance(module.getProject()); File quarkusCoreJARFile = MavenArtifactUtil.getArtifactFile(myProjectsManager.findProject(module).getLocalRepository(), new MavenId("io.quarkus:quarkus-core-deployment:0.24.0"), "jar").toFile(); assertNotNull("Test existing of quarkus-core*.jar", quarkusCoreJARFile); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDefinitionTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDefinitionTest.java index d9c28d7ba..add84c76b 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDefinitionTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDefinitionTest.java @@ -44,41 +44,41 @@ public void testConfigPropertyNameDefinition() throws Exception { javaProject); // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaDefinitions(p(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaDefinitions(p(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // def(r(14, 28, 44), propertiesFileUri, "greeting.message")); // Test left edge // Position(14, 28) is the character after the | symbol: // @ConfigProperty(name = "|greeting.message") - assertJavaDefinitions(p(14, 28), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaDefinitions(p(14, 28), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // def(r(14, 28, 44), propertiesFileUri, "greeting.message")); // Test right edge // Position(14, 43) is the character after the | symbol: // @ConfigProperty(name = "greeting.messag|e") - assertJavaDefinitions(p(14, 43), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaDefinitions(p(14, 43), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // def(r(14, 28, 44), propertiesFileUri, "greeting.message")); // Test no hover // Position(14, 27) is the character after the | symbol: // @ConfigProperty(name = |"greeting.message") - assertJavaDefinitions(p(14, 27), javaFileUri, PsiUtilsLSImpl.getInstance(myProject)); + assertJavaDefinitions(p(14, 27), javaFileUri, PsiUtilsLSImpl.getInstance(getProject())); // Test no hover 2 // Position(14, 44) is the character after the | symbol: // @ConfigProperty(name = "greeting.message|") - assertJavaDefinitions(p(14, 44), javaFileUri, PsiUtilsLSImpl.getInstance(myProject)); + assertJavaDefinitions(p(14, 44), javaFileUri, PsiUtilsLSImpl.getInstance(getProject())); // Definition override default value // Position(26, 33) is the character after the | symbol: // @ConfigProperty(name = "greet|ing.number", defaultValue="0") - assertJavaDefinitions(p(29, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaDefinitions(p(29, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // def(r(29, 28, 43), propertiesFileUri, "greeting.number")); // Definition when no value // Position(23, 33) is the character after the | symbol: // @ConfigProperty(name = "greet|ing.missing") - assertJavaDefinitions(p(23, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject)); + assertJavaDefinitions(p(23, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject())); } } \ No newline at end of file diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDiagnosticsTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDiagnosticsTest.java index b4f720a43..772c3724e 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDiagnosticsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaDiagnosticsTest.java @@ -50,7 +50,7 @@ protected void setUp() throws Exception { @Test public void testImproperDefaultValues() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_quickstart); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("src/main/java/org/acme/config/DefaultValueResource.java", javaProject); @@ -88,7 +88,7 @@ public void testImproperDefaultValues() throws Exception { @Test public void testImproperDefaultValuesList() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_quickstart); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); System.err.println(new File(ModuleUtilCore.getModuleDirPath(javaProject), "src/main/java/org/acme/config/DefaultValueListResource.java")); @@ -123,7 +123,7 @@ public void testImproperDefaultValuesList() throws Exception { @Test public void testNoValueAssignedWithIgnore() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_quickstart); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("src/main/java/org/acme/config/DefaultValueResource.java", javaProject); @@ -154,7 +154,7 @@ public void testNoValueAssignedWithIgnore() throws Exception { @Test public void testUnassignedWithConfigproperties() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_configproperties); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("src/main/java/org/acme/Details.java", javaProject); @@ -173,7 +173,7 @@ public void testUnassignedWithConfigproperties() throws Exception { @Test public void testCodeActionForUnassigned() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_quickstart); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); saveFile(MicroProfileConfigSourceProvider.MICROPROFILE_CONFIG_PROPERTIES_FILE, "", javaProject); @@ -254,7 +254,7 @@ public void testCodeActionForUnassigned() throws Exception { @Test public void testEmptyNameKeyValue() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_configproperties); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("src/main/java/org/acme/EmptyKey.java", javaProject); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaHoverTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaHoverTest.java index b47f346a5..c7be94fe8 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaHoverTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/java/MicroProfileConfigJavaHoverTest.java @@ -47,51 +47,51 @@ public void testConfigPropertyNameHover() throws Exception { javaProject); // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), h( + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h( "`greeting.message = hello` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 14, 28, 44)); // Test left edge // Position(14, 28) is the character after the | symbol: // @ConfigProperty(name = "|greeting.message") - assertJavaHover(new Position(14, 28), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), h( + assertJavaHover(new Position(14, 28), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h( "`greeting.message = hello` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 14, 28, 44)); // Test right edge // Position(14, 43) is the character after the | symbol: // @ConfigProperty(name = "greeting.messag|e") - assertJavaHover(new Position(14, 43), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), h( + assertJavaHover(new Position(14, 43), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h( "`greeting.message = hello` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 14, 28, 44)); // Test no hover // Position(14, 27) is the character after the | symbol: // @ConfigProperty(name = |"greeting.message") - assertJavaHover(new Position(14, 27), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), null); + assertJavaHover(new Position(14, 27), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), null); // Test no hover 2 // Position(14, 44) is the character after the | symbol: // @ConfigProperty(name = "greeting.message|") - assertJavaHover(new Position(14, 44), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), null); + assertJavaHover(new Position(14, 44), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), null); // Hover default value // Position(17, 33) is the character after the | symbol: // @ConfigProperty(name = "greet|ing.suffix", defaultValue="!") - assertJavaHover(new Position(17, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(17, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.suffix = !` *in* [GreetingResource.java](" + javaFileUri + ")", 17, 28, 43)); // Hover override default value // Position(26, 33) is the character after the | symbol: // @ConfigProperty(name = "greet|ing.number", defaultValue="0") - assertJavaHover(new Position(29, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(29, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.number = 100` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 29, 28, 43)); // Hover when no value // Position(23, 33) is the character after the | symbol: // @ConfigProperty(name = "greet|ing.missing") - assertJavaHover(new Position(23, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), h("`greeting.missing` is not set", 23, 28, 44)); + assertJavaHover(new Position(23, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.missing` is not set", 23, 28, 44)); } @Test @@ -110,7 +110,7 @@ public void testConfigPropertyNameHoverWithProfiles() throws Exception { // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // h("`%dev.greeting.message = hello dev` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ") \n" + // "`%prod.greeting.message = hello prod` *in* [META-INF/microprofile-config.properties](" @@ -128,7 +128,7 @@ public void testConfigPropertyNameHoverWithProfiles() throws Exception { // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // h("`%dev.greeting.message = hello dev` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ") \n" + // "`%prod.greeting.message = hello prod` *in* [META-INF/microprofile-config.properties](" @@ -148,18 +148,18 @@ public void testConfigPropertyNameMethod() throws Exception { // Position(22, 61) is the character after the | symbol: // @ConfigProperty(name = "greeting.m|ethod.message") - assertJavaHover(new Position(22, 61), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(22, 61), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.method.message = hello` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 22, 51, 74)); // Position(27, 60) is the character after the | symbol: // @ConfigProperty(name = "greeting.m|ethod.suffix" , defaultValue="!") - assertJavaHover(new Position(27, 60), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(27, 60), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.method.suffix = !` *in* [GreetingMethodResource.java](" + javaFileUri + ")", 27, 50, 72)); // Position(32, 58) is the character after the | symbol: // @ConfigProperty(name = "greeting.method.name") - assertJavaHover(new Position(32, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(32, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.method.name` is not set", 32, 48, 68)); } @@ -174,25 +174,25 @@ public void testConfigPropertyNameConstructor() throws Exception { // Position(23, 48) is the character after the | symbol: // @ConfigProperty(name = "greeting.con|structor.message") - assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // h("`greeting.constructor.message = hello` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 23, 36, 64)); // Position(24, 48) is the character after the | symbol: // @ConfigProperty(name = "greeting.con|structor.suffix" , defaultValue="!") - assertJavaHover(new Position(24, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaHover(new Position(24, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // h("`greeting.constructor.suffix = !` *in* [GreetingConstructorResource.java](" + javaFileUri + ")", 24, 36, 63)); // Position(25, 48) is the character after the | symbol: // @ConfigProperty(name = "greeting.con|structor.name") - assertJavaHover(new Position(25, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaHover(new Position(25, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // h("`greeting.constructor.name` is not set", 25, 36, 61)); } @Test public void testConfigPropertyNamePrecendence() throws Exception { - IConfigSourceProvider.EP_NAME.getPoint().registerExtension(new TestConfigSourceProvider(), myProject); + IConfigSourceProvider.EP_NAME.getPoint().registerExtension(new TestConfigSourceProvider(), getProject()); Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_hover); String javaFileUri = getFileUri("src/main/java/org/acme/config/GreetingResource.java", javaProject); String propertiesFileUri = getFileUri("src/main/resources/META-INF/microprofile-config.properties", javaProject); @@ -205,14 +205,14 @@ public void testConfigPropertyNamePrecendence() throws Exception { // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.message = hi` *in* [META-INF/config.properties](" + configPropertiesFileUri + ")", 14, 28, 44)); saveFile(TestConfigSourceProvider.CONFIG_FILE, // "\r\n", javaProject); - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), h( + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h( "`greeting.message = hello` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 14, 28, 44)); } @@ -220,7 +220,7 @@ public void testConfigPropertyNamePrecendence() throws Exception { @Test public void testConfigPropertyNameProfile() throws Exception { - IConfigSourceProvider.EP_NAME.getPoint().registerExtension(new TestConfigSourceProvider(), myProject); + IConfigSourceProvider.EP_NAME.getPoint().registerExtension(new TestConfigSourceProvider(), getProject()); Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_hover); String javaFileUri = getFileUri("src/main/java/org/acme/config/GreetingResource.java", javaProject); String propertiesFileUri = getFileUri("src/main/resources/META-INF/microprofile-config.properties", javaProject); @@ -233,7 +233,7 @@ public void testConfigPropertyNameProfile() throws Exception { // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`%test.greeting.message = hi` *in* [META-INF/microprofile-config-test.properties](" + testPropertiesFileUri + ") \n" + // "`greeting.message = hi` *in* [META-INF/microprofile-config-test.properties](" @@ -242,7 +242,7 @@ public void testConfigPropertyNameProfile() throws Exception { saveFile(TestConfigSourceProvider.MICROPROFILE_CONFIG_TEST_FILE, // "\r\n", javaProject); - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), h( + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h( "`greeting.message = hello` *in* [META-INF/microprofile-config.properties](" + propertiesFileUri + ")", 14, 28, 44)); @@ -253,7 +253,7 @@ public void testConfigPropertyNameResolveExpression() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_hover); String javaFileUri = getFileUri("src/main/java/org/acme/config/GreetingResource.java", javaProject); String propertiesFileUri = getFileUri("src/main/resources/META-INF/microprofile-config.properties", javaProject); - IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(getProject()); saveFile(MicroProfileConfigSourceProvider.MICROPROFILE_CONFIG_PROPERTIES_FILE, // "greeting.message = ${asdf}\r\n" + "asdf = hello", // diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/ConfigItemIntBoolDefaultValueTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/ConfigItemIntBoolDefaultValueTest.java index 5c6cd7e7f..c208e998d 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/ConfigItemIntBoolDefaultValueTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/ConfigItemIntBoolDefaultValueTest.java @@ -41,10 +41,7 @@ public void testConfigItemIntBoolDefaultValueTest() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_quickstart, true); MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(javaProject, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, - PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); - - String booleanDefault = "false"; - String intDefault = "0"; + PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, 259 + 31 /* properties from Java sources with ConfigProperty */ + // diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/MicroProfileConfigPropertyTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/MicroProfileConfigPropertyTest.java index 8494c8b1b..d2f09ffe5 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/MicroProfileConfigPropertyTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/config/properties/MicroProfileConfigPropertyTest.java @@ -37,7 +37,7 @@ public class MicroProfileConfigPropertyTest extends LSP4MPMavenModuleImportingTe public void testConfigQuickstartFromClasspath() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.config_quickstart, true); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); MavenProjectsManager myProjectsManager = MavenProjectsManager.getInstance(module.getProject()); File f = MavenArtifactUtil.getArtifactFile(myProjectsManager.findProject(module).getLocalRepository(), new MavenId("io.quarkus:quarkus-core-deployment:1.1.0.Final"), "jar").toFile(); assertNotNull("Test existing of quarkus-core-deployment*.jar", f); @@ -118,7 +118,7 @@ public void testConfigQuickstartFromClasspath() throws Exception { public void testConfigQuickstartFromJavaSources() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.config_quickstart, true); - MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromJavaSources, 31 /* properties from Java sources with ConfigProperty */ + // 2 /* properties from Java sources with ConfigRoot */, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/configproperties/properties/MicroProfileConfigPropertiesTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/configproperties/properties/MicroProfileConfigPropertiesTest.java index 6d88453cb..8619cc132 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/configproperties/properties/MicroProfileConfigPropertiesTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/configproperties/properties/MicroProfileConfigPropertiesTest.java @@ -39,7 +39,7 @@ public class MicroProfileConfigPropertiesTest extends LSP4MPMavenModuleImporting public void testConfigPropertiesFromJavaSources() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_configproperties); - MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromJavaSources, 17 /* properties from Java sources with ConfigProperties */, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/contextpropagation/properties/MicroProfileContextPropagationTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/contextpropagation/properties/MicroProfileContextPropagationTest.java index 0fc1219a7..7dc88b507 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/contextpropagation/properties/MicroProfileContextPropagationTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/contextpropagation/properties/MicroProfileContextPropagationTest.java @@ -35,7 +35,7 @@ public class MicroProfileContextPropagationTest extends LSP4MPMavenModuleImporti public void testMicroprofileContextPropagation() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_context_propagation); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaCompletionTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaCompletionTest.java index ef3dec049..ee7464fa6 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaCompletionTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaCompletionTest.java @@ -34,7 +34,7 @@ public class MicroProfileFaultToleranceJavaCompletionTest extends LSP4MPMavenMod @Test public void testFallbackMethodCompletion() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_fault_tolerance); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/FaultTolerantResource.java", javaProject); @@ -49,7 +49,7 @@ public void testFallbackMethodCompletion() throws Exception { @Test public void testFallbackMethodCompletionBeginning() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_fault_tolerance); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/FaultTolerantResource.java", javaProject); @@ -65,7 +65,7 @@ public void testFallbackMethodCompletionBeginning() throws Exception { @Test public void testFallbackMethodNoCompletionOutside() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_fault_tolerance); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/FaultTolerantResource.java", javaProject); @@ -76,7 +76,7 @@ public void testFallbackMethodNoCompletionOutside() throws Exception { @Test public void testFallbackMethodEmptyQuotes() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_fault_tolerance); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/OtherFaultToleranceResource.java", javaProject); @@ -91,7 +91,7 @@ public void testFallbackMethodEmptyQuotes() throws Exception { @Test public void testFallbackMethodNoSpacesAroundEquals() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_fault_tolerance); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/OtherFaultToleranceResource.java", javaProject); @@ -106,7 +106,7 @@ public void testFallbackMethodNoSpacesAroundEquals() throws Exception { @Test public void testFallbackMethodMultiline() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_fault_tolerance); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/OtherFaultToleranceResource.java", javaProject); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDefinitionTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDefinitionTest.java index 2a7a50e07..775546c4d 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDefinitionTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDefinitionTest.java @@ -36,7 +36,7 @@ public class MicroProfileFaultToleranceJavaDefinitionTest extends MavenModuleImp public void testFallbackMethodsDefinition() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); String javaFileUri = MicroProfileForJavaAssert.fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/acme/FaultTolerantResource.java").toURI()); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); // @Fallback(fallbackMethod = "a|aa") --> no definition diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDiagnosticsTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDiagnosticsTest.java index 9e5942f09..8233c8189 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDiagnosticsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/java/MicroProfileFaultToleranceJavaDiagnosticsTest.java @@ -15,6 +15,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.MavenModuleImportingTestCase; import com.redhat.devtools.intellij.lsp4mp4ij.psi.core.utils.IPsiUtils; import com.redhat.devtools.intellij.lsp4mp4ij.psi.internal.core.ls.PsiUtilsLSImpl; @@ -42,7 +43,7 @@ public class MicroProfileFaultToleranceJavaDiagnosticsTest extends MavenModuleIm public void testFallbackMethodsMissing() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/acme/FaultTolerantResource.java").toURI()); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); diagnosticsParams.setUris(Arrays.asList(javaFileUri)); @@ -59,7 +60,8 @@ public void testFallbackMethodsMissing() throws Exception { @Test public void testAsynchronousNonFutureOrCompletionStage() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/acme/AsynchronousFaultToleranceResource.java").toURI()); @@ -90,7 +92,8 @@ public void testAsynchronousNonFutureOrCompletionStage() throws Exception { @Test public void testAsynchronousClassNonFutureOrCompletionStage() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/acme/AsynchronousFaultToleranceClassResource.java").toURI()); @@ -122,7 +125,7 @@ public void testAsynchronousClassNonFutureOrCompletionStage() throws Exception { public void testFallbackMethodValidationFaultTolerant() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/acme/OtherFaultTolerantResource.java").toURI()); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); diagnosticsParams.setUris(Arrays.asList(javaFileUri)); @@ -133,7 +136,7 @@ public void testFallbackMethodValidationFaultTolerant() throws Exception { @Test public void testCircuitBreakerClientForValidationDelay() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/eclipse/microprofile/fault/tolerance/tck/invalidParameters/CircuitBreakerClientForValidationDelay.java").toURI()); @@ -156,7 +159,7 @@ public void testCircuitBreakerClientForValidationDelay() throws Exception { @Test public void testBulkheadClientForValidation() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/eclipse/microprofile/fault/tolerance/tck/invalidParameters/BulkheadClientForValidation.java").toURI()); @@ -205,7 +208,7 @@ public void testBulkheadClientForValidation() throws Exception { @Test public void testTimeoutClientForValidation() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/eclipse/microprofile/fault/tolerance/tck/invalidParameters/TimeoutClientForValidation.java").toURI()); @@ -228,7 +231,7 @@ public void testTimeoutClientForValidation() throws Exception { @Test public void testRetryClientForValidation() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/eclipse/microprofile/fault/tolerance/tck/invalidParameters/RetryClientForValidation.java").toURI()); @@ -297,7 +300,7 @@ public void testRetryClientForValidation() throws Exception { @Test public void testRetryClientForValidationClass() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/eclipse/microprofile/fault/tolerance/tck/invalidParameters/RetryClientForValidationClass.java").toURI()); @@ -336,7 +339,7 @@ public void testRetryClientForValidationClass() throws Exception { @Test public void testRetryClientForValidationChronoUnit() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-fault-tolerance")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = fixURI(new File(ModuleUtilCore.getModuleDirPath(module), "src/main/java/org/eclipse/microprofile/fault/tolerance/tck/invalidParameters/RetryClientForValidationChronoUnit.java").toURI()); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/properties/MicroProfileFaultTolerancePropertiesTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/properties/MicroProfileFaultTolerancePropertiesTest.java index 409f460a2..d9c63cba7 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/properties/MicroProfileFaultTolerancePropertiesTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/faulttolerance/properties/MicroProfileFaultTolerancePropertiesTest.java @@ -38,7 +38,7 @@ public class MicroProfileFaultTolerancePropertiesTest extends LSP4MPMavenModuleI public void testMicroprofileFaultTolerancePropertiesTest() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_fault_tolerance); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/java/MicroProfileGraphQLValidationTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/java/MicroProfileGraphQLValidationTest.java index a5dcbd4c2..7ac736088 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/java/MicroProfileGraphQLValidationTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/java/MicroProfileGraphQLValidationTest.java @@ -40,7 +40,7 @@ public class MicroProfileGraphQLValidationTest extends LSP4MPMavenModuleImportin @Test public void testIncorrectDirectivePlacement() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_graphql); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("/src/main/java/io/openliberty/graphql/sample/WeatherService.java", javaProject); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/properties/MicroProfileGraphQLTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/properties/MicroProfileGraphQLTest.java index 8f77b936c..1b6f04a3f 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/properties/MicroProfileGraphQLTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/graphql/properties/MicroProfileGraphQLTest.java @@ -34,7 +34,7 @@ public class MicroProfileGraphQLTest extends LSP4MPMavenModuleImportingTestCase public void testMicroprofileGraphQL() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_graphql); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/java/MicroProfileHealthJavaDiagnosticsTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/java/MicroProfileHealthJavaDiagnosticsTest.java index 6c8f26049..77bb29aaa 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/java/MicroProfileHealthJavaDiagnosticsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/java/MicroProfileHealthJavaDiagnosticsTest.java @@ -41,7 +41,7 @@ public class MicroProfileHealthJavaDiagnosticsTest extends LSP4MPMavenModuleImpo @Test public void testImplementHealthCheck() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_health_quickstart); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(module) + "/src/main/java/org/acme/health/DontImplementHealthCheck.java"); @@ -53,7 +53,7 @@ public void testImplementHealthCheck() throws Exception { "The class `org.acme.health.DontImplementHealthCheck` using the @Liveness, @Readiness or @Health annotation should implement the HealthCheck interface.", DiagnosticSeverity.Warning, MicroProfileHealthConstants.DIAGNOSTIC_SOURCE, MicroProfileHealthErrorCode.ImplementHealthCheck); - assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(getProject()), // d); /*String uri = javaFile.getUrl();*/ @@ -69,7 +69,7 @@ public void testImplementHealthCheck() throws Exception { public void testHealthAnnotationMissing() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_health_quickstart); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(module) + "/src/main/java/org/acme/health/ImplementHealthCheck.java"); @@ -81,7 +81,7 @@ public void testHealthAnnotationMissing() throws Exception { "The class `org.acme.health.ImplementHealthCheck` implementing the HealthCheck interface should use the @Liveness, @Readiness or @Health annotation.", DiagnosticSeverity.Warning, MicroProfileHealthConstants.DIAGNOSTIC_SOURCE, MicroProfileHealthErrorCode.HealthAnnotationMissing); - assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(getProject()), // d); MicroProfileJavaCodeActionParams codeActionParams = createCodeActionParams(uri, d); @@ -109,7 +109,7 @@ private MicroProfileJavaCodeActionParams createCodeActionParams(String uri, Diag @Test public void testHealthAnnotationMissingv3() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_health_3, true); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(javaProject) + "/src/main/java/org/acme/MyLivenessCheck.java"); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/properties/MicroProfileHealthTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/properties/MicroProfileHealthTest.java index 055706234..8622e9c94 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/properties/MicroProfileHealthTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/health/properties/MicroProfileHealthTest.java @@ -34,7 +34,7 @@ public class MicroProfileHealthTest extends LSP4MPMavenModuleImportingTestCase { public void testMicroprofileHealth() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_health_quickstart); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsApplicationPathCodeLensTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsApplicationPathCodeLensTest.java index f573d696d..5c908cefb 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsApplicationPathCodeLensTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsApplicationPathCodeLensTest.java @@ -33,7 +33,7 @@ public class JaxRsApplicationPathCodeLensTest extends LSP4MPMavenModuleImporting @Test public void testUrlCodeLensApplicationPath() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_applicationpath); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); @@ -56,7 +56,7 @@ public class MyApplication extends Application {} @Test public void testUrlCodeLensApplicationPathNoSlash() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_applicationpath); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); @@ -79,7 +79,7 @@ public class MyApplication extends Application {} @Test public void testUrlCodeLensApplicationPathChange() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_applicationpath); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); @@ -112,7 +112,7 @@ public class MyApplication extends Application {} @Test public void testOpenLibertyJakarta() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.open_liberty); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsCodeLensTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsCodeLensTest.java index edf05669c..bdde653f3 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsCodeLensTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jaxrs/java/JaxRsCodeLensTest.java @@ -33,7 +33,7 @@ public class JaxRsCodeLensTest extends LSP4MPMavenModuleImportingTestCase { @Test public void testUrlCodeLensProperties() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.hibernate_orm_resteasy); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); @@ -48,7 +48,7 @@ public void testUrlCodeLensProperties() throws Exception { @Test public void testUrlCodeLensYaml() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.hibernate_orm_resteasy_yaml); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jwt/properties/MicroProfileJWTPropertiesTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jwt/properties/MicroProfileJWTPropertiesTest.java index 3338e9edf..380b4d127 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jwt/properties/MicroProfileJWTPropertiesTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/jwt/properties/MicroProfileJWTPropertiesTest.java @@ -35,7 +35,7 @@ public class MicroProfileJWTPropertiesTest extends LSP4MPMavenModuleImportingTes public void testMicroprofileJWT() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_jwt_quickstart); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, // confirm properties are being merged with force, should not overwrite properties coming from ConfigProperty provider diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/lra/properties/MicroProfileLRATest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/lra/properties/MicroProfileLRATest.java index c0bc0b173..180fde207 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/lra/properties/MicroProfileLRATest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/lra/properties/MicroProfileLRATest.java @@ -35,7 +35,7 @@ public class MicroProfileLRATest extends LSP4MPMavenModuleImportingTestCase { public void testMicroprofileLRA() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_lra); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/java/MicroProfileMetricsJavaDiagnosticsTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/java/MicroProfileMetricsJavaDiagnosticsTest.java index 22c7906d2..f0e148118 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/java/MicroProfileMetricsJavaDiagnosticsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/java/MicroProfileMetricsJavaDiagnosticsTest.java @@ -43,7 +43,7 @@ public class MicroProfileMetricsJavaDiagnosticsTest extends LSP4MPMavenModuleImp @Test public void testApplicationScopedAnnotationMissing() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_metrics); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("src/main/java/org/acme/IncorrectScope.java", javaProject); @@ -68,7 +68,7 @@ public void testApplicationScopedAnnotationMissing() throws Exception { @Test public void testApplicationScopedAnnotationMissingJakarta() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.open_liberty); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/properties/MicroProfileMetricsTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/properties/MicroProfileMetricsTest.java index 7543e0c84..603d33057 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/properties/MicroProfileMetricsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/metrics/properties/MicroProfileMetricsTest.java @@ -35,7 +35,7 @@ public class MicroProfileMetricsTest extends LSP4MPMavenModuleImportingTestCase public void testMicroprofileMetrics() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_metrics); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/java/GenerateOpenAPIAnnotationsTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/java/GenerateOpenAPIAnnotationsTest.java index 86f81306b..92ed57e3b 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/java/GenerateOpenAPIAnnotationsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/java/GenerateOpenAPIAnnotationsTest.java @@ -39,7 +39,7 @@ public class GenerateOpenAPIAnnotationsTest extends MavenModuleImportingTestCase @Test public void testGenerateOpenAPIAnnotationsAction() throws Exception { Module javaProject = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-openapi")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); File javaFile = new File(ModuleUtilCore.getModuleDirPath(javaProject), "src/main/java/org/acme/openapi/NoOperationAnnotation.java"); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/properties/MicroProfileOpenAPITest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/properties/MicroProfileOpenAPITest.java index 627e38339..be4d23c39 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/properties/MicroProfileOpenAPITest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/openapi/properties/MicroProfileOpenAPITest.java @@ -35,7 +35,7 @@ public class MicroProfileOpenAPITest extends LSP4MPMavenModuleImportingTestCase public void testMicroprofileOpenAPI() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_openapi); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/opentracing/properties/MicroProfileOpenTracingTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/opentracing/properties/MicroProfileOpenTracingTest.java index 4e8fed92e..f0a12060c 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/opentracing/properties/MicroProfileOpenTracingTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/opentracing/properties/MicroProfileOpenTracingTest.java @@ -35,7 +35,7 @@ public class MicroProfileOpenTracingTest extends LSP4MPMavenModuleImportingTestC public void testMicroprofileOpenTracing() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_opentracing); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/reactivemessaging/properties/MicroProfileReactiveMessagingTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/reactivemessaging/properties/MicroProfileReactiveMessagingTest.java index 3333dd264..a871acf54 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/reactivemessaging/properties/MicroProfileReactiveMessagingTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/reactivemessaging/properties/MicroProfileReactiveMessagingTest.java @@ -46,7 +46,7 @@ public class MicroProfileReactiveMessagingTest extends LSP4MPMavenModuleImportin public void testMicroprofileReactiveMessagingPropertiesTest() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.microprofile_reactive_messaging); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, @@ -93,7 +93,7 @@ public void testMicroprofileReactiveMessagingPropertiesTest() throws Exception { @Test public void testBlankAnnotation() throws Exception { Module javaProject = createMavenModule(new File("projects/lsp4mp/projects/maven/microprofile-reactive-messaging")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(javaProject) + "/src/main/java/org/acme/kafka/PriceConverter.java"); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaCodeLensTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaCodeLensTest.java index 71cd2251a..6cb3cd4b2 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaCodeLensTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaCodeLensTest.java @@ -46,7 +46,7 @@ public class MicroProfileRestClientJavaCodeLensTest extends MavenModuleImporting @Test public void testUrlCodeLensProperties() throws Exception { Module javaProject = createMavenModule(new File("projects/lsp4mp/projects/maven/rest-client-quickstart")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); // Initialize file initConfigFile(javaProject); @@ -79,7 +79,7 @@ public void testUrlCodeLensProperties() throws Exception { @Test public void testUrlCodeLensPropertiesWithPropertyExpression() throws Exception { Module javaProject = createMavenModule(new File("projects/lsp4mp/projects/maven/rest-client-quickstart")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); // Initialize file initConfigFile(javaProject); @@ -164,7 +164,7 @@ private static void initConfigFile(Module javaProject) throws IOException { @Test public void testUrlCodeLensPropertiesWithAnnotationBaseUri() throws Exception { Module javaProject = createMavenModule(new File("projects/lsp4mp/projects/maven/rest-client-quickstart")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); // Initialize file initConfigFile(javaProject); @@ -197,7 +197,7 @@ public void testUrlCodeLensPropertiesWithAnnotationBaseUri() throws Exception { @Test public void testUrlCodeLensYaml() throws Exception { Module javaProject = createMavenModule(new File("projects/lsp4mp/projects/maven/rest-client-quickstart")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); // Initialize file initConfigFile(javaProject); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaDiagnosticsTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaDiagnosticsTest.java index 1f73f29d7..27f33ba59 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaDiagnosticsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/java/MicroProfileRestClientJavaDiagnosticsTest.java @@ -43,7 +43,7 @@ public class MicroProfileRestClientJavaDiagnosticsTest extends MavenModuleImport public void testRestClientAnnotationMissingForFields() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/rest-client-quickstart")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams params = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(module) + "/src/main/java/org/acme/restclient/Fields.java"); @@ -99,7 +99,7 @@ public void testRestClientAnnotationMissingForFields() throws Exception { @Test public void testRestClientAnnotationMissingForFieldsJakarta() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/open-liberty")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams params = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(module) + "/src/main/java/com/demo/rest/injectAnnotation.java"); @@ -147,7 +147,7 @@ public void testRestClientAnnotationMissingForFieldsJakarta() throws Exception { public void testRestClientAnnotationMissingForInterface() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/rest-client-quickstart")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams params = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(module) + "/src/main/java/org/acme/restclient/MyService.java"); @@ -175,7 +175,7 @@ public void testRestClientAnnotationMissingForInterface() throws Exception { @Test public void testRestClientAnnotationMissingForInterfaceJakarta() throws Exception { Module module = createMavenModule(new File("projects/lsp4mp/projects/maven/open-liberty")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams params = new MicroProfileJavaDiagnosticsParams(); VirtualFile javaFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(ModuleUtilCore.getModuleDirPath(module) + "/src/main/java/com/demo/rest/MyService.java"); diff --git a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/properties/MicroProfileRegisterRestClientTest.java b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/properties/MicroProfileRegisterRestClientTest.java index ba484eeb8..8791e0ac8 100644 --- a/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/properties/MicroProfileRegisterRestClientTest.java +++ b/src/test/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/restclient/properties/MicroProfileRegisterRestClientTest.java @@ -34,7 +34,7 @@ public class MicroProfileRegisterRestClientTest extends LSP4MPMavenModuleImporti public void testRestClientQuickstart() throws Exception { Module module = loadMavenProject(MicroProfileMavenProjectName.rest_client_quickstart, true); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); // mp-rest Properties assertProperties(infoFromClasspath, 7, diff --git a/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationPropertiesCompletionTest.java b/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationPropertiesCompletionTest.java index f84736e0d..62a3d40af 100644 --- a/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationPropertiesCompletionTest.java +++ b/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationPropertiesCompletionTest.java @@ -81,7 +81,7 @@ protected Module loadMavenProject(String projectName) throws Exception { protected Module loadMavenProject(String projectName, boolean collectAndAddQuarkusDeploymentDependencies) throws Exception { Module module = createMavenModule(new File("projects/quarkus/projects/maven/" + projectName)); if(collectAndAddQuarkusDeploymentDependencies) { - QuarkusDeploymentSupport.getInstance(myTestFixture.getProject()).updateClasspathWithQuarkusDeployment(module, new EmptyProgressIndicator()); + QuarkusDeploymentSupport.getInstance(getTestFixture().getProject()).updateClasspathWithQuarkusDeployment(module, new EmptyProgressIndicator()); } return module; } diff --git a/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationYamlCompletionTest.java b/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationYamlCompletionTest.java index e82dd7516..b1e569ccc 100644 --- a/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationYamlCompletionTest.java +++ b/src/test/java/com/redhat/devtools/intellij/quarkus/completion/MavenApplicationYamlCompletionTest.java @@ -30,15 +30,15 @@ public class MavenApplicationYamlCompletionTest extends MavenModuleImportingTest @Override protected void setUp() throws Exception { super.setUp(); - ((CodeInsightTestFixture)myTestFixture).enableInspections(YamlJsonSchemaHighlightingInspection.class); + ((CodeInsightTestFixture)getTestFixture()).enableInspections(YamlJsonSchemaHighlightingInspection.class); } @Test public void testApplicationYamlFile() throws Exception { Module module = createMavenModule(new File("projects/maven/hibernate-orm-resteasy-yaml")); - ((CodeInsightTestFixture)myTestFixture).setTestDataPath(ModuleUtilCore.getModuleDirPath(module)); - var psiFile = ((CodeInsightTestFixture)myTestFixture).configureByFile("src/main/resources/application.yaml"); + ((CodeInsightTestFixture)getTestFixture()).setTestDataPath(ModuleUtilCore.getModuleDirPath(module)); + var psiFile = ((CodeInsightTestFixture)getTestFixture()).configureByFile("src/main/resources/application.yaml"); UIUtil.dispatchAllInvocationEvents(); - ((CodeInsightTestFixture)myTestFixture).checkHighlighting(); + ((CodeInsightTestFixture)getTestFixture()).checkHighlighting(); } } diff --git a/src/test/java/com/redhat/devtools/intellij/quarkus/validation/BuildItemDiagnosticsTest.java b/src/test/java/com/redhat/devtools/intellij/quarkus/validation/BuildItemDiagnosticsTest.java index b258fd09d..0624fa973 100644 --- a/src/test/java/com/redhat/devtools/intellij/quarkus/validation/BuildItemDiagnosticsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/quarkus/validation/BuildItemDiagnosticsTest.java @@ -40,7 +40,7 @@ public void testBuildItemClassifier() throws Exception { "BuildItem class `org.acme.builditems.BadBuildItem` must either be declared final or abstract", DiagnosticSeverity.Error, QuarkusConstants.QUARKUS_DIAGNOSTIC_SOURCE, QuarkusBuildItemErrorCode.InvalidModifierBuildItem); - assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(myProject), d); + assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(getProject()), d); } @@ -49,7 +49,7 @@ public void testBuildItemClassifier() throws Exception { String uri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/builditems/GoodBuildItem.java").toASCIIString(); diagnosticsParams.setUris(Arrays.asList(uri)); diagnosticsParams.setDocumentFormat(DocumentFormat.Markdown); - assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(myProject)); + assertJavaDiagnostics(diagnosticsParams, PsiUtilsLSImpl.getInstance(getProject())); } } diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/QuteMavenModuleImportingTestCase.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/QuteMavenModuleImportingTestCase.java index f8bf245f2..747f8e638 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/QuteMavenModuleImportingTestCase.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/QuteMavenModuleImportingTestCase.java @@ -11,6 +11,7 @@ *******************************************************************************/ package com.redhat.devtools.intellij.qute.psi; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.MavenModuleImportingTestCase; import com.intellij.openapi.module.Module; @@ -23,6 +24,8 @@ public abstract class QuteMavenModuleImportingTestCase extends MavenModuleImportingTestCase { protected Module loadMavenProject(String projectName) throws Exception { - return createMavenModule(new File("projects/qute/projects/maven/" + projectName)); + Module module = createMavenModule(new File("projects/qute/projects/maven/" + projectName)); + IndexingTestUtil.waitUntilIndexesAreReady(getTestFixture().getProject()); + return module; } } diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaCodeLensTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaCodeLensTest.java index 349b58859..30903bab7 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaCodeLensTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaCodeLensTest.java @@ -78,7 +78,7 @@ public void testTemplateField() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/HelloResource.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(5, lenses.size()); @@ -118,7 +118,7 @@ public void testCheckedTemplate() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/Templates.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(2, lenses.size()); @@ -150,7 +150,7 @@ public void testCheckedTemplateInInnerClass() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemResource.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, lenses.size()); @@ -186,7 +186,7 @@ public void testCheckedTemplateWithFragment() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemTemplates.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, lenses.size()); @@ -215,7 +215,7 @@ public void testCheckedTemplateWithFragment() throws Exception { javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemTemplatesIgnoreFragments.java").toASCIIString(); params.setUri(javaFileUri); - lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, lenses.size()); @@ -250,7 +250,7 @@ public void testCheckedTemplateWithCustomBasePath() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemTemplatesCustomBasePath.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, lenses.size()); @@ -285,7 +285,7 @@ public void testCheckedTemplateInInnerClassWithCustomBasePath() throws Exception String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemTemplatesCustomBasePath.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, lenses.size()); @@ -312,7 +312,7 @@ public void testCheckedTemplateInInnerClassWithFragment() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemResourceWithFragment.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(6, lenses.size()); @@ -363,7 +363,7 @@ public void testTemplateRecord() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/sample/HelloResource.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); String helloFileUri = LSPIJUtils.toUri(module).resolve("/src/main/resources/templates/HelloResource/Hello.html").toASCIIString(); @@ -394,7 +394,7 @@ public void testCheckedTemplateWithDefaultName() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/sample/ItemResource.java").toASCIIString(); params.setUri(javaFileUri); - List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(myProject), + List lenses = QuteSupportForJava.getInstance().codeLens(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, lenses.size()); diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDiagnosticsTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDiagnosticsTest.java index 827640fdd..1435bf9c4 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDiagnosticsTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDiagnosticsTest.java @@ -71,7 +71,7 @@ public void testTemplateField() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); List diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -102,7 +102,7 @@ public void testCheckedTemplate() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); List diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -130,7 +130,7 @@ public void testCheckedTemplateWithFragment() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); List diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -157,7 +157,7 @@ public void testCheckedTemplateWithFragment() throws Exception { params.setUris(Arrays.asList(javaFileUri)); publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -182,7 +182,7 @@ public void testCheckedTemplateInInnerClass() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); List diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -205,7 +205,7 @@ public void testCheckedTemplateInInnerClassWithFragment() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); List diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -239,7 +239,7 @@ public void testCheckedTemplateWithCustomBasePath() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); List diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -274,7 +274,7 @@ public void testTemplateRecord() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); List diagnostics = publishDiagnostics.get(0).getDiagnostics(); @@ -302,7 +302,7 @@ public void testCheckedTemplateWithDefaultName() throws Exception { params.setUris(Arrays.asList(javaFileUri)); List publishDiagnostics = QuteSupportForJava.getInstance().diagnostics(params, - PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(1, publishDiagnostics.size()); diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDocumentLinkTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDocumentLinkTest.java index 3c430e0d3..0bc672a37 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDocumentLinkTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/java/MavenJavaDocumentLinkTest.java @@ -61,7 +61,7 @@ public void testTemplateField() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/HelloResource.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(5, links.size()); @@ -96,7 +96,7 @@ public void testCheckedTemplate() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/Templates.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(2, links.size()); @@ -126,7 +126,7 @@ public void testCheckedTemplateInInnerClass() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemResource.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, links.size()); @@ -157,7 +157,7 @@ public void testCheckedTemplateWithFragment() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemTemplates.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, links.size()); @@ -183,7 +183,7 @@ public void testCheckedTemplateWithFragment() throws Exception { javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemTemplatesIgnoreFragments.java").toASCIIString(); params.setUri(javaFileUri); - links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, links.size()); @@ -207,7 +207,7 @@ public void testCheckedTemplateInInnerClassWithFragment() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemResourceWithFragment.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(6, links.size()); @@ -245,7 +245,7 @@ public void testCheckedTemplateWithCustomBasePath() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemTemplatesCustomBasePath.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, links.size()); @@ -265,7 +265,7 @@ public void testCheckedTemplateInInnerClassWithCustomBasePath() throws Exception String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/qute/ItemResourceWithCustomBasePath.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, links.size()); @@ -299,7 +299,7 @@ public void testTemplateRecord() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/sample/HelloResource.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, links.size()); @@ -328,7 +328,7 @@ public void testCheckedTemplateWithDefaultName() throws Exception { String javaFileUri = LSPIJUtils.toUri(module).resolve("src/main/java/org/acme/sample/ItemResource.java").toASCIIString(); params.setUri(javaFileUri); - List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(myProject), + List links = QuteSupportForJava.getInstance().documentLink(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertEquals(3, links.size()); diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGenerateMissingJavaMemberTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGenerateMissingJavaMemberTest.java index cb6fa7949..08ffc0222 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGenerateMissingJavaMemberTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGenerateMissingJavaMemberTest.java @@ -13,6 +13,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.quarkus.QuarkusModuleUtil; import com.redhat.devtools.intellij.qute.psi.QuteMavenModuleImportingTestCase; import com.redhat.devtools.intellij.qute.psi.QuteMavenProjectName; @@ -39,6 +40,7 @@ public class TemplateGenerateMissingJavaMemberTest extends QuteMavenModuleImport @Test public void testGenerateField() throws Exception { Module project = loadMavenProject(QuteMavenProjectName.qute_quickstart); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); GenerateMissingJavaMemberParams params = new GenerateMissingJavaMemberParams( GenerateMissingJavaMemberParams.MemberType.Field, "asdf", "org.acme.qute.Item", QuteMavenProjectName.qute_quickstart); @@ -82,6 +84,7 @@ public void testUpdateVisibilityOfFieldComplex() throws Exception { @Test public void testGenerateGetterWithNoMatchingField() throws Exception { Module project = loadMavenProject(QuteMavenProjectName.qute_quickstart); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); GenerateMissingJavaMemberParams params = new GenerateMissingJavaMemberParams( GenerateMissingJavaMemberParams.MemberType.Getter, "asdf", "org.acme.qute.Item", QuteMavenProjectName.qute_quickstart); @@ -128,6 +131,7 @@ public void testGenerateTemplateExtensionInNewClass() throws Exception { @Test public void testGenerateTemplateExtensionInExistingClass() throws Exception { Module project = loadMavenProject(QuteMavenProjectName.qute_quickstart); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); GenerateMissingJavaMemberParams params = new GenerateMissingJavaMemberParams( GenerateMissingJavaMemberParams.MemberType.AppendTemplateExtension, "asdf", "org.acme.qute.Item", QuteMavenProjectName.qute_quickstart, "org.acme.qute.MyTemplateExtensions"); diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectForMessagesTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectForMessagesTest.java index 2f4e77b56..dc989cd6f 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectForMessagesTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectForMessagesTest.java @@ -15,6 +15,7 @@ import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.lsp4mp4ij.psi.core.utils.IPsiUtils; import com.redhat.devtools.intellij.lsp4mp4ij.psi.internal.core.ls.PsiUtilsLSImpl; import com.redhat.devtools.intellij.qute.psi.QuteMavenModuleImportingTestCase; @@ -48,7 +49,7 @@ public void testQuteMessages() throws Exception { QuteDataModelProjectParams params = new QuteDataModelProjectParams(QuteMavenProjectName.qute_messages); DataModelProject> project = QuteSupportForTemplate.getInstance() - .getDataModelProject(params, PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + .getDataModelProject(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); Assert.assertNotNull(project); // Test templates diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectTest.java index bc575dda5..10fa0f29e 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetDataModelProjectTest.java @@ -44,7 +44,7 @@ public void testQuteQuickStart() throws Exception { QuteDataModelProjectParams params = new QuteDataModelProjectParams(QuteMavenProjectName.qute_quickstart); DataModelProject> project = QuteSupportForTemplate.getInstance() - .getDataModelProject(params, PsiUtilsLSImpl.getInstance(myProject), new EmptyProgressIndicator()); + .getDataModelProject(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); Assert.assertNotNull(project); // Test templates diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetJavaTypeTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetJavaTypeTest.java index ab285de42..d164f5a2d 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetJavaTypeTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetJavaTypeTest.java @@ -48,7 +48,7 @@ protected void setUp() throws Exception { public void testpackages() throws Exception { QuteJavaTypesParams params = new QuteJavaTypesParams("java.", QuteMavenProjectName.qute_quickstart); - List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(myProject), + List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertJavaTypes(actual, // @@ -60,7 +60,7 @@ public void testpackages() throws Exception { public void testlist() throws Exception { QuteJavaTypesParams params = new QuteJavaTypesParams("List", QuteMavenProjectName.qute_quickstart); - List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(myProject), + List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertJavaTypes(actual, // @@ -71,7 +71,7 @@ public void testlist() throws Exception { public void testitem() throws Exception { QuteJavaTypesParams params = new QuteJavaTypesParams("Item", QuteMavenProjectName.qute_quickstart); - List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(myProject), + List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertJavaTypes(actual, // @@ -84,7 +84,7 @@ public void testnested() throws Exception { QuteJavaTypesParams params = new QuteJavaTypesParams("org.acme.qute.NestedClass.", QuteMavenProjectName.qute_quickstart); - List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(myProject), + List actual = QuteSupportForTemplate.getInstance().getJavaTypes(params, PsiUtilsLSImpl.getInstance(getProject()), new EmptyProgressIndicator()); assertJavaTypes(actual, // diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetResolvedJavaTypeTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetResolvedJavaTypeTest.java index 860d462ee..d2e6fad7e 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetResolvedJavaTypeTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/TemplateGetResolvedJavaTypeTest.java @@ -17,6 +17,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.EmptyProgressIndicator; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.qute.psi.QuteMavenModuleImportingTestCase; import com.redhat.devtools.intellij.qute.psi.QuteMavenProjectName; import com.redhat.devtools.intellij.qute.psi.QuteSupportForTemplate; @@ -38,12 +39,12 @@ * */ public class TemplateGetResolvedJavaTypeTest extends QuteMavenModuleImportingTestCase { - private Module module; @Override protected void setUp() throws Exception { super.setUp(); - module = loadMavenProject(QuteMavenProjectName.qute_quickstart); + loadMavenProject(QuteMavenProjectName.qute_quickstart); + IndexingTestUtil.waitUntilIndexesAreReady(getTestFixture().getProject()); } @Test @@ -151,7 +152,7 @@ public void testlist() throws Exception { Assert.assertNotNull(extendedTypes); Assert.assertEquals(2, extendedTypes.size()); assertExtendedTypes("java.util.List", "java.lang.Object", extendedTypes); - assertExtendedTypes("java.util.List", "java.util.Collection", extendedTypes); + assertExtendedTypes("java.util.List", "java.util.SequencedCollection", extendedTypes); // List params = new QuteResolvedJavaTypeParams("List", QuteMavenProjectName.qute_quickstart); diff --git a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/renarde/UriNamespaceResolverSupportTest.java b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/renarde/UriNamespaceResolverSupportTest.java index 7464a1fb7..2cf8e9754 100644 --- a/src/test/java/com/redhat/devtools/intellij/qute/psi/template/renarde/UriNamespaceResolverSupportTest.java +++ b/src/test/java/com/redhat/devtools/intellij/qute/psi/template/renarde/UriNamespaceResolverSupportTest.java @@ -13,6 +13,7 @@ import com.intellij.openapi.progress.EmptyProgressIndicator; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.qute.psi.QuteMavenModuleImportingTestCase; import com.redhat.devtools.intellij.qute.psi.QuteMavenProjectName; import com.redhat.devtools.intellij.qute.psi.QuteSupportForTemplate; @@ -40,6 +41,7 @@ public class UriNamespaceResolverSupportTest extends QuteMavenModuleImportingTes public void testQuteRenarde() throws Exception { loadMavenProject(QuteMavenProjectName.quarkus_renarde_todo); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); QuteDataModelProjectParams params = new QuteDataModelProjectParams(QuteMavenProjectName.quarkus_renarde_todo); DataModelProject> project = QuteSupportForTemplate.getInstance() diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/GradleQuarkusConfigRootAllQuarkusExtensionsTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/GradleQuarkusConfigRootAllQuarkusExtensionsTest.java index f527d492d..9623f2b7d 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/GradleQuarkusConfigRootAllQuarkusExtensionsTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/GradleQuarkusConfigRootAllQuarkusExtensionsTest.java @@ -13,6 +13,7 @@ import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.EmptyProgressIndicator; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.GradleTestCase; import com.redhat.devtools.intellij.lsp4mp4ij.psi.core.PropertiesManager; import com.redhat.devtools.intellij.lsp4mp4ij.psi.internal.core.ls.PsiUtilsLSImpl; @@ -43,6 +44,7 @@ public void setUp() throws Exception { public void testAllExtensions() throws Exception { Module module = getModule("all-quarkus-extensions.main"); QuarkusDeploymentSupport.getInstance(module.getProject()).updateClasspathWithQuarkusDeployment(module, new EmptyProgressIndicator()); + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); MicroProfileProjectInfo info = ReadAction.compute(() ->PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator())); File keycloakJARFile = getDependency(getProjectPath(), "io.quarkus", "quarkus-keycloak-authorization", "1.0.1.Final"); diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusConfigRootTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusConfigRootTest.java index 73911c736..41e69f45e 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusConfigRootTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusConfigRootTest.java @@ -43,7 +43,7 @@ public class MavenQuarkusConfigRootTest extends QuarkusMavenModuleImportingTestC public void testHibernateOrmResteasy() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.hibernate_orm_resteasy, true); - MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(info, // io.quarkus.hibernate.orm.deployment.HibernateOrmConfig @@ -64,7 +64,7 @@ public void testHibernateOrmResteasy() throws Exception { public void testAllQuarkusExtensions() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.all_quarkus_extensions, true); - MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(info, p("quarkus-keycloak-authorization", "quarkus.keycloak.policy-enforcer.paths.{*}.name", diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusHibernateORMPropertyTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusHibernateORMPropertyTest.java index aef548828..e2ba19714 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusHibernateORMPropertyTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusHibernateORMPropertyTest.java @@ -33,7 +33,7 @@ public class MavenQuarkusHibernateORMPropertyTest extends QuarkusMavenModuleImpo @Test public void testQuarkusContainerImages() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.hibernate_orm_resteasy, true); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusScheduledPropertiesTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusScheduledPropertiesTest.java index 2b0d12f52..fe4a0f553 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusScheduledPropertiesTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/MavenQuarkusScheduledPropertiesTest.java @@ -29,7 +29,7 @@ public class MavenQuarkusScheduledPropertiesTest extends QuarkusMavenModuleImpor @Test public void testConfigQuickstartFromClasspath() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.scheduler_quickstart); - MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, // CounterBean @@ -45,7 +45,7 @@ public void testConfigQuickstartFromClasspath() throws Exception { @Test public void testConfigQuickstartFromJavaSources() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.scheduler_quickstart); - MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromJavaSources, // CounterBean diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusConfigPropertiesTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusConfigPropertiesTest.java index 07b8ee433..0f393eb94 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusConfigPropertiesTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusConfigPropertiesTest.java @@ -50,7 +50,7 @@ public void testConfigPropertiesNoDefaultNamingStrategy() throws Exception { MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo( javaProject, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, - PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); int nbProperties = 0; @@ -174,7 +174,7 @@ public void testConfigPropertiesVerbatimDefaultNamingStrategy() throws Exception MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo( javaProject, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, - PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); int nbProperties = 0; diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusKubernetesTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusKubernetesTest.java index e7ae4b902..4796b354b 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusKubernetesTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusKubernetesTest.java @@ -31,7 +31,7 @@ public class QuarkusKubernetesTest extends QuarkusMavenModuleImportingTestCase { @Test public void testKubernetes() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.kubernetes, true); - MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); assertProperties(info, @@ -82,7 +82,7 @@ If you need to generate resources for both platforms (vanilla Kubernetes and Ope @Test public void testOpenshift() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.kubernetes, true); - MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); assertProperties(info, // io.dekorate.openshift.annotation.OpenshiftApplication @@ -125,7 +125,7 @@ public void testOpenshift() throws Exception { @Test public void testS2i() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.kubernetes, true); - MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); assertProperties(info, // io.dekorate.s2i.annotation.S2iBuild @@ -161,7 +161,7 @@ public void testS2i() throws Exception { @Test public void testDocker() throws Exception { Module module = loadMavenProject(QuarkusMavenProjectName.kubernetes, true); - MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(module, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); String description = """ The relative path of the Dockerfile, from the module root. diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusMavenModuleImportingTestCase.java b/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusMavenModuleImportingTestCase.java index dfd50fa74..c481c6199 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusMavenModuleImportingTestCase.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/QuarkusMavenModuleImportingTestCase.java @@ -13,6 +13,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.EmptyProgressIndicator; +import com.intellij.testFramework.IndexingTestUtil; import com.redhat.devtools.intellij.MavenModuleImportingTestCase; import com.redhat.devtools.intellij.quarkus.QuarkusDeploymentSupport; @@ -31,8 +32,9 @@ protected Module loadMavenProject(String projectName) throws Exception { protected Module loadMavenProject(String projectName, boolean collectAndAddQuarkusDeploymentDependencies) throws Exception { Module module = createMavenModule(new File("projects/quarkus/projects/maven/" + projectName)); if(collectAndAddQuarkusDeploymentDependencies) { - QuarkusDeploymentSupport.getInstance(myTestFixture.getProject()).updateClasspathWithQuarkusDeployment(module, new EmptyProgressIndicator()); + QuarkusDeploymentSupport.getInstance(getTestFixture().getProject()).updateClasspathWithQuarkusDeployment(module, new EmptyProgressIndicator()); } + IndexingTestUtil.waitUntilIndexesAreReady(getProject()); return module; } } diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/cache/QuarkusCachePropertiesTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/cache/QuarkusCachePropertiesTest.java index 05fd91f05..9335c9b2b 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/cache/QuarkusCachePropertiesTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/cache/QuarkusCachePropertiesTest.java @@ -44,7 +44,7 @@ public void testCacheQuickstartFromClasspath() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.cache_quickstart, true); MicroProfileProjectInfo infoFromClasspath = PropertiesManager.getInstance().getMicroProfileProjectInfo( javaProject, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, - PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.Markdown, new EmptyProgressIndicator()); + PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.Markdown, new EmptyProgressIndicator()); assertProperties(infoFromClasspath, // WeatherForecastService diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/config/JavaCodeLensQuarkusRestClientTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/config/JavaCodeLensQuarkusRestClientTest.java index 841c8f082..b163f2192 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/config/JavaCodeLensQuarkusRestClientTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/config/JavaCodeLensQuarkusRestClientTest.java @@ -44,7 +44,7 @@ public class JavaCodeLensQuarkusRestClientTest extends MavenModuleImportingTestC @Test public void testUrlCodeLensYaml() throws Exception { Module javaProject = createMavenModule(new File("projects/quarkus/projects/maven/rest-client-quickstart")); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); // Initialize file initConfigFile(javaProject); diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaDefinitionTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaDefinitionTest.java index d948ab25c..6d09a4f03 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaDefinitionTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaDefinitionTest.java @@ -49,7 +49,7 @@ public void testConfigPropertyNameDefinitionYml() throws Exception { javaProject); // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaDefinitions(p(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), // + assertJavaDefinitions(p(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), // def(r(14, 28, 44), applicationYmlFileUri, "greeting.message")); } diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaHoverTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaHoverTest.java index 3c51600ff..a478f48af 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaHoverTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/config/QuarkusConfigJavaHoverTest.java @@ -49,13 +49,13 @@ public void testConfigPropertyNameRespectsPrecendence() throws Exception { // microprofile-config.properties exists saveFile(MicroProfileConfigSourceProvider.MICROPROFILE_CONFIG_PROPERTIES_FILE, "greeting.constructor.message = hello 1", javaProject); - assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.constructor.message = hello 1` *in* META-INF/microprofile-config.properties", 23, 36, 64)); // microprofile-config.properties and application.properties exist saveFile(QuarkusConfigSourceProvider.APPLICATION_PROPERTIES_FILE, "greeting.constructor.message = hello 2", javaProject); - assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.constructor.message = hello 2` *in* [application.properties](" + propertiesFileUri + ")", 23, 36, 64)); @@ -66,7 +66,7 @@ public void testConfigPropertyNameRespectsPrecendence() throws Exception { " constructor:\n" + // " message: hello 3", // javaProject); - assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(23, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.constructor.message = hello 3` *in* application.yaml", 23, 36, 64)); } @@ -91,12 +91,12 @@ public void testConfigPropertyNameYaml() throws Exception { // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.message = message from yaml` *in* [application.yaml](" + yamlFileUri + ")", 14, 28, 44)); // Position(26, 33) is the character after the | symbol: // @ConfigProperty(name = "greet|ing.number", defaultValue="0") - assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.number = 2001` *in* [application.yaml](" + yamlFileUri + ")", 26, 28, 43)); saveFile(QuarkusConfigSourceProvider.APPLICATION_YAML_FILE, // @@ -104,7 +104,7 @@ public void testConfigPropertyNameYaml() throws Exception { " message: message from yaml", javaProject); // fallback to application.properties - assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.number = 100` *in* [application.properties](" + propertiesFileUri + ")", 26, 28, 43)); } @@ -129,12 +129,12 @@ public void testConfigPropertyNameYml() throws Exception { // Position(14, 40) is the character after the | symbol: // @ConfigProperty(name = "greeting.mes|sage") - assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(14, 40), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.message = message from yml` *in* [application.yml](" + ymlFileUri + ")", 14, 28, 44)); // Position(26, 33) is the character after the | symbol: // @ConfigProperty(name = "greet|ing.number", defaultValue="0") - assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.number = 2001` *in* [application.yml](" + ymlFileUri + ")", 26, 28, 43)); saveFile(QuarkusConfigSourceProvider.APPLICATION_YML_FILE, // @@ -142,7 +142,7 @@ public void testConfigPropertyNameYml() throws Exception { " message: message from yml", javaProject); // fallback to application.properties - assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(26, 33), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`greeting.number = 100` *in* [application.properties](" + propertiesFileUri + ")", 26, 28, 43)); } @@ -155,7 +155,7 @@ public void testConfigPropertyHoverPropertyExpression() throws Exception { saveFile(QuarkusConfigSourceProvider.APPLICATION_PROPERTIES_FILE, "greeting.hover = test", javaProject); // no hover should show for property expression - assertJavaHover(new Position(31, 29), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), null); + assertJavaHover(new Position(31, 29), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), null); } @Test @@ -167,7 +167,7 @@ public void testPerProfileConfigPropertyFile() throws Exception { saveFile("application-foo.properties", "greeting.message = hello from foo profile\n", javaProject); - assertJavaHover(new Position(14, 29), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(14, 29), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`%foo.greeting.message = hello from foo profile` *in* [application-foo.properties](" + propertiesFileUri + ") \n`greeting.message` is not set", 14, 28, 44)); } diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingASTVisitorTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingASTVisitorTest.java index 3eaf20d6b..5b3618302 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingASTVisitorTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingASTVisitorTest.java @@ -43,7 +43,7 @@ public class QuarkusConfigMappingASTVisitorTest extends QuarkusMavenModuleImport public void testExpectedInterface() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.config_mapping); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("src/main/java/org/acme/validation/ServerClass.java", javaProject); diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingTest.java index 68156833b..4f1abe312 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/configmapping/QuarkusConfigMappingTest.java @@ -34,7 +34,7 @@ public class QuarkusConfigMappingTest extends QuarkusMavenModuleImportingTestCas public void testConfigMapping() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.config_mapping); - MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(javaProject, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(myProject), DocumentFormat.PlainText, new EmptyProgressIndicator()); + MicroProfileProjectInfo infoFromJavaSources = PropertiesManager.getInstance().getMicroProfileProjectInfo(javaProject, MicroProfilePropertiesScope.ONLY_SOURCES, ClasspathKind.SRC, PsiUtilsLSImpl.getInstance(getProject()), DocumentFormat.PlainText, new EmptyProgressIndicator()); assertProperties(infoFromJavaSources, diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsApplicationPathCodeLensTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsApplicationPathCodeLensTest.java index 0c0c9925a..6ab196f02 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsApplicationPathCodeLensTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsApplicationPathCodeLensTest.java @@ -45,7 +45,7 @@ public class JaxRsApplicationPathCodeLensTest extends QuarkusMavenModuleImportin @Test public void testUrlCodeLensProperties() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.microprofile_applicationpath); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsCodeLensTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsCodeLensTest.java index 37880a0a7..c48c2b015 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsCodeLensTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsCodeLensTest.java @@ -39,7 +39,7 @@ public class JaxRsCodeLensTest extends QuarkusMavenModuleImportingTestCase { @Test public void testUrlCodeLensProperties() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.hibernate_orm_resteasy); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); @@ -92,7 +92,7 @@ public void testUrlCodeLensProperties() throws Exception { @Test public void testUrlCodeLensYaml() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.hibernate_orm_resteasy); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaCodeLensParams params = new MicroProfileJavaCodeLensParams(); params.setCheckServerAvailable(false); diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsWorkspaceSymbolParticipantTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsWorkspaceSymbolParticipantTest.java index bee97d161..71a16432b 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsWorkspaceSymbolParticipantTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/jaxrs/JaxRsWorkspaceSymbolParticipantTest.java @@ -33,7 +33,7 @@ public class JaxRsWorkspaceSymbolParticipantTest extends LSP4MPMavenModuleImport public void testConfigQuickstart() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.config_quickstart); - assertWorkspaceSymbols(javaProject, PsiUtilsLSImpl.getInstance(myProject), // + assertWorkspaceSymbols(javaProject, PsiUtilsLSImpl.getInstance(getProject()), // si("@/greeting/hello4: GET", r(40, 18, 24)), // si("@/greeting/constructor: GET", r(34, 18, 23)), // si("@/greeting/hello: GET", r(33, 18, 24)), // @@ -46,7 +46,7 @@ public void testConfigQuickstart() throws Exception { public void testOpenLiberty() throws Exception { Module javaProject = loadMavenProject(MicroProfileMavenProjectName.open_liberty); - assertWorkspaceSymbols(javaProject, PsiUtilsLSImpl.getInstance(myProject), // + assertWorkspaceSymbols(javaProject, PsiUtilsLSImpl.getInstance(getProject()), // si("@/api/api/resource: GET", r(13, 15, 20))); } diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/renarde/RenardeJaxRsTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/renarde/RenardeJaxRsTest.java index ad97bc1a5..20324fe06 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/renarde/RenardeJaxRsTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/renarde/RenardeJaxRsTest.java @@ -37,7 +37,7 @@ public void testCodeLens() throws Exception { params.setUri(javaFileUri); params.setUrlCodeLensEnabled(true); - assertCodeLens(params, PsiUtilsLSImpl.getInstance(myProject), // + assertCodeLens(params, PsiUtilsLSImpl.getInstance(getProject()), // cl("http://localhost:8080/", "", r(20, 4, 4)), // cl("http://localhost:8080/about", "", r(25, 4, 4)), // cl("http://localhost:8080/Application/test", "", r(30, 4, 4)), // @@ -56,7 +56,7 @@ public void testAbsolutePathCodeLens() throws Exception { params.setUri(javaFileUri); params.setUrlCodeLensEnabled(true); - assertCodeLens(params, PsiUtilsLSImpl.getInstance(myProject), // + assertCodeLens(params, PsiUtilsLSImpl.getInstance(getProject()), // cl("http://localhost:8080/play/id", "", r(9, 4, 4)), cl("http://localhost:8080/play/start", "", r(13, 4, 4))); } @@ -67,7 +67,7 @@ public void testWorkspaceSymbols() throws Exception { assertNotNull(javaProject); - assertWorkspaceSymbols(javaProject, PsiUtilsLSImpl.getInstance(myProject), // + assertWorkspaceSymbols(javaProject, PsiUtilsLSImpl.getInstance(getProject()), // si("@/: GET", r(20, 28, 33)), // si("@/Application/endpoint: GET", r(34, 18, 26)), // si("@/Application/test: POST", r(30, 16, 20)), // diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/route/ReactiveRouteTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/route/ReactiveRouteTest.java index f16b8be30..00b2e6543 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/route/ReactiveRouteTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/route/ReactiveRouteTest.java @@ -37,7 +37,7 @@ public void testMultipleRoutesCodeLens() throws Exception { params.setUri(javaFileUri); params.setUrlCodeLensEnabled(true); - assertCodeLens(params, PsiUtilsLSImpl.getInstance(myProject), // + assertCodeLens(params, PsiUtilsLSImpl.getInstance(getProject()), // cl("http://localhost:8080/first", "", r(9, 4, 4)), // cl("http://localhost:8080/second", "", r(9, 4, 4))); } @@ -53,7 +53,7 @@ public void testMyDeclarativeRoutesCodeLens() throws Exception { params.setUri(javaFileUri); params.setUrlCodeLensEnabled(true); - assertCodeLens(params, PsiUtilsLSImpl.getInstance(myProject), // + assertCodeLens(params, PsiUtilsLSImpl.getInstance(getProject()), // cl("http://localhost:8080/hello", "", r(15, 4, 4)), // cl("http://localhost:8080/world", "", r(20, 4, 4)), // cl("http://localhost:8080/greetings", "", r(25, 4, 4)), // @@ -71,7 +71,7 @@ public void testSimpleRoutesCodeLens() throws Exception { params.setUri(javaFileUri); params.setUrlCodeLensEnabled(true); - assertCodeLens(params, PsiUtilsLSImpl.getInstance(myProject), // + assertCodeLens(params, PsiUtilsLSImpl.getInstance(getProject()), // cl("http://localhost:8080/simple/ping", "", r(10, 4, 4))); } } diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledASTVisitorTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledASTVisitorTest.java index 1e3f23b6d..22b7e05f7 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledASTVisitorTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledASTVisitorTest.java @@ -43,7 +43,7 @@ public class QuarkusScheduledASTVisitorTest extends QuarkusMavenModuleImportingT public void testScheduledAnnotationTest() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.scheduler_diagnostic); - IPsiUtils utils = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils utils = PsiUtilsLSImpl.getInstance(getProject()); MicroProfileJavaDiagnosticsParams diagnosticsParams = new MicroProfileJavaDiagnosticsParams(); String javaFileUri = getFileUri("src/main/java/org/acme/ScheduledResource.java", javaProject); diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledDefinitionTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledDefinitionTest.java index 03114b3d6..bba169cef 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledDefinitionTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledDefinitionTest.java @@ -34,7 +34,7 @@ public class QuarkusScheduledDefinitionTest extends QuarkusMavenModuleImportingT public void testConfigCronPropertyDefinition() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.scheduler_quickstart); - IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/scheduler/CounterBean.java", javaProject); String propertiesFileUri = getFileUri("src/main/resources/application.properties", javaProject); @@ -50,7 +50,7 @@ public void testConfigCronPropertyDefinition() throws Exception { public void testConfigEveryPropertyNameDefinition() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.scheduler_quickstart); - IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/scheduler/CounterBean.java", javaProject); String propertiesFileUri = getFileUri("src/main/resources/application.properties", javaProject); @@ -66,7 +66,7 @@ public void testConfigEveryPropertyNameDefinition() throws Exception { public void testConfigPropertyExpressionDefinition() throws Exception { Module javaProject = loadMavenProject(QuarkusMavenProjectName.scheduler_quickstart); - IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(myProject); + IPsiUtils JDT_UTILS = PsiUtilsLSImpl.getInstance(getProject()); String javaFileUri = getFileUri("src/main/java/org/acme/scheduler/CounterBean.java", javaProject); String propertiesFileUri = getFileUri("src/main/resources/application.properties", javaProject); diff --git a/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledHoverTest.java b/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledHoverTest.java index 01e6af49c..91034414c 100644 --- a/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledHoverTest.java +++ b/src/test/java/com/redhat/microprofile/psi/quarkus/scheduler/QuarkusScheduledHoverTest.java @@ -46,7 +46,7 @@ public void testConfigFirstPropertyNameHover() throws Exception { // Position(29, 25) is the character after the | symbol: // @Scheduled(cron = "{c|ron.expr}", every = "{every.expr}") - assertJavaHover(new Position(29, 25), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(29, 25), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`cron.expr = */5 * * * * ?` *in* [application.properties](" + propertiesFileUri + ")", 29, 23, 34)); } @@ -61,7 +61,7 @@ public void testConfigSecondPropertyNameHover() throws Exception { // Position(29, 48) is the character after the | symbol: // @Scheduled(cron = "{cron.expr}", every = "{e|very.expr}") - assertJavaHover(new Position(29, 48), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(29, 48), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`every.expr = */5 * * * * ?` *in* [application.properties](" + propertiesFileUri + ")", 29, 46, 58)); } @@ -76,14 +76,14 @@ public void testConfigPropertyExpressionHover() throws Exception { // Position(35, 26) is the character after the | symbol: // @Scheduled(cron = "${c|ron.expr}", every = "${every.expr}") - assertJavaHover(new Position(35, 26), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(35, 26), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`cron.expr = */5 * * * * ?` *in* [application.properties](" + propertiesFileUri + ")", 35, 23, 35)); saveFile(QuarkusConfigSourceProvider.APPLICATION_PROPERTIES_FILE, "every.expr=*/5 * * * * ?\r\n", javaProject); // Position(35, 50) is the character after the | symbol: // @Scheduled(cron = "{cron.expr}", every = "{e|very.expr}") - assertJavaHover(new Position(35, 50), javaFileUri, PsiUtilsLSImpl.getInstance(myProject), + assertJavaHover(new Position(35, 50), javaFileUri, PsiUtilsLSImpl.getInstance(getProject()), h("`every.expr = */5 * * * * ?` *in* [application.properties](" + propertiesFileUri + ")", 35, 47, 60)); }