IDEA-136712 Optimize imports on module should not process files from test data

GitOrigin-RevId: d9488d96ed4cd7a888d5b8e5366356df28ec331d
This commit is contained in:
Alexey Kudravtsev
2020-03-02 13:31:17 +00:00
committed by intellij-monorepo-bot
parent 945a38826d
commit 92e11ccec7
4 changed files with 62 additions and 2 deletions
@@ -8,6 +8,7 @@ import com.intellij.lang.ImportOptimizer;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.EmptyRunnable;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
@@ -90,6 +91,9 @@ public class JavaImportOptimizer implements ImportOptimizer {
@Override
public boolean supports(@NotNull PsiFile file) {
return file instanceof PsiJavaFile && !TemplateLanguageUtil.isTemplateDataFile(file);
return file instanceof PsiJavaFile
&& !TemplateLanguageUtil.isTemplateDataFile(file)
&& ProjectRootManager.getInstance(file.getProject()).getFileIndex().isInSource(file.getViewProvider().getVirtualFile())
;
}
}
@@ -0,0 +1,6 @@
package testData;
import java.util.*;
import java.lang.String;
class X {
}
@@ -0,0 +1,50 @@
/*
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.java.psi;
import com.intellij.codeInsight.actions.OptimizeImportsProcessor;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.roots.ModuleRootModificationUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.impl.source.PostprocessReformattingAspect;
import com.intellij.testFramework.HeavyPlatformTestCase;
import com.intellij.testFramework.JavaPsiTestCase;
import com.intellij.testFramework.PsiTestUtil;
@HeavyPlatformTestCase.WrapInCommand
public class OptimizeImportsMultiFileTest extends JavaPsiTestCase {
public void testOptimizeImportInPackageIgnoresFilesOutsideSourceRootsForExampleTestData() throws Exception {
VirtualFile root =
PsiTestUtil.createTestProjectStructure(myProject, myModule, OptimizeImportsTest.BASE_PATH + "/testData", myFilesToDelete, false);
ModuleRootModificationUtil.addContentRoot(getModule(), root);
VirtualFile x = root.findChild("X.java");
String textBefore = VfsUtilCore.loadText(x);
PsiDirectory directory = myPsiManager.findDirectory(root);
assertNotNull(directory);
WriteCommandAction.runWriteCommandAction(null, () -> {
new OptimizeImportsProcessor(getProject(), directory, true).run();
PostprocessReformattingAspect.getInstance(getProject()).doPostponedFormatting();
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
ApplicationManager.getApplication().saveAll();
});
String textAfter = VfsUtilCore.loadText(x);
assertEquals(textBefore, textAfter);
}
}
@@ -28,7 +28,7 @@ import com.intellij.psi.codeStyle.modifier.CodeStyleSettingsModifier;
import com.intellij.testFramework.ServiceContainerUtil;
public class OptimizeImportsTest extends OptimizeImportsTestCase {
private static final String BASE_PATH = PathManagerEx.getTestDataPath() + "/psi/optimizeImports";
static final String BASE_PATH = PathManagerEx.getTestDataPath() + "/psi/optimizeImports";
@Override
protected String getTestDataPath() {