blob: bc706e99814724355b4cfa4314dcc44d6f15f41d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2012 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM - Initial API and implementation
*******************************************************************************/
package org.eclipse.core.tests.resources.session;
import java.util.Properties;
import junit.framework.Test;
import org.eclipse.core.internal.resources.TestingSupport;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.tests.resources.AutomatedTests;
import org.eclipse.core.tests.session.WorkspaceSessionTestSuite;
/**
* This is an internal test that makes sure the workspace master table does
* not contain any stable entries after restart
*/
public class TestMasterTableCleanup extends WorkspaceSerializationTest {
private static final String CLOSE_OPEN = "CloseOpen";
private static final String CLOSE_DELETE = "CloseDelete";
/**
* Setup. Two scenarios with stale entries were:
* 1) Project that was closed and then opened
* 2) Project that was closed and then deleted
*/
public void test1() {
IProject closeOpen = getWorkspace().getRoot().getProject(CLOSE_OPEN);
try {
closeOpen.create(null);
closeOpen.open(null);
closeOpen.close(null);
closeOpen.open(null);
IProject closeDelete = getWorkspace().getRoot().getProject(CLOSE_DELETE);
closeDelete.create(null);
closeDelete.open(null);
closeDelete.close(null);
closeDelete.delete(IResource.NONE, null);
getWorkspace().save(true, null);
} catch (CoreException e) {
fail("1.99", e);
}
}
/**
* Verify. Ensure safe table does not contain stale entries.
*/
public void test2() {
Properties masterTable = TestingSupport.getMasterTable();
//ensure master table does not contain entries for stale projects
IProject closeOpen = getWorkspace().getRoot().getProject(CLOSE_OPEN);
IProject closeDelete = getWorkspace().getRoot().getProject(CLOSE_DELETE);
assertTrue("2.0", !masterTable.containsKey(closeOpen.getFullPath().append(".tree").toString()));
assertTrue("2.1", !masterTable.containsKey(closeDelete.getFullPath().append(".tree").toString()));
}
public static Test suite() {
return new WorkspaceSessionTestSuite(AutomatedTests.PI_RESOURCES_TESTS, TestMasterTableCleanup.class);
}
}