Browse Source
* 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 commitsstable-0.10
Shawn O. Pearce
14 years ago
35 changed files with 617 additions and 203 deletions
@ -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(); |
||||
} |
||||
} |
Loading…
Reference in new issue