diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2010-09-16 17:22:37 -0700 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2010-09-16 17:22:37 -0700 |
commit | 5deb5b9a4aebd562a8680167dc6aee93fd7bb5c5 (patch) | |
tree | 3e963186d1f791e8f9f1a2f4113dd94652ea0846 /org.eclipse.jgit.test | |
parent | 55714f6e73c9f858eb17eadcb9df05de029017aa (diff) | |
parent | 26f507f0df5822df0f19a5ca16462a4bbfeab5fc (diff) | |
download | jgit-5deb5b9a4aebd562a8680167dc6aee93fd7bb5c5.tar.gz jgit-5deb5b9a4aebd562a8680167dc6aee93fd7bb5c5.zip |
Merge branch 'stable-0.9'
* stable-0.9:
Qualify post-0.9.3 builds
JGit 0.9.3
clone: Correct formatting of init message
Fix cloning of repositories with big objects
Qualify post-0.9.1 builds
JGit 0.9.1
Fix PlotCommitList to set lanes on child-less commits
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/META-INF/MANIFEST.MF | 60 | ||||
-rw-r--r-- | org.eclipse.jgit.test/pom.xml | 2 | ||||
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java | 306 |
3 files changed, 337 insertions, 31 deletions
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF index c1ef787b15..dbf6bf2674 100644 --- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF +++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF @@ -2,40 +2,40 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin_name Bundle-SymbolicName: org.eclipse.jgit.test -Bundle-Version: 0.9.0.qualifier +Bundle-Version: 0.9.4.qualifier Bundle-Localization: plugin Bundle-Vendor: %provider_name Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.5 Import-Package: junit.framework;version="[4.0.0,5.0.0)", junit.textui;version="[3.8.2,4.0.0)", - org.eclipse.jgit;version="[0.9.0,0.10.0)", - org.eclipse.jgit.api;version="[0.9.0,0.10.0)", - org.eclipse.jgit.api.errors;version="[0.9.0,0.10.0)", - org.eclipse.jgit.awtui;version="[0.9.0,0.10.0)", - org.eclipse.jgit.console;version="[0.9.0,0.10.0)", - org.eclipse.jgit.diff;version="[0.9.0,0.10.0)", - org.eclipse.jgit.dircache;version="[0.9.0,0.10.0)", - org.eclipse.jgit.errors;version="[0.9.0,0.10.0)", - org.eclipse.jgit.events;version="[0.9.0,0.10.0)", - org.eclipse.jgit.fnmatch;version="[0.9.0,0.10.0)", - org.eclipse.jgit.http.server;version="[0.9.0,0.10.0)", - org.eclipse.jgit.ignore;version="[0.9.0,0.10.0)", - org.eclipse.jgit.iplog;version="[0.9.0,0.10.0)", - org.eclipse.jgit.junit;version="[0.9.0,0.10.0)", - org.eclipse.jgit.lib;version="[0.9.0,0.10.0)", - org.eclipse.jgit.merge;version="[0.9.0,0.10.0)", - org.eclipse.jgit.nls;version="[0.9.0,0.10.0)", - org.eclipse.jgit.patch;version="[0.9.0,0.10.0)", - org.eclipse.jgit.pgm;version="[0.9.0,0.10.0)", - org.eclipse.jgit.revplot;version="[0.9.0,0.10.0)", - org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)", - org.eclipse.jgit.revwalk.filter;version="[0.9.0,0.10.0)", - org.eclipse.jgit.storage.file;version="[0.9.0,0.10.0)", - org.eclipse.jgit.storage.pack;version="[0.9.0,0.10.0)", - org.eclipse.jgit.transport;version="[0.9.0,0.10.0)", - org.eclipse.jgit.treewalk;version="[0.9.0,0.10.0)", - org.eclipse.jgit.treewalk.filter;version="[0.9.0,0.10.0)", - org.eclipse.jgit.util;version="[0.9.0,0.10.0)", - org.eclipse.jgit.util.io;version="[0.9.0,0.10.0)" + org.eclipse.jgit;version="[0.9.4,0.10.0)", + org.eclipse.jgit.api;version="[0.9.4,0.10.0)", + org.eclipse.jgit.api.errors;version="[0.9.4,0.10.0)", + org.eclipse.jgit.awtui;version="[0.9.4,0.10.0)", + org.eclipse.jgit.console;version="[0.9.4,0.10.0)", + org.eclipse.jgit.diff;version="[0.9.4,0.10.0)", + org.eclipse.jgit.dircache;version="[0.9.4,0.10.0)", + org.eclipse.jgit.errors;version="[0.9.4,0.10.0)", + org.eclipse.jgit.events;version="[0.9.4,0.10.0)", + org.eclipse.jgit.fnmatch;version="[0.9.4,0.10.0)", + org.eclipse.jgit.http.server;version="[0.9.4,0.10.0)", + org.eclipse.jgit.ignore;version="[0.9.4,0.10.0)", + org.eclipse.jgit.iplog;version="[0.9.4,0.10.0)", + org.eclipse.jgit.junit;version="[0.9.4,0.10.0)", + org.eclipse.jgit.lib;version="[0.9.4,0.10.0)", + org.eclipse.jgit.merge;version="[0.9.4,0.10.0)", + org.eclipse.jgit.nls;version="[0.9.4,0.10.0)", + org.eclipse.jgit.patch;version="[0.9.4,0.10.0)", + org.eclipse.jgit.pgm;version="[0.9.4,0.10.0)", + org.eclipse.jgit.revplot;version="[0.9.4,0.10.0)", + org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)", + org.eclipse.jgit.revwalk.filter;version="[0.9.4,0.10.0)", + org.eclipse.jgit.storage.file;version="[0.9.4,0.10.0)", + org.eclipse.jgit.storage.pack;version="[0.9.4,0.10.0)", + org.eclipse.jgit.transport;version="[0.9.4,0.10.0)", + org.eclipse.jgit.treewalk;version="[0.9.4,0.10.0)", + org.eclipse.jgit.treewalk.filter;version="[0.9.4,0.10.0)", + org.eclipse.jgit.util;version="[0.9.4,0.10.0)", + org.eclipse.jgit.util.io;version="[0.9.4,0.10.0)" Require-Bundle: com.jcraft.jsch;bundle-version="[0.1.37,0.2.0)" diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml index 5a1f9e2219..953d1c22be 100644 --- a/org.eclipse.jgit.test/pom.xml +++ b/org.eclipse.jgit.test/pom.xml @@ -52,7 +52,7 @@ <parent> <groupId>org.eclipse.jgit</groupId> <artifactId>org.eclipse.jgit-parent</artifactId> - <version>0.9.0-SNAPSHOT</version> + <version>0.9.4-SNAPSHOT</version> </parent> <artifactId>org.eclipse.jgit.test</artifactId> diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java new file mode 100644 index 0000000000..b8e1df7888 --- /dev/null +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java @@ -0,0 +1,306 @@ +/* + * Copyright (C) 2010, Christian Halstrick <christian.halstrick@sap.com> + * and other copyright owners as documented in the project's IP log. + * + * This program and the accompanying materials are made available + * under the terms of the Eclipse Distribution License v1.0 which + * accompanies this distribution, is reproduced below, and is + * available at http://www.eclipse.org/org/documents/edl-v10.php + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * - Neither the name of the Eclipse Foundation, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.eclipse.jgit.revplot; + +import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.revwalk.RevWalkTestCase; + +public class PlotCommitListTest extends RevWalkTestCase { + + class CommitListAssert { + private PlotCommitList<PlotLane> pcl; + private PlotCommit<PlotLane> current; + private int nextIndex = 0; + + CommitListAssert(PlotCommitList<PlotLane> pcl) { + this.pcl = pcl; + } + + public CommitListAssert commit(RevCommit id) { + assertTrue("Unexpected end of list at pos#"+nextIndex, pcl.size()>nextIndex); + current = pcl.get(nextIndex++); + assertEquals("Expected commit not found at pos#" + (nextIndex - 1), + id.getId(), current.getId()); + return this; + } + + public CommitListAssert lanePos(int pos) { + PlotLane lane = current.getLane(); + assertEquals("Position of lane of commit #" + (nextIndex - 1) + + " not as expected.", pos, lane.getPosition()); + return this; + } + + public CommitListAssert parents(RevCommit... parents) { + assertEquals("Number of parents of commit #" + (nextIndex - 1) + + " not as expected.", parents.length, + current.getParentCount()); + for (int i = 0; i < parents.length; i++) + assertEquals("Unexpected parent of commit #" + (nextIndex - 1), + parents[i], current.getParent(i)); + return this; + } + + public CommitListAssert noMoreCommits() { + assertEquals("Unexpected size of list", nextIndex, pcl.size()); + return this; + } + } + + @SuppressWarnings("boxing") + public void testLinear() throws Exception { + final RevCommit a = commit(); + final RevCommit b = commit(a); + final RevCommit c = commit(b); + + PlotWalk pw = new PlotWalk(db); + pw.markStart(pw.lookupCommit(c.getId())); + + PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>(); + pcl.source(pw); + pcl.fillTo(Integer.MAX_VALUE); + + CommitListAssert test = new CommitListAssert(pcl); + test.commit(c).lanePos(0).parents(b); + test.commit(b).lanePos(0).parents(a); + test.commit(a).lanePos(0).parents(); + test.noMoreCommits(); + } + + @SuppressWarnings("boxing") + public void testMerged() throws Exception { + final RevCommit a = commit(); + final RevCommit b = commit(a); + final RevCommit c = commit(a); + final RevCommit d = commit(b, c); + + PlotWalk pw = new PlotWalk(db); + pw.markStart(pw.lookupCommit(d.getId())); + + PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>(); + pcl.source(pw); + pcl.fillTo(Integer.MAX_VALUE); + + CommitListAssert test = new CommitListAssert(pcl); + test.commit(d).lanePos(0).parents(b, c); + test.commit(c).lanePos(0).parents(a); + test.commit(b).lanePos(1).parents(a); + test.commit(a).lanePos(0).parents(); + test.noMoreCommits(); + } + + @SuppressWarnings("boxing") + public void testSideBranch() throws Exception { + final RevCommit a = commit(); + final RevCommit b = commit(a); + final RevCommit c = commit(a); + + PlotWalk pw = new PlotWalk(db); + pw.markStart(pw.lookupCommit(b.getId())); + pw.markStart(pw.lookupCommit(c.getId())); + + PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>(); + pcl.source(pw); + pcl.fillTo(Integer.MAX_VALUE); + + CommitListAssert test = new CommitListAssert(pcl); + test.commit(c).lanePos(0).parents(a); + test.commit(b).lanePos(1).parents(a); + test.commit(a).lanePos(0).parents(); + test.noMoreCommits(); + } + + @SuppressWarnings("boxing") + public void test2SideBranches() throws Exception { + final RevCommit a = commit(); + final RevCommit b = commit(a); + final RevCommit c = commit(a); + final RevCommit d = commit(a); + + PlotWalk pw = new PlotWalk(db); + pw.markStart(pw.lookupCommit(b.getId())); + pw.markStart(pw.lookupCommit(c.getId())); + pw.markStart(pw.lookupCommit(d.getId())); + + PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>(); + pcl.source(pw); + pcl.fillTo(Integer.MAX_VALUE); + + CommitListAssert test = new CommitListAssert(pcl); + test.commit(d).lanePos(0).parents(a); + test.commit(c).lanePos(1).parents(a); + test.commit(b).lanePos(1).parents(a); + test.commit(a).lanePos(0).parents(); + test.noMoreCommits(); + } + + @SuppressWarnings("boxing") + public void testBug300282_1() throws Exception { + final RevCommit a = commit(); + final RevCommit b = commit(a); + final RevCommit c = commit(a); + final RevCommit d = commit(a); + final RevCommit e = commit(a); + final RevCommit f = commit(a); + final RevCommit g = commit(f); + + PlotWalk pw = new PlotWalk(db); + // TODO: when we add unnecessary commit's as tips (e.g. a commit which + // is a parent of another tip) the walk will return those commits twice. + // Find out why! + // pw.markStart(pw.lookupCommit(a.getId())); + pw.markStart(pw.lookupCommit(b.getId())); + pw.markStart(pw.lookupCommit(c.getId())); + pw.markStart(pw.lookupCommit(d.getId())); + pw.markStart(pw.lookupCommit(e.getId())); + // pw.markStart(pw.lookupCommit(f.getId())); + pw.markStart(pw.lookupCommit(g.getId())); + + PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>(); + pcl.source(pw); + pcl.fillTo(Integer.MAX_VALUE); + + CommitListAssert test = new CommitListAssert(pcl); + test.commit(g).lanePos(0).parents(f); + test.commit(f).lanePos(0).parents(a); + test.commit(e).lanePos(1).parents(a); + test.commit(d).lanePos(1).parents(a); + test.commit(c).lanePos(1).parents(a); + test.commit(b).lanePos(1).parents(a); + test.commit(a).lanePos(0).parents(); + test.noMoreCommits(); + } + + // test the history of the egit project between 9fdaf3c1 and e76ad9170f + public void testEgitHistory() throws Exception { + final RevCommit merge_fix = commit(); + final RevCommit add_simple = commit(merge_fix); + final RevCommit remove_unused = commit(merge_fix); + final RevCommit merge_remove = commit(add_simple, remove_unused); + final RevCommit resolve_handler = commit(merge_fix); + final RevCommit clear_repositorycache = commit(merge_remove); + final RevCommit add_Maven = commit(clear_repositorycache); + final RevCommit use_remote = commit(clear_repositorycache); + final RevCommit findToolBar_layout = commit(clear_repositorycache); + final RevCommit merge_add_Maven = commit(findToolBar_layout, add_Maven); + final RevCommit update_eclipse_iplog = commit(merge_add_Maven); + final RevCommit changeset_implementation = commit(clear_repositorycache); + final RevCommit merge_use_remote = commit(update_eclipse_iplog, + use_remote); + final RevCommit disable_source = commit(merge_use_remote); + final RevCommit update_eclipse_iplog2 = commit(merge_use_remote); + final RevCommit merge_disable_source = commit(update_eclipse_iplog2, + disable_source); + final RevCommit merge_changeset_implementation = commit( + merge_disable_source, changeset_implementation); + final RevCommit clone_operation = commit(merge_disable_source, + merge_changeset_implementation); + final RevCommit update_eclipse = commit(add_Maven); + final RevCommit merge_resolve_handler = commit(clone_operation, + resolve_handler); + final RevCommit disable_comment = commit(clone_operation); + final RevCommit merge_disable_comment = commit(merge_resolve_handler, + disable_comment); + final RevCommit fix_broken = commit(merge_disable_comment); + final RevCommit add_a_clear = commit(fix_broken); + final RevCommit merge_update_eclipse = commit(add_a_clear, + update_eclipse); + final RevCommit sort_roots = commit(merge_update_eclipse); + final RevCommit fix_logged_npe = commit(merge_changeset_implementation); + final RevCommit merge_fixed_logged_npe = commit(sort_roots, + fix_logged_npe); + + PlotWalk pw = new PlotWalk(db); + pw.markStart(pw.lookupCommit(merge_fixed_logged_npe.getId())); + + PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>(); + pcl.source(pw); + pcl.fillTo(Integer.MAX_VALUE); + + CommitListAssert test = new CommitListAssert(pcl); + + test.commit(merge_fixed_logged_npe).parents(sort_roots, fix_logged_npe) + .lanePos(0); + test.commit(fix_logged_npe).parents(merge_changeset_implementation) + .lanePos(0); + test.commit(sort_roots).parents(merge_update_eclipse).lanePos(1); + test.commit(merge_update_eclipse).parents(add_a_clear, update_eclipse) + .lanePos(1); + test.commit(add_a_clear).parents(fix_broken).lanePos(1); + test.commit(fix_broken).parents(merge_disable_comment).lanePos(1); + test.commit(merge_disable_comment) + .parents(merge_resolve_handler, disable_comment).lanePos(1); + test.commit(disable_comment).parents(clone_operation).lanePos(1); + test.commit(merge_resolve_handler) + .parents(clone_operation, resolve_handler).lanePos(2); + test.commit(update_eclipse).parents(add_Maven).lanePos(3); + test.commit(clone_operation) + .parents(merge_disable_source, merge_changeset_implementation) + .lanePos(1); + test.commit(merge_changeset_implementation) + .parents(merge_disable_source, changeset_implementation) + .lanePos(0); + test.commit(merge_disable_source) + .parents(update_eclipse_iplog2, disable_source).lanePos(1); + test.commit(update_eclipse_iplog2).parents(merge_use_remote).lanePos(0); + test.commit(disable_source).parents(merge_use_remote).lanePos(1); + test.commit(merge_use_remote).parents(update_eclipse_iplog, use_remote) + .lanePos(0); + test.commit(changeset_implementation).parents(clear_repositorycache) + .lanePos(2); + test.commit(update_eclipse_iplog).parents(merge_add_Maven).lanePos(0); + test.commit(merge_add_Maven).parents(findToolBar_layout, add_Maven) + .lanePos(0); + test.commit(findToolBar_layout).parents(clear_repositorycache) + .lanePos(0); + test.commit(use_remote).parents(clear_repositorycache).lanePos(1); + test.commit(add_Maven).parents(clear_repositorycache).lanePos(3); + test.commit(clear_repositorycache).parents(merge_remove).lanePos(2); + test.commit(resolve_handler).parents(merge_fix).lanePos(4); + test.commit(merge_remove).parents(add_simple, remove_unused).lanePos(2); + test.commit(remove_unused).parents(merge_fix).lanePos(0); + test.commit(add_simple).parents(merge_fix).lanePos(1); + test.commit(merge_fix).parents().lanePos(3); + test.noMoreCommits(); + } +} |