diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/envvar/IEnvironmentVariableManagerTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/envvar/IEnvironmentVariableManagerTests.java index de9e26f3fcf..46d0e8d715d 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/envvar/IEnvironmentVariableManagerTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/envvar/IEnvironmentVariableManagerTests.java @@ -66,7 +66,7 @@ public class IEnvironmentVariableManagerTests extends TestCase { @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); } public static Test suite() { @@ -508,7 +508,7 @@ public class IEnvironmentVariableManagerTests extends TestCase { // Save the project description CoreModel.getDefault().setProjectDescription(project, prjDesc); - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); assertFalse(project.exists()); ResourceHelper.createCDTProjectWithConfig("envProject"); assertTrue(project.exists()); diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserEfsFileMatchingTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserEfsFileMatchingTest.java index 866a2c5bb89..12ab5063698 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserEfsFileMatchingTest.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserEfsFileMatchingTest.java @@ -98,7 +98,7 @@ public class ErrorParserEfsFileMatchingTest extends TestCase { @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); fProject = null; } diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java index a7a148e4b11..5caaa6ca472 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/ErrorParserFileMatchingTest.java @@ -102,7 +102,7 @@ public class ErrorParserFileMatchingTest extends TestCase { @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); fProject = null; } diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/RegexErrorParserTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/RegexErrorParserTests.java index 1d0cc28d5e8..e3f05a8f71a 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/RegexErrorParserTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/RegexErrorParserTests.java @@ -92,7 +92,7 @@ public class RegexErrorParserTests extends TestCase { @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); fProject = null; ErrorParserManager.setUserDefinedErrorParsers(null); diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/FindProgramLocationTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/FindProgramLocationTest.java index 646a12292a4..84ba3a441f4 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/FindProgramLocationTest.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/FindProgramLocationTest.java @@ -33,7 +33,7 @@ public class FindProgramLocationTest extends TestCase { @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); } public void testCornerCases() throws CoreException, IOException { diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/StorableCdtVariablesTest.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/StorableCdtVariablesTest.java index 24e4dd2d99b..13254740850 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/StorableCdtVariablesTest.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/utils/StorableCdtVariablesTest.java @@ -37,7 +37,7 @@ public class StorableCdtVariablesTest extends TestCase { @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); } /** diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java index 3412d3743d2..b245251b6b1 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/settings/model/CProjectDescriptionDeltaTests.java @@ -76,7 +76,7 @@ public class CProjectDescriptionDeltaTests extends BaseTestCase{ @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); } diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/ResourceHelper.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/ResourceHelper.java index e3d39ef2ce0..b9f48fc511d 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/ResourceHelper.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/ResourceHelper.java @@ -683,11 +683,38 @@ public class ResourceHelper { * This method removes *all* Workspace IResources and any external * files / folders created with the #createWorkspaceFile #createWorkspaceFolder * methods in this class + * + * @deprecated Use {@link #cleanUp(String)} instead so test name can be printed in diagnostics */ public static void cleanUp() throws CoreException, IOException { + cleanUp(""); + } + + /** + * Clean-up any files created as part of a unit test. + * This method removes *all* Workspace IResources and any external + * files / folders created with the #createWorkspaceFile #createWorkspaceFolder + * methods in this class + */ + public static void cleanUp(String testName) throws CoreException, IOException { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); root.refreshLocal(IResource.DEPTH_INFINITE, NULL_MONITOR); + // Bug 499471: there is a race condition in the indexer when projects + // are created and deleted quickly. Therefore, wait for the indexer + // to be idle before deleting projects. + if (!CCorePlugin.getIndexManager().isIndexerIdle()) { + // the 2 second wait is very long in practice, when the race condition is + // happening the total join time is just a few ms for most tests, and + // up to 75 ms for a couple of tests on the HIPP + boolean joinSuccess = CCorePlugin.getIndexManager().joinIndexer(2000, new NullProgressMonitor()); + if (!joinSuccess) { + System.err.println( + "Indexer did not stop runing, possible deadlock about to happen. Running test " + testName); + } + } + + // Delete all external files & folders created using ResourceHelper for (String loc : externalFilesCreated) { File f = new File(loc); diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java index 5d8c32c89b1..e5071f2b9a0 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java @@ -101,7 +101,7 @@ public class BaseTestCase extends TestCase { for (File file; (file = filesToDeleteOnTearDown.pollLast()) != null;) { file.delete(); } - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); TestScannerProvider.clear(); super.tearDown(); } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsoleTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsoleTests.java index 52f2dd25df2..7165c617c27 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsoleTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/buildconsole/BuildConsoleTests.java @@ -54,7 +54,7 @@ public class BuildConsoleTests extends BaseUITestCase { @Override protected void tearDown() throws Exception { - ResourceHelper.cleanUp(); + ResourceHelper.cleanUp(getName()); super.tearDown(); }