blob: 8426e8bbeba02d42252d016b869219a312ace498 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2017 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.regression;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.*;
import org.eclipse.core.tests.resources.ResourceTest;
public class Bug_226264 extends ResourceTest {
/**
* Constructor for Bug_226264.
*/
public Bug_226264() {
super();
}
/**
* Constructor for Bug_226264.
* @param name
*/
public Bug_226264(String name) {
super(name);
}
public static Test suite() {
return new TestSuite(Bug_226264.class);
}
public void testBug() throws CoreException {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IProject project1 = workspace.getRoot().getProject("Project1");
project1.create(null);
project1.open(null);
final IProject project2 = workspace.getRoot().getProject("Project2");
project2.create(null);
project2.open(null);
final WorkspaceJob job = new WorkspaceJob("job") {
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
project2.delete(true, null);
return Status.OK_STATUS;
}
};
// the listener will schedule another project delete
workspace.addResourceChangeListener(event -> {
if (event.getResource() == project1) {
// because notification is run in a protected block,
// this job will start after the notification
job.schedule();
//give the job a chance to start before continuing
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
//ignore
}
}
}, IResourceChangeEvent.PRE_DELETE);
// delete project
project1.delete(true, null);
try {
job.join();
} catch (InterruptedException e) {
fail("1.0", e);
}
assertTrue("2.0: " + job.getResult().toString(), job.getResult().isOK());
assertDoesNotExistInWorkspace("3.0", project1);
assertDoesNotExistInWorkspace("4.0", project2);
}
}