diff options
author | Arthur Baars <arthur@semmle.com> | 2013-03-04 11:14:16 +0000 |
---|---|---|
committer | Arthur Baars <arthur@semmle.com> | 2013-03-31 15:36:47 +0100 |
commit | 2b9c440fd1a08158b5e69d3a9e1a5bed4a17b286 (patch) | |
tree | d16361f7929fc9fea6e977a9649221ad832deeb9 /org.eclipse.jgit.test | |
parent | 4796fe70432d882f1d51d9fec59c111107be44f8 (diff) | |
download | jgit-2b9c440fd1a08158b5e69d3a9e1a5bed4a17b286.tar.gz jgit-2b9c440fd1a08158b5e69d3a9e1a5bed4a17b286.zip |
LogCommand.all(), peel references before using them
Problem:
LogCommand.all() throws an IncorrectObjectTypeException when
there are tag references, and the repository does not contain
the file "packed-refs". It seems that the references were not properly
peeled before being added to the markStart() method.
Solution:
Call getRepository().peel() on every Ref that has isPeeled()==false
in LogCommand.all() .
Added test case for LogCommand.all() on repo with a tag.
1. I have authored 100% of the content I'm contributing,
2. I have the rights to donate the content to Eclipse,
3. I contribute the content under the EDL
Bug: 402025
Change-Id: Idb8881eeb6ccce8530f2837b25296e8e83636eb7
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java index 1f53645562..c6402e75ea 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java @@ -51,6 +51,7 @@ import java.util.Iterator; import java.util.List; import org.eclipse.jgit.junit.RepositoryTestCase; +import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.revwalk.RevCommit; import org.junit.Test; @@ -89,6 +90,30 @@ public class LogCommandTest extends RepositoryTestCase { assertFalse(log.hasNext()); } + @Test + public void logAllCommitsWithTag() throws Exception { + List<RevCommit> commits = new ArrayList<RevCommit>(); + Git git = Git.wrap(db); + + writeTrashFile("Test.txt", "Hello world"); + git.add().addFilepattern("Test.txt").call(); + commits.add(git.commit().setMessage("initial commit").call()); + + TagCommand tagCmd = git.tag(); + tagCmd.setName("tagname"); + tagCmd.setObjectId(commits.get(0)); + tagCmd.setTagger(new PersonIdent(db)); + Ref tag = tagCmd.call(); + + Iterator<RevCommit> log = git.log().all().call().iterator(); + assertTrue(log.hasNext()); + RevCommit commit = log.next(); + tag = db.peel(tag); + + assertEquals(commit.getName(), tag.getPeeledObjectId().getName()); + assertTrue(commits.contains(commit)); + } + private List<RevCommit> createCommits(Git git) throws Exception { List<RevCommit> commits = new ArrayList<RevCommit>(); writeTrashFile("Test.txt", "Hello world"); |