summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorArthur Baars <arthur@semmle.com>2013-03-04 11:14:16 +0000
committerArthur Baars <arthur@semmle.com>2013-03-31 15:36:47 +0100
commit2b9c440fd1a08158b5e69d3a9e1a5bed4a17b286 (patch)
treed16361f7929fc9fea6e977a9649221ad832deeb9 /org.eclipse.jgit.test
parent4796fe70432d882f1d51d9fec59c111107be44f8 (diff)
downloadjgit-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.java25
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");