| /******************************************************************************* |
| * Copyright (c) 2000, 2015 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| * Alexander Kurtakov <akurtako@redhat.com> - Bug 459343 |
| *******************************************************************************/ |
| package org.eclipse.core.tests.resources.session; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| import junit.framework.Test; |
| import org.eclipse.core.resources.*; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.tests.resources.AutomatedTests; |
| import org.eclipse.core.tests.resources.WorkspaceSessionTest; |
| import org.eclipse.core.tests.session.WorkspaceSessionTestSuite; |
| |
| /** |
| * Copies the tests from HistoryStoreTest#testFindDeleted, phrased |
| * as a session test. |
| */ |
| public class FindDeletedMembersTest extends WorkspaceSessionTest { |
| //common objects |
| protected IWorkspaceRoot root; |
| protected IProject project; |
| protected IFile pfile; |
| protected IFile folderAsFile; |
| protected IFolder folder; |
| protected IFile file; |
| protected IFile file1; |
| protected IFile file2; |
| protected IFolder folder2; |
| protected IFile file3; |
| |
| /** |
| * Constructor for FindDeletedMembersTest. |
| */ |
| public FindDeletedMembersTest() { |
| super(); |
| } |
| |
| /** |
| * Constructor for FindDeletedMembersTest. |
| * @param name |
| */ |
| public FindDeletedMembersTest(String name) { |
| super(name); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| root = getWorkspace().getRoot(); |
| project = root.getProject("MyProject"); |
| pfile = project.getFile("file.txt"); |
| folder = project.getFolder("folder"); |
| file = folder.getFile("file.txt"); |
| folderAsFile = project.getFile(folder.getProjectRelativePath()); |
| file1 = folder.getFile("file1.txt"); |
| file2 = folder.getFile("file2.txt"); |
| folder2 = folder.getFolder("folder2"); |
| file3 = folder2.getFile("file3.txt"); |
| |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| getWorkspace().save(true, getMonitor()); |
| } |
| |
| public void test1() { |
| try { |
| project.create(getMonitor()); |
| project.open(getMonitor()); |
| |
| IFile[] df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("0.1", 0, df.length); |
| } catch (CoreException e) { |
| fail("0.0", e); |
| } |
| |
| // test that a deleted file can be found |
| try { |
| // create and delete a file |
| pfile.create(getRandomContents(), true, getMonitor()); |
| pfile.delete(true, true, getMonitor()); |
| } catch (CoreException e) { |
| fail("0.99", e); |
| } |
| } |
| |
| public void test2() { |
| try { |
| // the deleted file should show up as a deleted member of project |
| IFile[] df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("0.1", 1, df.length); |
| assertEquals("0.2", pfile, df[0]); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("0.3", 1, df.length); |
| assertEquals("0.4", pfile, df[0]); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("0.5", 0, df.length); |
| |
| // the deleted file should show up as a deleted member of workspace root |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("0.5.1", 0, df.length); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("0.5.2", 1, df.length); |
| assertEquals("0.5.3", pfile, df[0]); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("0.5.4", 0, df.length); |
| |
| // recreate the file |
| pfile.create(getRandomContents(), true, getMonitor()); |
| } catch (CoreException e) { |
| fail("0.99", e); |
| } |
| } |
| |
| public void test3() { |
| try { |
| // the deleted file should no longer show up as a deleted member of project |
| IFile[] df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("0.6", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("0.7", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("0.8", 0, df.length); |
| |
| // the deleted file should no longer show up as a deleted member of ws root |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("0.8.1", 0, df.length); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("0.8.2", 0, df.length); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("0.8.3", 0, df.length); |
| |
| } catch (CoreException e) { |
| fail("0.99", e); |
| } |
| |
| // scrub the project |
| try { |
| project.delete(true, getMonitor()); |
| project.create(getMonitor()); |
| project.open(getMonitor()); |
| |
| IFile[] df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("0.9", 0, df.length); |
| } catch (CoreException e) { |
| fail("0.10", e); |
| } |
| |
| // test folder |
| try { |
| // create and delete a file in a folder |
| folder.create(true, true, getMonitor()); |
| file.create(getRandomContents(), true, getMonitor()); |
| file.delete(true, true, getMonitor()); |
| } catch (CoreException e) { |
| fail("1.99", e); |
| } |
| } |
| |
| public void test4() { |
| try { |
| // the deleted file should show up as a deleted member |
| IFile[] df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("1.1", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("1.2", 1, df.length); |
| assertEquals("1.3", file, df[0]); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("1.4", 0, df.length); |
| |
| // recreate the file |
| file.create(getRandomContents(), true, getMonitor()); |
| |
| // the recreated file should no longer show up as a deleted member |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("1.5", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("1.6", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("1.7", 0, df.length); |
| |
| // deleting the folder should bring it back into history |
| folder.delete(true, true, getMonitor()); |
| } catch (CoreException e) { |
| fail("1.99", e); |
| } |
| } |
| |
| public void test5() { |
| try { |
| // the deleted file should show up as a deleted member of project |
| IFile[] df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("1.8", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("1.9", 1, df.length); |
| assertEquals("1.10", file, df[0]); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("1.11", 0, df.length); |
| |
| // create and delete a file where the folder was |
| folderAsFile.create(getRandomContents(), true, getMonitor()); |
| folderAsFile.delete(true, true, getMonitor()); |
| folder.create(true, true, getMonitor()); |
| |
| // the deleted file should show up as a deleted member of folder |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("1.12", 1, df.length); |
| assertEquals("1.13", folderAsFile, df[0]); |
| |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("1.14", 2, df.length); |
| List<IFile> dfList = Arrays.asList(df); |
| assertTrue("1.15", dfList.contains(file)); |
| assertTrue("1.16", dfList.contains(folderAsFile)); |
| |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("1.17", 2, df.length); |
| dfList = Arrays.asList(df); |
| assertTrue("1.18", dfList.contains(file)); |
| assertTrue("1.19", dfList.contains(folderAsFile)); |
| |
| } catch (CoreException e) { |
| fail("1.00", e); |
| } |
| |
| // scrub the project |
| try { |
| project.delete(true, getMonitor()); |
| project.create(getMonitor()); |
| project.open(getMonitor()); |
| |
| IFile[] df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("1.50", 0, df.length); |
| } catch (CoreException e) { |
| fail("1.51", e); |
| } |
| |
| // test a bunch of deletes |
| try { |
| // create and delete a file in a folder |
| folder.create(true, true, getMonitor()); |
| folder2.create(true, true, getMonitor()); |
| file1.create(getRandomContents(), true, getMonitor()); |
| file2.create(getRandomContents(), true, getMonitor()); |
| file3.create(getRandomContents(), true, getMonitor()); |
| folder.delete(true, true, getMonitor()); |
| } catch (CoreException e) { |
| fail("3.99", e); |
| } |
| } |
| |
| public void test6() { |
| try { |
| // under root |
| IFile[] df = root.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("3.1", 0, df.length); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("3.2", 0, df.length); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("3.3", 3, df.length); |
| List<IFile> dfList = Arrays.asList(df); |
| assertTrue("3.3.1", dfList.contains(file1)); |
| assertTrue("3.3.2", dfList.contains(file2)); |
| assertTrue("3.3.3", dfList.contains(file3)); |
| |
| // under project |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("3.4", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("3.5", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("3.6", 3, df.length); |
| dfList = Arrays.asList(df); |
| assertTrue("3.6.1", dfList.contains(file1)); |
| assertTrue("3.6.2", dfList.contains(file2)); |
| assertTrue("3.6.3", dfList.contains(file3)); |
| |
| // under folder |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("3.7", 0, df.length); |
| |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("3.8", 2, df.length); |
| |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("3.9", 3, df.length); |
| |
| // under folder2 |
| df = folder2.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("3.10", 0, df.length); |
| |
| df = folder2.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("3.11", 1, df.length); |
| |
| df = folder2.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("3.12", 1, df.length); |
| |
| } catch (CoreException e) { |
| fail("3.00", e); |
| } |
| |
| try { |
| project.delete(true, getMonitor()); |
| } catch (CoreException e) { |
| fail("3.5", e); |
| } |
| } |
| |
| public void test7() { |
| // once the project is gone, so is all the history for that project |
| try { |
| // under root |
| IFile[] df = root.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("4.1", 0, df.length); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("4.2", 0, df.length); |
| |
| df = root.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("4.3", 0, df.length); |
| |
| // under project |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("4.4", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("4.5", 0, df.length); |
| |
| df = project.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("4.6", 0, df.length); |
| |
| // under folder |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("4.7", 0, df.length); |
| |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("4.8", 0, df.length); |
| |
| df = folder.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("4.9", 0, df.length); |
| |
| // under folder2 |
| df = folder2.findDeletedMembersWithHistory(IResource.DEPTH_ZERO, getMonitor()); |
| assertEquals("4.10", 0, df.length); |
| |
| df = folder2.findDeletedMembersWithHistory(IResource.DEPTH_ONE, getMonitor()); |
| assertEquals("4.11", 0, df.length); |
| |
| df = folder2.findDeletedMembersWithHistory(IResource.DEPTH_INFINITE, getMonitor()); |
| assertEquals("4.12", 0, df.length); |
| |
| } catch (CoreException e) { |
| fail("4.00", e); |
| } |
| } |
| |
| public static Test suite() { |
| return new WorkspaceSessionTestSuite(AutomatedTests.PI_RESOURCES_TESTS, FindDeletedMembersTest.class); |
| } |
| } |