/* * User: anna * Date: 17-Jun-2010 */ package com.intellij.codeInsight; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.sillyAssignment.SillyAssignmentInspection; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ex.PathManagerEx; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.AnnotationOrderRootType; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.JavaPsiFacade; import com.intellij.testFramework.IdeaTestCase; import com.intellij.testFramework.UsefulTestCase; import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; import com.intellij.testFramework.fixtures.*; import java.io.File; import java.io.IOException; public class SuppressExternalTest extends UsefulTestCase { protected CodeInsightTestFixture myFixture; private LanguageLevel myLanguageLevel; public SuppressExternalTest() { IdeaTestCase.initPlatformPrefix(); } @Override public void setUp() throws Exception { super.setUp(); final IdeaTestFixtureFactory fixtureFactory = IdeaTestFixtureFactory.getFixtureFactory(); final TestFixtureBuilder testFixtureBuilder = fixtureFactory.createFixtureBuilder(); myFixture = JavaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(testFixtureBuilder.getFixture()); myFixture.setTestDataPath(PathManagerEx.getTestDataPath() + "/codeInsight/externalAnnotations"); final JavaModuleFixtureBuilder builder = testFixtureBuilder.addModule(JavaModuleFixtureBuilder.class); new File(myFixture.getTempDirPath() + "/src/").mkdir(); builder.addContentRoot(myFixture.getTempDirPath()).addSourceRoot("src"); builder.setMockJdkLevel(JavaModuleFixtureBuilder.MockJdkLevel.jdk15); myFixture.enableInspections(new SillyAssignmentInspection()); myFixture.setUp(); addAnnotationsModuleRoot(); final JavaPsiFacade facade = JavaPsiFacade.getInstance(myFixture.getProject()); myLanguageLevel = LanguageLevelProjectExtension.getInstance(facade.getProject()).getLanguageLevel(); LanguageLevelProjectExtension.getInstance(facade.getProject()).setLanguageLevel(LanguageLevel.JDK_1_5); } private void addAnnotationsModuleRoot() throws IOException { myFixture.copyDirectoryToProject("content/anno/suppressed", "content/anno/suppressed"); ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { final Module module = myFixture.getModule(); final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel(); model.setRootUrls(AnnotationOrderRootType.getInstance(), new String[]{VfsUtil.pathToUrl(myFixture.getTempDirPath() + "/content/anno")}); model.commit(); } }); } @Override public void tearDown() throws Exception { LanguageLevelProjectExtension.getInstance(myFixture.getProject()).setLanguageLevel(myLanguageLevel); myFixture.tearDown(); myFixture = null; super.tearDown(); } private void doTest(String testName) throws Exception { final IntentionAction action = myFixture.getAvailableIntention("Suppress for method", "src/suppressed/" + testName + ".java"); assertNotNull(action); myFixture.launchAction(action); myFixture.checkResultByFile("content/anno/suppressed/annotations.xml", "content/anno/suppressed/annotations" + testName + "_after.xml", true); } public void testNewSuppress() throws Throwable { doTest("NewSuppress"); } public void testExistingExternalName() throws Exception { doTest("ExistingExternalName"); } public void testSecondSuppression() throws Exception { doTest("SecondSuppression"); } }