diff options
author | Markus Keller | 2013-06-03 13:58:51 +0000 |
---|---|---|
committer | Markus Keller | 2013-06-03 13:58:51 +0000 |
commit | 8029c94ba8f0cb368deb09e3b2f19467d14ad8ed (patch) | |
tree | e5691a16d70a1da139585ac9b4bdaedf2aa84018 | |
parent | df8e13d0538715a29e0dfacb9ebed218768949db (diff) | |
download | eclipse.jdt.ui-8029c94ba8f0cb368deb09e3b2f19467d14ad8ed.tar.gz eclipse.jdt.ui-8029c94ba8f0cb368deb09e3b2f19467d14ad8ed.tar.xz eclipse.jdt.ui-8029c94ba8f0cb368deb09e3b2f19467d14ad8ed.zip |
Bug 409704: MoveInnerToTopLevelTests.test25 throws error during tearDown
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, |