blob: 157f91dfb89643b7daa228aff9984b5de8665825 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2010 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests;
import junit.framework.TestCase;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.IRepositoryManager;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.ui.AbstractTaskRepositoryLinkProvider;
/**
* @author Mik Kersten
* @author Steffen Pingel
*/
public class LinkProviderTest extends TestCase {
public class LinkProviderStub extends AbstractTaskRepositoryLinkProvider {
int executions = 0;
int timeout = 0;
@Override
public TaskRepository getTaskRepository(IResource resource, IRepositoryManager repositoryManager) {
executions++;
try {
Thread.sleep(timeout);
} catch (InterruptedException e) {
fail();
}
return null;
}
}
private String defaultTimeout;
private LinkProviderStub provider;
@Override
protected void setUp() throws Exception {
defaultTimeout = System.getProperty(ITasksCoreConstants.PROPERTY_LINK_PROVIDER_TIMEOUT, "");
provider = new LinkProviderStub();
TasksUiPlugin.getDefault().addRepositoryLinkProvider(provider);
}
@Override
protected void tearDown() throws Exception {
TasksUiPlugin.getDefault().removeRepositoryLinkProvider(provider);
System.setProperty(ITasksCoreConstants.PROPERTY_LINK_PROVIDER_TIMEOUT, defaultTimeout);
}
public void testTimeout() {
System.setProperty(ITasksCoreConstants.PROPERTY_LINK_PROVIDER_TIMEOUT, "500");
provider.timeout = 10;
TasksUiPlugin.getDefault().getRepositoryForResource(ResourcesPlugin.getWorkspace().getRoot());
assertEquals(1, provider.executions);
// should cause provider to get removed
provider.timeout = 2000;
TasksUiPlugin.getDefault().getRepositoryForResource(ResourcesPlugin.getWorkspace().getRoot());
assertEquals(2, provider.executions);
// provider should no longer get called
provider.timeout = 10;
TasksUiPlugin.getDefault().getRepositoryForResource(ResourcesPlugin.getWorkspace().getRoot());
assertEquals(2, provider.executions);
}
public void testTimeoutInfinite() {
System.setProperty(ITasksCoreConstants.PROPERTY_LINK_PROVIDER_TIMEOUT, "50");
provider.timeout = 40;
TasksUiPlugin.getDefault().getRepositoryForResource(ResourcesPlugin.getWorkspace().getRoot());
assertEquals(1, provider.executions);
System.setProperty(ITasksCoreConstants.PROPERTY_LINK_PROVIDER_TIMEOUT, "-1");
provider.timeout = 0;
TasksUiPlugin.getDefault().getRepositoryForResource(ResourcesPlugin.getWorkspace().getRoot());
assertEquals(2, provider.executions);
provider.timeout = 60;
TasksUiPlugin.getDefault().getRepositoryForResource(ResourcesPlugin.getWorkspace().getRoot());
assertEquals(3, provider.executions);
TasksUiPlugin.getDefault().getRepositoryForResource(ResourcesPlugin.getWorkspace().getRoot());
assertEquals(4, provider.executions);
}
}