[maven] improve test teardown safety

This commit is contained in:
Nikita Skvortsov
2019-04-16 13:02:08 +03:00
parent 13cd57050b
commit a4df78acf6
2 changed files with 30 additions and 34 deletions
@@ -22,6 +22,7 @@ import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.RunAll;
import com.intellij.util.PathUtil;
import com.intellij.util.ui.UIUtil;
import org.intellij.lang.annotations.Language;
@@ -59,20 +60,15 @@ public abstract class MavenImportingTestCase extends MavenTestCase {
@Override
protected void tearDown() throws Exception {
try {
JavaAwareProjectJdkTableImpl.removeInternalJdkInTests();
Messages.setTestDialog(TestDialog.DEFAULT);
removeFromLocalRepository("test");
ExternalSystemTestCase.deleteBuildSystemDirectory();
}
catch (Throwable e) {
addSuppressedException(e);
}
finally {
myProjectsManager = null;
myProjectsTree = null;
super.tearDown();
}
new RunAll(
() -> JavaAwareProjectJdkTableImpl.removeInternalJdkInTests(),
() -> Messages.setTestDialog(TestDialog.DEFAULT),
() -> removeFromLocalRepository("test"),
() -> ExternalSystemTestCase.deleteBuildSystemDirectory(),
() -> myProjectsManager = null,
() -> myProjectsTree = null,
() -> super.tearDown()
).run();
}
@Override
@@ -20,6 +20,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.rt.execution.junit.FileComparisonFailure;
import com.intellij.testFramework.EdtTestUtil;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.RunAll;
import com.intellij.testFramework.UsefulTestCase;
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory;
@@ -103,26 +104,25 @@ public abstract class MavenTestCase extends UsefulTestCase {
@Override
protected void tearDown() throws Exception {
try {
MavenServerManager.getInstance().shutdown(true);
MavenArtifactDownloader.awaitQuiescence(100, TimeUnit.SECONDS);
myProject = null;
EdtTestUtil.runInEdtAndWait(() -> tearDownFixtures());
MavenIndicesManager.getInstance().clear();
}
finally {
super.tearDown();
FileUtil.delete(myDir);
// cannot use reliably the result of the com.intellij.openapi.util.io.FileUtil.delete() method
// because com.intellij.openapi.util.io.FileUtilRt.deleteRecursivelyNIO() does not honor this contract
if (myDir.exists()) {
System.err.println("Cannot delete " + myDir);
//printDirectoryContent(myDir);
myDir.deleteOnExit();
}
resetClassFields(getClass());
}
new RunAll(
() -> MavenServerManager.getInstance().shutdown(true),
() -> MavenArtifactDownloader.awaitQuiescence(100, TimeUnit.SECONDS),
() -> myProject = null,
() -> EdtTestUtil.runInEdtAndWait(() -> tearDownFixtures()),
() -> MavenIndicesManager.getInstance().clear(),
() -> super.tearDown(),
() -> {
FileUtil.delete(myDir);
// cannot use reliably the result of the com.intellij.openapi.util.io.FileUtil.delete() method
// because com.intellij.openapi.util.io.FileUtilRt.deleteRecursivelyNIO() does not honor this contract
if (myDir.exists()) {
System.err.println("Cannot delete " + myDir);
//printDirectoryContent(myDir);
myDir.deleteOnExit();
}
},
() -> resetClassFields(getClass())
).run();
}
private void ensureTempDirCreated() throws IOException {