/******************************************************************************* * Copyright (c) 2000, 2012 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 *******************************************************************************/ package org.eclipse.core.tests.resources.session; 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.session.WorkspaceSessionTestSuite; /** * */ public class TestBug12575 extends WorkspaceSerializationTest { public TestBug12575() { super(); } public TestBug12575(String name) { super(name); } private static final String projectName = "Project"; /** * Setup. Create a simple project, delete the .project file, shutdown * cleanly. */ public void test1() { IProject project = workspace.getRoot().getProject(projectName); try { project.create(getMonitor()); project.open(getMonitor()); } catch (CoreException e) { fail("1.0", e); } IFile dotProject = project.getFile(IProjectDescription.DESCRIPTION_FILE_NAME); try { dotProject.delete(IResource.NONE, getMonitor()); } catch (CoreException e) { fail("1.1", e); } try { workspace.save(true, getMonitor()); } catch (CoreException e) { fail("1.2", e); } } /** * Infection. Modify the .project, cause a snapshot, crash */ public void test2() { IProject project = workspace.getRoot().getProject(projectName); IProject other = workspace.getRoot().getProject("Other"); try { IProjectDescription desc = project.getDescription(); desc.setReferencedProjects(new IProject[] {other}); project.setDescription(desc, IResource.FORCE, getMonitor()); } catch (CoreException e) { fail("2.0", e); } //creating a project will cause a snapshot ensureExistsInWorkspace(other, true); //crash } /** * Impact. Fails to start. */ public void test3() { //just starting this test is a sign of success } public static Test suite() { return new WorkspaceSessionTestSuite(AutomatedTests.PI_RESOURCES_TESTS, TestBug12575.class); } }