blob: 417de18be1754dad5476418a3ce5c86d343baea0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.dependencies;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.ByteArrayInputStream;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class ResourceExistsDependencyTest {
private ResourceExistsDependency fDependency;
@BeforeEach
public void setup() {
fDependency = new ResourceExistsDependency();
}
@Test
@DisplayName("Resource exists before activation for exact match")
public void projectAlreadyExists() throws CoreException {
ResourcesPlugin.getWorkspace().getRoot().getProject("Testproject").create(null);
fDependency.setAttributes("Testproject");
fDependency.activate();
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Resource created after activation for exact match")
public void projectGetsCreated() throws CoreException {
fDependency.setAttributes("Testproject2");
fDependency.activate();
assertFalse(fDependency.isFulfilled());
ResourcesPlugin.getWorkspace().getRoot().getProject("Testproject2").create(null);
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Resource created after activation for wildcard match")
public void projectWithWildcard() throws CoreException {
fDependency.setAttributes("Wildcard*");
fDependency.activate();
assertFalse(fDependency.isFulfilled());
ResourcesPlugin.getWorkspace().getRoot().getProject("WildcardProject").create(null);
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Resource with path wildcard")
public void projectWithPathWildcard() throws CoreException {
fDependency.setAttributes("Project1/**/Simple.txt");
fDependency.activate();
assertFalse(fDependency.isFulfilled());
final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Project1");
project.create(null);
project.open(null);
project.getFile("Simple.txt").create(new ByteArrayInputStream("test".getBytes()), true, null);
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Resource containing subfolders with path wildcard")
public void projectWithPathWildcard2() throws CoreException {
fDependency.setAttributes("Project2/**/Simple.txt");
fDependency.activate();
assertFalse(fDependency.isFulfilled());
final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Project2");
project.create(null);
project.open(null);
final IFolder folder1 = project.getFolder("parent");
folder1.create(true, true, null);
final IFolder folder2 = project.getFolder("child");
folder2.create(true, true, null);
folder2.getFile("Simple.txt").create(new ByteArrayInputStream("test".getBytes()), true, null);
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Resource containing subfolders with path wildcard and file wildcard")
public void projectWithPathAndFileWildcard() throws CoreException {
fDependency.setAttributes("Project3/**/*.txt");
fDependency.activate();
assertFalse(fDependency.isFulfilled());
final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Project3");
project.create(null);
project.open(null);
final IFolder folder1 = project.getFolder("parent");
folder1.create(true, true, null);
final IFolder folder2 = project.getFolder("child");
folder2.create(true, true, null);
folder2.getFile("Simple.bin").create(new ByteArrayInputStream("test".getBytes()), true, null);
assertFalse(fDependency.isFulfilled());
folder2.getFile("Simple.txt").create(new ByteArrayInputStream("test".getBytes()), true, null);
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Existing resource gets deleted")
public void existingProjectGetsDeleted() throws CoreException {
final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Project1");
fDependency.setAttributes("Testproject");
ResourcesPlugin.getWorkspace().getRoot().getProject("Testproject").create(null);
fDependency.activate();
assertTrue(fDependency.isFulfilled());
ResourcesPlugin.getWorkspace().getRoot().getProject("Testproject").delete(true, null);
assertFalse(fDependency.isFulfilled());
}
}