Test fix for bug 32785 - alias table out of date after move
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/alias/BasicAliasTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/alias/BasicAliasTest.java index 1ef04a6..ed9a4af 100644 --- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/alias/BasicAliasTest.java +++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/alias/BasicAliasTest.java
@@ -1,5 +1,5 @@ /********************************************************************** - * Copyright (c) 2002 IBM Corporation and others. + * Copyright (c) 2002, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at @@ -133,6 +133,53 @@ super.tearDown(); Workspace.clear(linkOverlapLocation.toFile()); } + /** + * This tests regression of bug 32785. In this bug, moving a linked folder, + * then copying a linked folder, resulted in the alias table having a stale entry + */ + public void testBug32785() { + IProject project = pNoOverlap; + IFolder link = project.getFolder("Source"); + IFile child = link.getFile("Child.txt"); + IPath location = getRandomLocation(); + location.toFile().mkdirs(); + try { + try { + link.createLink(location, IResource.NONE, getMonitor()); + ensureExistsInWorkspace(child, getRandomContents()); + } catch (CoreException e) { + fail("1.99", e); + } + //move the link (rename) + IFolder movedLink = project.getFolder("MovedLink"); + try { + link.move(movedLink.getFullPath(), IResource.SHALLOW, getMonitor()); + } catch (CoreException e) { + fail("2.99", e); + } + assertTrue("3.0", !link.exists()); + assertTrue("3.1", movedLink.exists()); + assertEquals("3.2", location, movedLink.getLocation()); + + //now copy the moved link + IFolder copiedLink = project.getFolder("CopiedLink"); + try { + movedLink.copy(copiedLink.getFullPath(), IResource.SHALLOW, getMonitor()); + } catch (CoreException e) { + fail("3.99", e); + } + assertTrue("4.0", !link.exists()); + assertTrue("4.1", movedLink.exists()); + assertTrue("4.2", copiedLink.exists()); + assertEquals("4.3", location, movedLink.getLocation()); + assertEquals("4.4", location, copiedLink.getLocation()); + assertTrue("4.5", movedLink.isSynchronized(IResource.DEPTH_INFINITE)); + assertTrue("4.6", copiedLink.isSynchronized(IResource.DEPTH_INFINITE)); + } finally { + Workspace.clear(location.toFile()); + } + } + public void testCloseOpenProject() { } /**