CodeInsightTestFixture rethrows all checked exceptions as RuntimeException
authorDmitry Jemerov <yole@jetbrains.com>
Thu, 8 Jul 2010 12:14:28 +0000 (16:14 +0400)
committerDmitry Jemerov <yole@jetbrains.com>
Thu, 8 Jul 2010 12:15:57 +0000 (16:15 +0400)
platform/platform-api/src/com/intellij/openapi/application/RunResult.java
platform/testFramework/src/com/intellij/testFramework/InspectionTestUtil.java
platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java
platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java

index 0d901596a6c0d57b88001327518dfc7ea976ff2c..daddc8350144f68c211ba5be894c5061c2ba8d8d 100644 (file)
@@ -64,7 +64,7 @@ public class RunResult<T> extends Result<T> {
     return this;
   }
 
-  public void throwException() throws Exception {
+  public RunResult<T> throwException() {
     if (hasException()) {
       if (myThrowable instanceof RuntimeException) {
         throw (RuntimeException)myThrowable;
@@ -75,6 +75,7 @@ public class RunResult<T> extends Result<T> {
 
       throw new RuntimeException(myThrowable);
     }
+    return this;
   }
 
   public boolean hasException() {
index f33c5a374cad59de916db4bb33f2e7ac29c32539..4a4dc489d45726e51e7333230ff6f4466d4916bc 100644 (file)
@@ -129,16 +129,21 @@ expected:
     return Comparing.equal(reportedFile.getName(), expectedProblem.getChildText("file"));
   }
 
-  public static void compareToolResults(InspectionTool tool, boolean checkRange, String testDir) throws Exception {
+  public static void compareToolResults(InspectionTool tool, boolean checkRange, String testDir) {
     final Element root = new Element("problems");
     final Document doc = new Document(root);
     tool.updateContent();  //e.g. dead code need check for reachables
     tool.exportResults(root);
 
     File file = new File(testDir + "/expected.xml");
-    Document expectedDocument = JDOMUtil.loadDocument(file);
+    try {
+      Document expectedDocument = JDOMUtil.loadDocument(file);
 
-    compareWithExpected(expectedDocument, doc, checkRange);
+      compareWithExpected(expectedDocument, doc, checkRange);
+    }
+    catch (Exception e) {
+      throw new RuntimeException(e);
+    }
   }
 
   public static void runTool(final InspectionTool tool, final AnalysisScope scope, GlobalInspectionContextImpl globalContext, final InspectionManagerEx inspectionManager) {
index 3f5c3a2112eb3203ef42f599ebd4c6d60f2b6eb7..3e520021ec932e4cbe79702014b76f3465c14091 100644 (file)
@@ -76,11 +76,11 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
 
   TempDirTestFixture getTempDirFixture();
 
-  VirtualFile copyFileToProject(@NonNls String sourceFilePath, @NonNls String targetPath) throws IOException;
+  VirtualFile copyFileToProject(@NonNls String sourceFilePath, @NonNls String targetPath);
 
-  VirtualFile copyDirectoryToProject(@NonNls String sourceFilePath, @NonNls String targetPath) throws IOException;
+  VirtualFile copyDirectoryToProject(@NonNls String sourceFilePath, @NonNls String targetPath);
 
-  VirtualFile copyFileToProject(@TestDataFile @NonNls String sourceFilePath) throws IOException;
+  VirtualFile copyFileToProject(@TestDataFile @NonNls String sourceFilePath);
 
   /**
    * Enables inspections for highlighting tests.
@@ -113,13 +113,12 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    * @param filePaths the first file is tested only; the others are just copied along the first.
    *
    * @return highlighting duration in milliseconds.
-   * @throws Exception any exception thrown during highlighting.
    */
-  long testHighlighting(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, @TestDataFile @NonNls String... filePaths) throws Exception;
+  long testHighlighting(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, @TestDataFile @NonNls String... filePaths);
 
-  long testHighlightingAllFiles(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, @TestDataFile @NonNls String... filePaths) throws Exception;
+  long testHighlightingAllFiles(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, @TestDataFile @NonNls String... filePaths);
 
-  long testHighlightingAllFiles(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, @NonNls VirtualFile... files) throws Exception;
+  long testHighlightingAllFiles(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, @NonNls VirtualFile... files);
 
   /**
    * Check highlighting of file already loaded by configure* methods
@@ -127,11 +126,10 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    * @param checkInfos
    * @param checkWeakWarnings
    * @return
-   * @throws Exception
    */
-  long checkHighlighting(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings) throws Exception;
+  long checkHighlighting(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings);
 
-  long checkHighlighting() throws Exception;
+  long checkHighlighting();
 
   /**
    * Runs highlighting test for the given files.
@@ -140,13 +138,12 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    * @param filePaths the first file is tested only; the others are just copied along with the first.
    *
    * @return highlighting duration in milliseconds
-   * @throws Exception any exception thrown during highlighting
    */
-  long testHighlighting(@NonNls String... filePaths) throws Exception;
+  long testHighlighting(@NonNls String... filePaths);
 
-  long testHighlighting(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, VirtualFile file) throws Exception;
+  long testHighlighting(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings, VirtualFile file);
 
-  void testInspection(String testDir, InspectionTool tool) throws Exception;
+  void testInspection(String testDir, InspectionTool tool);
 
   /**
    * @return all highlightings for current file
@@ -159,12 +156,11 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    *
    * @param filePaths
    * @return null if no reference found.
-   * @throws Exception any exception.
    *
    * @see #getReferenceAtCaretPositionWithAssertion(String...)
    */
   @Nullable
-  PsiReference getReferenceAtCaretPosition(@TestDataFile @NonNls String... filePaths) throws Exception;
+  PsiReference getReferenceAtCaretPosition(@TestDataFile @NonNls String... filePaths);
 
   /**
    * Finds the reference in position marked by {@link #CARET_MARKER}.
@@ -172,67 +168,62 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    *
    * @param filePaths
    * @return founded reference
-   * @throws Exception any exception
    *
    * @see #getReferenceAtCaretPosition(String...)
    */
   @NotNull
-  PsiReference getReferenceAtCaretPositionWithAssertion(@NonNls @TestDataFile String... filePaths) throws Exception;
+  PsiReference getReferenceAtCaretPositionWithAssertion(@NonNls @TestDataFile String... filePaths);
 
   /**
    * Collects available intentions at caret position.
    *
    * @param filePaths the first file is tested only; the others are just copied along with the first.
    * @return available intentions.
-   * @throws Exception any exception.
    * @see #CARET_MARKER
    */
   @NotNull
-  List<IntentionAction> getAvailableIntentions(@NonNls String... filePaths) throws Exception;
+  List<IntentionAction> getAvailableIntentions(@NonNls String... filePaths);
 
   @NotNull
-  List<IntentionAction> getAllQuickFixes(@NonNls String... filePaths) throws Exception;
+  List<IntentionAction> getAllQuickFixes(@NonNls String... filePaths);
 
   @NotNull
-  List<IntentionAction> getAvailableIntentions() throws Exception;
+  List<IntentionAction> getAvailableIntentions();
 
   /**
    * Returns all intentions whose text contains hint
    * @param hint
    * @return
-   * @throws Exception
    */
-  List<IntentionAction> filterAvailableIntentions(@NotNull String hint) throws Exception;
+  List<IntentionAction> filterAvailableIntentions(@NotNull String hint);
 
-  IntentionAction findSingleIntention(@NotNull String hint) throws Exception;
+  IntentionAction findSingleIntention(@NotNull String hint);
 
-  IntentionAction getAvailableIntention(final String intentionName, final String... filePaths) throws Exception;
+  IntentionAction getAvailableIntention(final String intentionName, final String... filePaths);
 
   /**
    * Launches the given action. Use {@link #checkResultByFile(String)} to check the result.
    *
    * @param action the action to be launched.
-   * @throws Exception any exception.
    */
-  void launchAction(@NotNull IntentionAction action) throws Exception;
+  void launchAction(@NotNull IntentionAction action);
 
   void configureByFile(@TestDataFile @NonNls String file);
 
   void configureByFiles(@NonNls String... files);
 
-  PsiFile configureByText(FileType fileType, @NonNls String text) throws IOException;
+  PsiFile configureByText(FileType fileType, @NonNls String text);
 
-  PsiFile configureByText(String fileName, @NonNls String text) throws IOException;
+  PsiFile configureByText(String fileName, @NonNls String text);
 
   /**
    * Compares current file against the given one.
    *
    * @param expectedFile file to check against.
-   * @throws Exception any exception.
    */
-  void checkResultByFile(@TestDataFile @NonNls String expectedFile) throws Exception;
+  void checkResultByFile(@TestDataFile @NonNls String expectedFile);
   
-  void checkResultByFile(@TestDataFile @NonNls String expectedFile, boolean ignoreTrailingWhitespaces) throws Exception;
+  void checkResultByFile(@TestDataFile @NonNls String expectedFile, boolean ignoreTrailingWhitespaces);
 
   /**
    * Compares two files.
@@ -240,11 +231,10 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    * @param filePath file to be checked.
    * @param expectedFile file to check against.
    * @param ignoreTrailingWhitespaces set to true to ignore differences in whitespaces.
-   * @throws Exception any exception.
    */
-  void checkResultByFile(@NonNls String filePath, @TestDataFile @NonNls String expectedFile, boolean ignoreTrailingWhitespaces) throws Exception;
+  void checkResultByFile(@NonNls String filePath, @TestDataFile @NonNls String expectedFile, boolean ignoreTrailingWhitespaces);
 
-  void testCompletion(@NonNls String[] filesBefore, @TestDataFile @NonNls String fileAfter) throws Exception;
+  void testCompletion(@NonNls String[] filesBefore, @TestDataFile @NonNls String fileAfter);
 
   /**
    * Runs basic completion in caret position in fileBefore.
@@ -252,18 +242,16 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    * @param fileBefore
    * @param fileAfter
    * @param additionalFiles
-   * @throws Exception
    */
-  void testCompletion(@TestDataFile @NonNls String fileBefore, @TestDataFile @NonNls String fileAfter, final String... additionalFiles) throws Exception;
+  void testCompletion(@TestDataFile @NonNls String fileBefore, @TestDataFile @NonNls String fileAfter, final String... additionalFiles);
 
   /**
    * Runs basic completion in caret position in fileBefore.
    * Checks that lookup is shown and it contains items with given lookup strings
    * @param fileBefore
    * @param items most probably will contain > 1 items
-   * @throws Exception
    */
-  void testCompletionVariants(@TestDataFile @NonNls String fileBefore, @NonNls String... items) throws Exception;
+  void testCompletionVariants(@TestDataFile @NonNls String fileBefore, @NonNls String... items);
 
   /**
    * Launches renaming refactoring and checks the result.
@@ -272,21 +260,20 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    * @param fileAfter result file to be checked against.
    * @param newName new name for the element.
    * @param additionalFiles
-   * @throws Exception any exception.
    * @see #testRename(String, String, String, String[])
    */
   void testRename(@TestDataFile @NonNls String fileBefore,
-                  @TestDataFile @NonNls String fileAfter, @NonNls String newName, final String... additionalFiles) throws Exception;
+                  @TestDataFile @NonNls String fileAfter, @NonNls String newName, final String... additionalFiles);
 
-  void testRename(String fileAfter, String newName) throws Exception;
+  void testRename(String fileAfter, String newName);
 
   Collection<UsageInfo> testFindUsages(@TestDataFile @NonNls String... fileNames);
 
-  Collection<UsageInfo> findUsages(final PsiElement to) throws Exception;
+  Collection<UsageInfo> findUsages(final PsiElement to);
 
   RangeHighlighter[] testHighlightUsages(String... files);
 
-  void moveFile(@NonNls String filePath, @NonNls String to, final String... additionalFiles) throws Exception;
+  void moveFile(@NonNls String filePath, @NonNls String to, final String... additionalFiles);
 
   /**
    * Returns gutter renderer at the caret position.
@@ -294,10 +281,9 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
    *
    * @param filePath file path
    * @return gutter renderer at the caret position.
-   * @throws Exception any exception.
    */
   @Nullable
-  GutterIconRenderer findGutter(@NonNls String filePath) throws Exception;
+  GutterIconRenderer findGutter(@NonNls String filePath);
 
   PsiManager getPsiManager();
 
@@ -314,19 +300,19 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
   void setFileContext(@Nullable PsiElement context);
 
   @NotNull
-  Collection<GutterIconRenderer> findAllGutters(String filePath) throws Exception;
+  Collection<GutterIconRenderer> findAllGutters(String filePath);
 
   void type(final char c);
 
   void performEditorAction(String actionId);
 
-  int configureFromTempProjectFile(String filePath) throws IOException;
+  int configureFromTempProjectFile(String filePath);
 
-  void configureFromExistingVirtualFile(VirtualFile f) throws IOException;
+  void configureFromExistingVirtualFile(VirtualFile f);
 
-  PsiFile addFileToProject(@NonNls String relativePath, @NonNls String fileText) throws IOException;
+  PsiFile addFileToProject(@NonNls String relativePath, @NonNls String fileText);
 
-  List<String> getCompletionVariants(String... filesBefore) throws Exception;
+  List<String> getCompletionVariants(String... filesBefore);
 
   @Nullable
   LookupElement[] getLookupElements();
@@ -339,9 +325,9 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
   @NotNull
   PsiElement getElementAtCaret();
 
-  void renameElementAtCaret(String newName) throws Exception;
+  void renameElementAtCaret(String newName);
 
-  void renameElement(PsiElement element, String newName) throws Exception;
+  void renameElement(PsiElement element, String newName);
 
   void allowTreeAccessForFile(VirtualFile file);
 
@@ -350,7 +336,7 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
   void renameElement(PsiElement element,
                              String newName,
                              boolean searchInComments,
-                             boolean searchTextOccurrences) throws Exception;
+                             boolean searchTextOccurrences);
 
   <T extends PsiElement> T findElementByText(String text, Class<T> elementClass);
 }
index 6bf2e3d1052f3b79ce2b9a52dee158ced5eaa2a3..07b303e3a8b9aac6f7e6000171e135205a1bcf7c 100644 (file)
@@ -160,7 +160,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return myTempDirFixture;
   }
 
-  public VirtualFile copyFileToProject(@NonNls final String sourceFilePath, @NonNls final String targetPath) throws IOException {
+  public VirtualFile copyFileToProject(@NonNls final String sourceFilePath, @NonNls final String targetPath) {
     File fromFile = new File(getTestDataPath() + "/" + sourceFilePath);
     if (!fromFile.exists()) {
       fromFile = new File(sourceFilePath);
@@ -181,7 +181,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
         destFile.mkdirs();
       }
       else {
-        FileUtil.copy(fromFile, destFile);
+        try {
+          FileUtil.copy(fromFile, destFile);
+        }
+        catch (IOException e) {
+          throw new RuntimeException(e);
+        }
       }
     }
     final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(destFile);
@@ -189,7 +194,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return file;
   }
 
-  public VirtualFile copyDirectoryToProject(@NonNls final String sourceFilePath, @NonNls final String targetPath) throws IOException {
+  public VirtualFile copyDirectoryToProject(@NonNls final String sourceFilePath, @NonNls final String targetPath)  {
     assert getTestDataPath() != null: "test data path not specified";
     final File fromFile = new File(getTestDataPath() + "/" + sourceFilePath);
     if (myTempDirFixture instanceof LightTempDirTestFixtureImpl) {
@@ -197,7 +202,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     }
     else {
       final File destFile = new File(getTempDirPath() + "/" + targetPath);
-      FileUtil.copyDir(fromFile, destFile);
+      try {
+        FileUtil.copyDir(fromFile, destFile);
+      }
+      catch (IOException e) {
+        throw new RuntimeException(e);
+      }
       final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(destFile);
       Assert.assertNotNull(file);
       file.refresh(false, true);
@@ -205,7 +215,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     }
   }
 
-  public VirtualFile copyFileToProject(@NonNls final String sourceFilePath) throws IOException {
+  public VirtualFile copyFileToProject(@NonNls final String sourceFilePath) {
     return copyFileToProject(sourceFilePath, sourceFilePath);
   }
 
@@ -274,7 +284,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   public long testHighlighting(final boolean checkWarnings,
                                final boolean checkInfos,
                                final boolean checkWeakWarnings,
-                               final String... filePaths) throws Exception {
+                               final String... filePaths) {
     final Ref<Long> duration = new Ref<Long>();
     new WriteCommandAction.Simple(myProjectFixture.getProject()) {
 
@@ -291,7 +301,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   public long testHighlightingAllFiles(final boolean checkWarnings,
                                        final boolean checkInfos,
                                        final boolean checkWeakWarnings,
-                                       @NonNls final String... filePaths) throws Exception {
+                                       @NonNls final String... filePaths) {
     final ArrayList<VirtualFile> files = new ArrayList<VirtualFile>();
     for (String path : filePaths) {
       files.add(copyFileToProject(path));
@@ -302,7 +312,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   public long testHighlightingAllFiles(final boolean checkWarnings,
                                final boolean checkInfos,
                                final boolean checkWeakWarnings,
-                               @NonNls final VirtualFile... files) throws Exception {
+                               @NonNls final VirtualFile... files) {
     final Ref<Long> duration = new Ref<Long>();
     new WriteCommandAction.Simple(myProjectFixture.getProject()) {
 
@@ -331,7 +341,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     }
   }
 
-  public long checkHighlighting(final boolean checkWarnings, final boolean checkInfos, final boolean checkWeakWarnings) throws Exception {
+  public long checkHighlighting(final boolean checkWarnings, final boolean checkInfos, final boolean checkWeakWarnings) {
     final Ref<Long> duration = new Ref<Long>();
     new WriteCommandAction.Simple(myProjectFixture.getProject()) {
       protected void run() throws Exception {
@@ -341,15 +351,15 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return duration.get().longValue();
   }
 
-  public long checkHighlighting() throws Exception {
+  public long checkHighlighting() {
     return checkHighlighting(true, true, true);
   }
 
-  public long testHighlighting(final String... filePaths) throws Exception {
+  public long testHighlighting(final String... filePaths) {
     return testHighlighting(true, true, true, filePaths);
   }
 
-  public long testHighlighting(final boolean checkWarnings, final boolean checkInfos, final boolean checkWeakWarnings, final VirtualFile file) throws Exception {
+  public long testHighlighting(final boolean checkWarnings, final boolean checkInfos, final boolean checkWeakWarnings, final VirtualFile file) {
     final Ref<Long> duration = new Ref<Long>();
     new WriteCommandAction.Simple(myProjectFixture.getProject()) {
       protected void run() throws Exception {
@@ -365,7 +375,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     myEditor = createEditor(file);
   }
 
-  public void testInspection(String testDir, InspectionTool tool) throws Exception {
+  public void testInspection(String testDir, InspectionTool tool) {
     VirtualFile sourceDir = copyDirectoryToProject(new File(testDir, "src").getPath(), "src");
     AnalysisScope scope = new AnalysisScope(getPsiManager().findDirectory(sourceDir));
 
@@ -379,7 +389,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   }
 
   @Nullable
-  public PsiReference getReferenceAtCaretPosition(final String... filePaths) throws Exception {
+  public PsiReference getReferenceAtCaretPosition(final String... filePaths) {
     new WriteCommandAction<PsiReference>(myProjectFixture.getProject()) {
       protected void run(final Result<PsiReference> result) throws Exception {
         configureByFilesInner(filePaths);
@@ -389,14 +399,14 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   }
 
   @NotNull
-  public PsiReference getReferenceAtCaretPositionWithAssertion(final String... filePaths) throws Exception {
+  public PsiReference getReferenceAtCaretPositionWithAssertion(final String... filePaths) {
     final PsiReference reference = getReferenceAtCaretPosition(filePaths);
     assert reference != null: "no reference found at " + myEditor.getCaretModel().getLogicalPosition();
     return reference;
   }
 
   @NotNull
-  public List<IntentionAction> getAvailableIntentions(final String... filePaths) throws Exception {
+  public List<IntentionAction> getAvailableIntentions(final String... filePaths) {
 
     return new WriteCommandAction<List<IntentionAction>>(myProjectFixture.getProject()) {
       protected void run(final Result<List<IntentionAction>> result) throws Exception {
@@ -405,7 +415,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
         }
         result.setResult(getAvailableIntentions());
       }
-    }.execute().getResultObject();
+    }.execute().throwException().getResultObject();
   }
 
   @NotNull
@@ -422,7 +432,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
         }
         result.setResult(actions);
       }
-    }.execute().getResultObject();
+    }.execute().throwException().getResultObject();
   }
 
   @NotNull
@@ -431,7 +441,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return getAvailableIntentions(myEditor, myFile);
   }
 
-  public List<IntentionAction> filterAvailableIntentions(@NotNull final String hint) throws Exception {
+  public List<IntentionAction> filterAvailableIntentions(@NotNull final String hint) {
     final List<IntentionAction> availableIntentions = getAvailableIntentions();
     return ContainerUtil.findAll(availableIntentions, new Condition<IntentionAction>() {
       public boolean value(final IntentionAction intentionAction) {
@@ -440,7 +450,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     });
   }
 
-  public IntentionAction findSingleIntention(@NotNull final String hint) throws Exception {
+  public IntentionAction findSingleIntention(@NotNull final String hint) {
     final List<IntentionAction> list = filterAvailableIntentions(hint);
     if (list.size() != 1) {
       Assert.fail(StringUtil.join(getAvailableIntentions(), new Function<IntentionAction, String>() {
@@ -452,12 +462,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return UsefulTestCase.assertOneElement(list);
   }
 
-  public IntentionAction getAvailableIntention(final String intentionName, final String... filePaths) throws Exception {
+  public IntentionAction getAvailableIntention(final String intentionName, final String... filePaths) {
     List<IntentionAction> intentions = getAvailableIntentions(filePaths);
     return CodeInsightTestUtil.findIntentionByText(intentions, intentionName);
   }
 
-  public void launchAction(@NotNull final IntentionAction action) throws Exception {
+  public void launchAction(@NotNull final IntentionAction action) {
     new WriteCommandAction(myProjectFixture.getProject()) {
       protected void run(final Result result) throws Exception {
         ShowIntentionActionsHandler.chooseActionAndInvoke(getFile(), getEditor(), action, action.getText());
@@ -466,7 +476,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
 
   }
 
-  public void testCompletion(final String[] filesBefore, final String fileAfter) throws Exception {
+  public void testCompletion(final String[] filesBefore, final String fileAfter) {
     assertInitialized();
     configureByFiles(filesBefore);
     final LookupElement[] items = complete(CompletionType.BASIC);
@@ -480,17 +490,17 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     Assert.assertNotNull("setUp() hasn't been called", myPsiManager);
   }
 
-  public void testCompletion(String fileBefore, String fileAfter, final String... additionalFiles) throws Exception {
+  public void testCompletion(String fileBefore, String fileAfter, final String... additionalFiles) {
     testCompletion(ArrayUtil.reverseArray(ArrayUtil.append(additionalFiles, fileBefore)), fileAfter);
   }
 
-  public void testCompletionVariants(final String fileBefore, final String... expectedItems) throws Exception {
+  public void testCompletionVariants(final String fileBefore, final String... expectedItems) {
     assertInitialized();
     final List<String> result = getCompletionVariants(fileBefore);
     UsefulTestCase.assertSameElements(result, expectedItems);
   }
 
-  public List<String> getCompletionVariants(final String... filesBefore) throws Exception {
+  public List<String> getCompletionVariants(final String... filesBefore) {
     assertInitialized();
     configureByFiles(filesBefore);
     final LookupElement[] items = complete(CompletionType.BASIC);
@@ -511,13 +521,13 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     });
   }
 
-  public void testRename(final String fileBefore, final String fileAfter, final String newName, final String... additionalFiles) throws Exception {
+  public void testRename(final String fileBefore, final String fileAfter, final String newName, final String... additionalFiles) {
     assertInitialized();
     configureByFiles(ArrayUtil.reverseArray(ArrayUtil.append(additionalFiles, fileBefore)));
     testRename(fileAfter, newName);
   }
 
-  public void testRename(final String fileAfter, final String newName) throws Exception {
+  public void testRename(final String fileAfter, final String newName) {
     renameElementAtCaret(newName);
     checkResultByFile(fileAfter);
   }
@@ -531,11 +541,11 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return element;
   }
 
-  public void renameElementAtCaret(final String newName) throws Exception {
+  public void renameElementAtCaret(final String newName) {
     renameElement(getElementAtCaret(), newName);
   }
 
-  public void renameElement(final PsiElement element, final String newName) throws Exception {
+  public void renameElement(final PsiElement element, final String newName) {
     final boolean searchInComments = false;
     final boolean searchTextOccurrences = false;
     renameElement(element, newName, searchInComments, searchTextOccurrences);
@@ -544,7 +554,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   public void renameElement(final PsiElement element,
                              final String newName,
                              final boolean searchInComments,
-                             final boolean searchTextOccurrences) throws Exception {
+                             final boolean searchTextOccurrences) {
     new WriteCommandAction.Simple(myProjectFixture.getProject()) {
       protected void run() throws Exception {
         final PsiElement substitution = RenamePsiElementProcessor.forElement(element).substituteElementToRename(element, myEditor);
@@ -627,7 +637,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return editor.getMarkupModel().getAllHighlighters();
   }
 
-  public void moveFile(@NonNls final String filePath, @NonNls final String to, final String... additionalFiles) throws Exception {
+  public void moveFile(@NonNls final String filePath, @NonNls final String to, final String... additionalFiles) {
     assertInitialized();
     final Project project = myProjectFixture.getProject();
     new WriteCommandAction.Simple(project) {
@@ -644,7 +654,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   }
 
   @Nullable
-  public GutterIconRenderer findGutter(final String filePath) throws Exception {
+  public GutterIconRenderer findGutter(final String filePath) {
     assertInitialized();
     final Project project = myProjectFixture.getProject();
     final Ref<GutterIconRenderer> result = new Ref<GutterIconRenderer>();
@@ -670,7 +680,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   }
 
   @NotNull
-  public Collection<GutterIconRenderer> findAllGutters(final String filePath) throws Exception {
+  public Collection<GutterIconRenderer> findAllGutters(final String filePath) {
     assertInitialized();
     final Project project = myProjectFixture.getProject();
     final SortedMap<Integer, List<GutterIconRenderer>> result = new TreeMap<Integer, List<GutterIconRenderer>>();
@@ -703,18 +713,23 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
   }
 
 
-  public PsiFile addFileToProject(@NonNls final String relativePath, @NonNls final String fileText) throws IOException {
+  public PsiFile addFileToProject(@NonNls final String relativePath, @NonNls final String fileText) {
     assertInitialized();
     return addFileToProject(getTempDirPath(), relativePath, fileText);
   }
 
-  protected PsiFile addFileToProject(String rootPath, String relativePath, String fileText) throws IOException {
-    if (myTempDirFixture instanceof LightTempDirTestFixtureImpl) {
-      final VirtualFile file = myTempDirFixture.createFile(relativePath, fileText);
-      return PsiManager.getInstance(getProject()).findFile(file);
-    }
+  protected PsiFile addFileToProject(String rootPath, String relativePath, String fileText) {
+    try {
+      if (myTempDirFixture instanceof LightTempDirTestFixtureImpl) {
+        final VirtualFile file = myTempDirFixture.createFile(relativePath, fileText);
+        return PsiManager.getInstance(getProject()).findFile(file);
+      }
 
-    return ((HeavyIdeaTestFixture)myProjectFixture).addFileToProject(rootPath, relativePath, fileText);
+      return ((HeavyIdeaTestFixture)myProjectFixture).addFileToProject(rootPath, relativePath, fileText);
+    }
+    catch (IOException e) {
+      throw new RuntimeException(e);
+    }
   }
 
   public <T> void registerExtension(final ExtensionsArea area, final ExtensionPointName<T> epName, final T extension) {
@@ -797,11 +812,11 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     checkResult("TEXT", stripTrailingSpaces, SelectionAndCaretMarkupLoader.fromText(text, getProject()), myFile.getText());
   }
 
-  public void checkResultByFile(final String expectedFile) throws Exception {
+  public void checkResultByFile(final String expectedFile) {
     checkResultByFile(expectedFile, false);
   }
 
-  public void checkResultByFile(final String expectedFile, final boolean ignoreTrailingWhitespaces) throws Exception {
+  public void checkResultByFile(final String expectedFile, final boolean ignoreTrailingWhitespaces) {
     assertInitialized();
     new WriteCommandAction.Simple(myProjectFixture.getProject()) {
 
@@ -811,7 +826,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     }.execute().throwException();
   }
 
-  public void checkResultByFile(final String filePath, final String expectedFile, final boolean ignoreTrailingWhitespaces) throws Exception {
+  public void checkResultByFile(final String filePath, final String expectedFile, final boolean ignoreTrailingWhitespaces) {
     assertInitialized();
 
     new WriteCommandAction.Simple(myProjectFixture.getProject()) {
@@ -957,7 +972,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     }.execute();
   }
 
-  public PsiFile configureByText(final FileType fileType, @NonNls final String text) throws IOException {
+  public PsiFile configureByText(final FileType fileType, @NonNls final String text) {
     assertInitialized();
     final String extension = fileType.getDefaultExtension();
     final FileTypeManager fileTypeManager = FileTypeManager.getInstance();
@@ -972,24 +987,29 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     return configureByText(fileName, text);
   }
 
-  public PsiFile configureByText(String fileName, @NonNls String text) throws IOException {
+  public PsiFile configureByText(String fileName, @NonNls String text) {
     assertInitialized();
-    final VirtualFile vFile;
-    if (myTempDirFixture instanceof LightTempDirTestFixtureImpl) {
-      final VirtualFile root = LightPlatformTestCase.getSourceRoot();
-      root.refresh(false, false);
-      vFile = root.findOrCreateChildData(this, fileName);
-    }
-    else{
-      String prefix = StringUtil.getPackageName(fileName);
-      if (prefix.length() < 3) {
-        prefix += "___";
+    try {
+      final VirtualFile vFile;
+      if (myTempDirFixture instanceof LightTempDirTestFixtureImpl) {
+        final VirtualFile root = LightPlatformTestCase.getSourceRoot();
+        root.refresh(false, false);
+        vFile = root.findOrCreateChildData(this, fileName);
+      }
+      else{
+        String prefix = StringUtil.getPackageName(fileName);
+        if (prefix.length() < 3) {
+          prefix += "___";
+        }
+        final File tempFile = File.createTempFile(prefix, "." + StringUtil.getShortName(fileName), new File(getTempDirPath()));
+        vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(tempFile);
       }
-      final File tempFile = File.createTempFile(prefix, "." + StringUtil.getShortName(fileName), new File(getTempDirPath()));
-      vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(tempFile);
+      VfsUtil.saveText(vFile, text);
+      configureInner(vFile, SelectionAndCaretMarkupLoader.fromFile(vFile, getProject()));
+    }
+    catch (IOException e) {
+      throw new RuntimeException(e);
     }
-    VfsUtil.saveText(vFile, text);
-    configureInner(vFile, SelectionAndCaretMarkupLoader.fromFile(vFile, getProject()));
     return myFile;
   }
 
@@ -1009,21 +1029,21 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
    * @return caret offset or -1 if caret marker does not present
    * @throws IOException
    */
-  private int configureByFileInner(@NonNls String filePath) throws IOException {
+  private int configureByFileInner(@NonNls String filePath) {
     assertInitialized();
     final VirtualFile file = copyFileToProject(filePath);
     return configureByFileInner(file);
   }
 
-  public int configureFromTempProjectFile(final String filePath) throws IOException {
+  public int configureFromTempProjectFile(final String filePath)  {
     return configureByFileInner(findFileInTempDir(filePath));
   }
 
-  public void configureFromExistingVirtualFile(VirtualFile f) throws IOException {
+  public void configureFromExistingVirtualFile(VirtualFile f) {
     configureByFileInner(f);
   }
 
-  private int configureByFileInner(final VirtualFile copy) throws IOException {
+  private int configureByFileInner(final VirtualFile copy) {
     return configureInner(copy, SelectionAndCaretMarkupLoader.fromFile(copy, getProject()));
   }
 
@@ -1277,8 +1297,15 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
     static SelectionAndCaretMarkupLoader fromFile(String path, Project project) throws IOException {
       return new SelectionAndCaretMarkupLoader(StringUtil.convertLineSeparators(new String(FileUtil.loadFileText(new File(path)))), project);
     }
-    static SelectionAndCaretMarkupLoader fromFile(VirtualFile file, Project project) throws IOException {
-      return new SelectionAndCaretMarkupLoader(StringUtil.convertLineSeparators(VfsUtil.loadText(file)), project);
+    static SelectionAndCaretMarkupLoader fromFile(VirtualFile file, Project project) {
+      final String text;
+      try {
+        text = VfsUtil.loadText(file);
+      }
+      catch (IOException e) {
+        throw new RuntimeException(e);
+      }
+      return new SelectionAndCaretMarkupLoader(StringUtil.convertLineSeparators(text), project);
     }
 
     static SelectionAndCaretMarkupLoader fromText(String text, Project project) {