dispose fixture root disposable before project fixture tearDown

the latter checks if temp injectors are removed, and they're removed in the former
should fix damn flaky PsiAnchorTest (still not sure why flaky)
This commit is contained in:
peter
2017-12-29 10:19:18 +01:00
parent 8af3d16509
commit d4d71da892
2 changed files with 10 additions and 1 deletions
@@ -47,11 +47,19 @@ public class BaseFixture implements IdeaTestFixture {
public void tearDown() throws Exception {
Assert.assertTrue("setUp() has not been called", myInitialized);
Assert.assertFalse("tearDown() already has been called", myDisposed);
EdtTestUtil.runInEdtAndWait(() -> Disposer.dispose(myTestRootDisposable));
disposeRootDisposable();
myDisposed = true;
resetClassFields(getClass());
}
protected void disposeRootDisposable() {
EdtTestUtil.runInEdtAndWait(() -> {
if (!Disposer.isDisposed(myTestRootDisposable)) {
Disposer.dispose(myTestRootDisposable);
}
});
}
private void resetClassFields(final Class<?> aClass) {
try {
UsefulTestCase.clearDeclaredFields(this, aClass);
@@ -1237,6 +1237,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
myChooseByNamePopup = null;
})
// don't use method references here to make stack trace reading easier
.append(() -> disposeRootDisposable())
.append(() -> EdtTestUtil.runInEdtAndWait(() -> myProjectFixture.tearDown()))
.append(() -> EdtTestUtil.runInEdtAndWait(() -> myTempDirFixture.tearDown()))
.append(() -> super.tearDown())