Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Keller2013-06-03 13:58:51 +0000
committerMarkus Keller2013-06-03 13:58:51 +0000
commit8029c94ba8f0cb368deb09e3b2f19467d14ad8ed (patch)
treee5691a16d70a1da139585ac9b4bdaedf2aa84018
parentdf8e13d0538715a29e0dfacb9ebed218768949db (diff)
downloadeclipse.jdt.ui-8029c94ba8f0cb368deb09e3b2f19467d14ad8ed.tar.gz
eclipse.jdt.ui-8029c94ba8f0cb368deb09e3b2f19467d14ad8ed.tar.xz
eclipse.jdt.ui-8029c94ba8f0cb368deb09e3b2f19467d14ad8ed.zip
Bug 409704: MoveInnerToTopLevelTests.test25 throws error during tearDown
-rw-r--r--org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RefactoringTest.java2
-rw-r--r--org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java40
2 files changed, 35 insertions, 7 deletions
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RefactoringTest.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RefactoringTest.java
index d68ee19bac..4cd0e291b9 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RefactoringTest.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RefactoringTest.java
@@ -138,7 +138,7 @@ public abstract class RefactoringTest extends TestCase {
IPackageFragment pack= (IPackageFragment)packages[i];
if (!pack.equals(getPackageP()) && pack.exists() && !pack.isReadOnly())
if (pack.isDefaultPackage())
- pack.delete(true, null);
+ JavaProjectHelper.deletePackage(pack); // also delete packages with subpackages
else
JavaProjectHelper.delete(pack.getResource()); // also delete packages with subpackages
}
diff --git a/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java b/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
index be489e5de4..1a7dc739b7 100644
--- a/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
+++ b/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
@@ -23,7 +23,7 @@ import java.util.Enumeration;
import java.util.Map;
import java.util.zip.ZipFile;
-import junit.framework.Assert;
+import junit.framework.TestCase;
import org.osgi.framework.Bundle;
@@ -52,6 +52,7 @@ import org.eclipse.ui.wizards.datatransfer.ZipFileStructureProvider;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
@@ -96,6 +97,7 @@ public class JavaProjectHelper {
public static final IPath NLS_LIB= new Path("testresources/nls.jar");
private static final int MAX_RETRY= 5;
+ private static final int RETRY_DELAY= 1000;
public static final int COUNT_CLASSES_RT_STUBS_15= 661;
public static final int COUNT_INTERFACES_RT_STUBS_15= 135;
@@ -176,10 +178,10 @@ public class JavaProjectHelper {
IJavaProject project= createJavaProject(projectName, outputFolderName);
IPackageFragmentRoot jdk= JavaProjectHelper.addVariableRTJar(project, "JRE_LIB_TEST", null, null);//$NON-NLS-1$
- Assert.assertNotNull(jdk);
+ TestCase.assertNotNull(jdk);
File junitSrcArchive= JavaTestPlugin.getDefault().getFileInPlugin(JUNIT_SRC_381);
- Assert.assertTrue(junitSrcArchive != null && junitSrcArchive.exists());
+ TestCase.assertTrue(junitSrcArchive != null && junitSrcArchive.exists());
JavaProjectHelper.addSourceContainerWithImport(project, srcContainerName, junitSrcArchive, JUNIT_SRC_ENCODING);
@@ -311,7 +313,33 @@ public class JavaProjectHelper {
}
try {
JavaPlugin.log(new IllegalStateException("sleep before retrying JavaProjectHelper.delete() for " + resource.getLocationURI()));
- Thread.sleep(1000); // give other threads time to close the file
+ Thread.sleep(RETRY_DELAY); // give other threads time to close the file
+ } catch (InterruptedException e1) {
+ }
+ }
+ }
+ }
+
+ /**
+ * Removes a package fragment. Retries if deletion failed (e.g. because the indexer
+ * still locks a file).
+ *
+ * @param pack the package to delete
+ * @throws CoreException if operation failed
+ */
+ public static void deletePackage(IPackageFragment pack) throws CoreException {
+ for (int i= 0; i < MAX_RETRY; i++) {
+ try {
+ pack.delete(true, null);
+ i= MAX_RETRY;
+ } catch (CoreException e) {
+ if (i == MAX_RETRY - 1) {
+ JavaPlugin.log(e);
+ throw e;
+ }
+ try {
+ JavaPlugin.log(new IllegalStateException("sleep before retrying JavaProjectHelper.delete() for package " + pack.getHandleIdentifier()));
+ Thread.sleep(RETRY_DELAY); // give other threads time to close the file
} catch (InterruptedException e1) {
}
}
@@ -781,8 +809,8 @@ public class JavaProjectHelper {
*/
public static IPath[] findRtJar(IPath rtStubsPath) throws CoreException {
File rtStubs= JavaTestPlugin.getDefault().getFileInPlugin(rtStubsPath);
- Assert.assertNotNull(rtStubs);
- Assert.assertTrue(rtStubs.exists());
+ TestCase.assertNotNull(rtStubs);
+ TestCase.assertTrue(rtStubs.exists());
return new IPath[] {
Path.fromOSString(rtStubs.getPath()),
null,

Back to the top