public void testExternalFileModificationWhileProjectClosed() throws Exception { VirtualFile root = ProjectRootManager.getInstance(myProject).getContentRoots()[0]; PsiClass objectClass = myJavaFacade.findClass( CommonClassNames.JAVA_LANG_OBJECT, GlobalSearchScope.allScope(getProject())); assertNotNull(objectClass); checkUsages(objectClass, new String[] {}); FileBasedIndex.getInstance() .getContainingFiles( TodoIndex.NAME, new TodoIndexEntry("todo", true), GlobalSearchScope.allScope(getProject())); final String projectLocation = myProject.getPresentableUrl(); assert projectLocation != null : myProject; PlatformTestUtil.saveProject(myProject); final VirtualFile content = ModuleRootManager.getInstance(getModule()).getContentRoots()[0]; Project project = myProject; ProjectUtil.closeAndDispose(project); InjectedLanguageManagerImpl.checkInjectorsAreDisposed(project); assertTrue("Project was not disposed", myProject.isDisposed()); myModule = null; final File file = new File(root.getPath(), "1.java"); assertTrue(file.exists()); FileUtil.writeToFile(file, "class A{ Object o;}".getBytes(CharsetToolkit.UTF8_CHARSET)); root.refresh(false, true); LocalFileSystem.getInstance().refresh(false); myProject = ProjectManager.getInstance().loadAndOpenProject(projectLocation); InjectedLanguageManagerImpl.pushInjectors(getProject()); setUpModule(); setUpJdk(); ProjectManagerEx.getInstanceEx().openTestProject(myProject); UIUtil.dispatchAllInvocationEvents(); // startup activities runStartupActivities(); PsiTestUtil.addSourceContentToRoots(getModule(), content); assertNotNull(myProject); myPsiManager = (PsiManagerImpl) PsiManager.getInstance(myProject); myJavaFacade = JavaPsiFacadeEx.getInstanceEx(myProject); objectClass = myJavaFacade.findClass( CommonClassNames.JAVA_LANG_OBJECT, GlobalSearchScope.allScope(getProject())); assertNotNull(objectClass); checkUsages(objectClass, new String[] {"1.java"}); }
@Override public void tearDown() throws Exception { Project project = getProject(); LightPlatformTestCase.doTearDown(project, myApplication, false); for (ModuleFixtureBuilder moduleFixtureBuilder : myModuleFixtureBuilders) { moduleFixtureBuilder.getFixture().tearDown(); } UIUtil.invokeAndWaitIfNeeded( new Runnable() { @Override public void run() { ApplicationManager.getApplication() .runWriteAction( new Runnable() { @Override public void run() { Disposer.dispose(myProject); myProject = null; } }); } }); for (final File fileToDelete : myFilesToDelete) { boolean deleted = FileUtil.delete(fileToDelete); assert deleted : "Can't delete " + fileToDelete; } super.tearDown(); myEditorListenerTracker.checkListenersLeak(); myThreadTracker.checkLeak(); LightPlatformTestCase.checkEditorsReleased(); InjectedLanguageManagerImpl.checkInjectorsAreDisposed(project); }
@Override protected void tearDown() throws Exception { List<Throwable> exceptions = new SmartList<Throwable>(); Project project = myProject; if (project != null) { try { LightPlatformTestCase.doTearDown(project, ourApplication, false, exceptions); } catch (Throwable e) { exceptions.add(e); } disposeProject(exceptions); } try { checkForSettingsDamage(exceptions); } catch (Throwable e) { exceptions.add(e); } try { if (project != null) { try { InjectedLanguageManagerImpl.checkInjectorsAreDisposed(project); } catch (AssertionError e) { exceptions.add(e); } } try { for (final File fileToDelete : myFilesToDelete) { delete(fileToDelete); } LocalFileSystem.getInstance().refreshIoFiles(myFilesToDelete); } catch (Throwable e) { exceptions.add(e); } if (!myAssertionsInTestDetected) { if (IdeaLogger.ourErrorsOccurred != null) { exceptions.add(IdeaLogger.ourErrorsOccurred); } } try { super.tearDown(); } catch (Throwable e) { exceptions.add(e); } try { if (myEditorListenerTracker != null) { myEditorListenerTracker.checkListenersLeak(); } } catch (AssertionError error) { exceptions.add(error); } try { if (myThreadTracker != null) { myThreadTracker.checkLeak(); } } catch (AssertionError error) { exceptions.add(error); } try { LightPlatformTestCase.checkEditorsReleased(exceptions); } catch (Throwable error) { exceptions.add(error); } } finally { myProjectManager = null; myProject = null; myModule = null; myFilesToDelete.clear(); myEditorListenerTracker = null; myThreadTracker = null; ourTestCase = null; } CompoundRuntimeException.throwIfNotEmpty(exceptions); }