package jenkins.scm.impl.subversion;
import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
import hudson.model.Item;
import hudson.model.ItemGroup;
import hudson.model.Job;
import hudson.model.TaskListener;
import hudson.search.Search;
import hudson.search.SearchIndex;
import hudson.security.ACL;
import hudson.security.Permission;
import hudson.util.StreamTaskListener;
import jenkins.scm.impl.subversion.SubversionSCMSource;
import org.acegisecurity.AccessDeniedException;
import jenkins.scm.api.SCMSource;
import jenkins.scm.api.SCMSourceCriteria;
import jenkins.scm.api.SCMSourceOwner;
import jenkins.scm.api.SCMHead;
import jenkins.scm.api.SCMHeadObserver;
import jenkins.scm.api.SCMRevision;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeSet;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
/**
* @author Stephen Connolly
*/
public class SubversionSCMSourceTest {
@Test
public void isMatch() throws Exception {
assertThat(SubversionSCMSource.isMatch("trunk", "trunk"), is(true));
assertThat(SubversionSCMSource.isMatch("trunk", "trunk*"), is(true));
assertThat(SubversionSCMSource.isMatch("trunk", "*trunk"), is(true));
assertThat(SubversionSCMSource.isMatch("trunk", "tr*nk"), is(true));
assertThat(SubversionSCMSource.isMatch("trunk", "*"), is(true));
assertThat(SubversionSCMSource.isMatch("branch", "trunk"), is(false));
assertThat(SubversionSCMSource.isMatch("branch", "tr*nk"), is(false));
assertThat(SubversionSCMSource.isMatch("branch", "*trunk"), is(false));
}
@Test
public void splitCludes() throws Exception {
assertThat(SubversionSCMSource.splitCludes("trunk"),
is((SortedSet) new TreeSet<String>(Arrays.asList("trunk"))));
assertThat(SubversionSCMSource.splitCludes("trunk,branches/*"),
is((SortedSet) new TreeSet<String>(Arrays.asList("trunk", "branches/*"))));
assertThat(SubversionSCMSource.splitCludes("trunk, branches/*"),
is((SortedSet) new TreeSet<String>(Arrays.asList("trunk", "branches/*"))));
assertThat(SubversionSCMSource.splitCludes("trunk , , branches/*"),
is((SortedSet) new TreeSet<String>(Arrays.asList("trunk", "branches/*"))));
assertThat(SubversionSCMSource.splitCludes("trunk , , branches/* , tags/* "),
is((SortedSet) new TreeSet<String>(Arrays.asList("trunk", "branches/*", "tags/*"))));
}
private static List<String> list(String... values) {
return Arrays.asList(values);
}
private static SortedSet<List<String>> pathSet(List<String>... paths) {
SortedSet<List<String>> result = new TreeSet<List<String>>(new SubversionSCMSource.StringListComparator());
for (List<String> path : paths) {
result.add(path);
}
return result;
}
@Test
public void toPaths() throws Exception {
assertThat(SubversionSCMSource.toPaths(SubversionSCMSource.splitCludes("trunk")), is(pathSet(list("trunk"))));
assertThat(SubversionSCMSource.toPaths(SubversionSCMSource.splitCludes("trunk,branches/*")), is(pathSet(
list("trunk"), list("branches", "*")
)));
assertThat(
SubversionSCMSource.toPaths(SubversionSCMSource.splitCludes("trunk,branches/*,tags/*,sandbox/*/*")),
is(pathSet(
list("trunk"), list("branches", "*"), list("tags", "*"), list("sandbox", "*", "*")
)));
}
@Test
public void filterPaths() throws Exception {
assertThat(SubversionSCMSource
.filterPaths(pathSet(list("trunk"), list("branches", "foo"), list("branches", "bar")),
list("trunk")),
is(pathSet(list("trunk"))));
assertThat(SubversionSCMSource
.filterPaths(pathSet(list("trunk"), list("branches", "foo"), list("branches", "bar")),
list("branches")),
is(pathSet(list("branches", "foo"), list("branches", "bar"))));
}
@Test
public void groupPaths() throws Exception {
SortedMap<List<String>, SortedSet<List<String>>> result;
SortedSet<List<String>> data = pathSet(
list("trunk"),
list("branches", "*"),
list("tags", "*"),
list("sandbox", "*")
);
result = SubversionSCMSource.groupPaths(data, Collections.<String>emptyList());
assertThat(result.keySet(),
is((Set<List<String>>) pathSet(list("trunk"), list("branches"), list("tags"), list("sandbox"))));
assertThat(result.get(list("trunk")), is(pathSet(list("trunk"))));
assertThat(result.get(list("branches")), is(pathSet(list("branches", "*"))));
data = pathSet(
list("trunk", "foo", "bar"),
list("trunk", "foo", "bas"),
list("trunk", "bar", "bas"),
list("branches", "foo", "bar", "*"),
list("tags", "*"),
list("sandbox", "*", "foo", "bar", "*"),
list("sandbox", "*", "foo", "bas", "*"),
list("sandbox", "*", "bar", "bas", "*")
);
result = SubversionSCMSource.groupPaths(data, Collections.<String>emptyList());
assertThat(result.keySet(),
is((Set<List<String>>) pathSet(list("trunk"), list("branches", "foo", "bar"), list("tags"),
list("sandbox"))));
result = SubversionSCMSource.groupPaths(result.get(list("sandbox")), list("sandbox", "*"));
assertThat(result.keySet(),
is((Set<List<String>>) pathSet(list("sandbox", "*", "foo"), list("sandbox", "*", "bar", "bas"))));
data = pathSet(
list("trunk", "foo", "bar"),
list("trunk", "foo", "bas"),
list("trunk", "bar", "bas"),
list("branches", "foo", "bar", "*"),
list("tags", "*"),
list("sandbox", "joe-*", "foo", "bar", "*"),
list("sandbox", "jim-*", "foo", "bas", "*"),
list("sandbox", "*", "bar", "bas", "*")
);
result = SubversionSCMSource.groupPaths(data, Collections.<String>emptyList());
assertThat(result.keySet(),
is((Set<List<String>>) pathSet(list("trunk"), list("branches", "foo", "bar"), list("tags"),
list("sandbox"))));
assertThat(result.get(list("sandbox")),
is((Set<List<String>>) pathSet(list("sandbox", "joe-*", "foo", "bar", "*"),
list("sandbox", "jim-*", "foo", "bas", "*"), list("sandbox", "*", "bar", "bas", "*"))));
result = SubversionSCMSource.groupPaths(result.get(list("sandbox")), list("sandbox"));
assertThat(result.keySet(), is((Set<List<String>>) pathSet(list("sandbox"))));
result = SubversionSCMSource.groupPaths(result.get(list("sandbox")), list("sandbox", "joe-*"));
assertThat(result.keySet(), is((Set<List<String>>) pathSet(list("sandbox", "joe-*", "foo", "bar"))));
}
@Test
public void startsWith() throws Exception {
assertThat(SubversionSCMSource.startsWith(list(), list()), is(true));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list()), is(true));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list("a")), is(true));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list("a", "b")), is(true));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list("a", "b", "c")), is(true));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list("a", "b", "c", "d")), is(false));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list("a", "b", "d")), is(false));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list("a", "d")), is(false));
assertThat(SubversionSCMSource.startsWith(list("a", "b", "c"), list("d")), is(false));
}
@Test
public void wildcardStartsWith() throws Exception {
assertThat(SubversionSCMSource.wildcardStartsWith(list(), list()), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list()), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "b")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "*")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b", "c")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "b", "c")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "*", "c")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b", "*")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "*", "c")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "*", "*")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "b", "*")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "*", "*")), is(true));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b", "c", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "b", "c", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "*", "c", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b", "*", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b", "c", "*")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "b", "c", "*")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "*", "c", "*")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b", "*", "*")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "b", "*", "*")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "*", "*", "*")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "*", "*", "*")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "b", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("*", "b", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "*", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("a", "d")), is(false));
assertThat(SubversionSCMSource.wildcardStartsWith(list("a", "b", "c"), list("d")), is(false));
}
}