diff options
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTest.java | 506 |
1 files changed, 256 insertions, 250 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTest.java index 7b3d4f6900..31b6d3b751 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTest.java @@ -78,96 +78,96 @@ public class CommitAndLogCommandTest extends RepositoryTestCase { GitAPIException { // do 4 commits - Git git = new Git(db); - git.commit().setMessage("initial commit").call(); - git.commit().setMessage("second commit").setCommitter(committer).call(); - git.commit().setMessage("third commit").setAuthor(author).call(); - git.commit().setMessage("fourth commit").setAuthor(author) - .setCommitter(committer).call(); - Iterable<RevCommit> commits = git.log().call(); - - // check that all commits came in correctly - PersonIdent defaultCommitter = new PersonIdent(db); - PersonIdent expectedAuthors[] = new PersonIdent[] { defaultCommitter, - committer, author, author }; - PersonIdent expectedCommitters[] = new PersonIdent[] { - defaultCommitter, committer, defaultCommitter, committer }; - String expectedMessages[] = new String[] { "initial commit", - "second commit", "third commit", "fourth commit" }; - int l = expectedAuthors.length - 1; - for (RevCommit c : commits) { - assertEquals(expectedAuthors[l].getName(), c.getAuthorIdent() - .getName()); - assertEquals(expectedCommitters[l].getName(), c.getCommitterIdent() - .getName()); - assertEquals(c.getFullMessage(), expectedMessages[l]); - l--; + try (Git git = new Git(db)) { + git.commit().setMessage("initial commit").call(); + git.commit().setMessage("second commit").setCommitter(committer).call(); + git.commit().setMessage("third commit").setAuthor(author).call(); + git.commit().setMessage("fourth commit").setAuthor(author) + .setCommitter(committer).call(); + Iterable<RevCommit> commits = git.log().call(); + + // check that all commits came in correctly + PersonIdent defaultCommitter = new PersonIdent(db); + PersonIdent expectedAuthors[] = new PersonIdent[] { defaultCommitter, + committer, author, author }; + PersonIdent expectedCommitters[] = new PersonIdent[] { + defaultCommitter, committer, defaultCommitter, committer }; + String expectedMessages[] = new String[] { "initial commit", + "second commit", "third commit", "fourth commit" }; + int l = expectedAuthors.length - 1; + for (RevCommit c : commits) { + assertEquals(expectedAuthors[l].getName(), c.getAuthorIdent() + .getName()); + assertEquals(expectedCommitters[l].getName(), c.getCommitterIdent() + .getName()); + assertEquals(c.getFullMessage(), expectedMessages[l]); + l--; + } + assertEquals(l, -1); + ReflogReader reader = db.getReflogReader(Constants.HEAD); + assertTrue(reader.getLastEntry().getComment().startsWith("commit:")); + reader = db.getReflogReader(db.getBranch()); + assertTrue(reader.getLastEntry().getComment().startsWith("commit:")); } - assertEquals(l, -1); - ReflogReader reader = db.getReflogReader(Constants.HEAD); - assertTrue(reader.getLastEntry().getComment().startsWith("commit:")); - reader = db.getReflogReader(db.getBranch()); - assertTrue(reader.getLastEntry().getComment().startsWith("commit:")); } @Test public void testLogWithFilter() throws IOException, JGitInternalException, GitAPIException { - Git git = new Git(db); - - // create first file - File file = new File(db.getWorkTree(), "a.txt"); - FileUtils.createNewFile(file); - PrintWriter writer = new PrintWriter(file); - writer.print("content1"); - writer.close(); - - // First commit - a.txt file - git.add().addFilepattern("a.txt").call(); - git.commit().setMessage("commit1").setCommitter(committer).call(); - - // create second file - file = new File(db.getWorkTree(), "b.txt"); - FileUtils.createNewFile(file); - writer = new PrintWriter(file); - writer.print("content2"); - writer.close(); - - // Second commit - b.txt file - git.add().addFilepattern("b.txt").call(); - git.commit().setMessage("commit2").setCommitter(committer).call(); - - // First log - a.txt filter - int count = 0; - for (RevCommit c : git.log().addPath("a.txt").call()) { - assertEquals("commit1", c.getFullMessage()); - count++; - } - assertEquals(1, count); - - // Second log - b.txt filter - count = 0; - for (RevCommit c : git.log().addPath("b.txt").call()) { - assertEquals("commit2", c.getFullMessage()); - count++; - } - assertEquals(1, count); - - // Third log - without filter - count = 0; - for (RevCommit c : git.log().call()) { - assertEquals(committer, c.getCommitterIdent()); - count++; + try (Git git = new Git(db)) { + // create first file + File file = new File(db.getWorkTree(), "a.txt"); + FileUtils.createNewFile(file); + PrintWriter writer = new PrintWriter(file); + writer.print("content1"); + writer.close(); + + // First commit - a.txt file + git.add().addFilepattern("a.txt").call(); + git.commit().setMessage("commit1").setCommitter(committer).call(); + + // create second file + file = new File(db.getWorkTree(), "b.txt"); + FileUtils.createNewFile(file); + writer = new PrintWriter(file); + writer.print("content2"); + writer.close(); + + // Second commit - b.txt file + git.add().addFilepattern("b.txt").call(); + git.commit().setMessage("commit2").setCommitter(committer).call(); + + // First log - a.txt filter + int count = 0; + for (RevCommit c : git.log().addPath("a.txt").call()) { + assertEquals("commit1", c.getFullMessage()); + count++; + } + assertEquals(1, count); + + // Second log - b.txt filter + count = 0; + for (RevCommit c : git.log().addPath("b.txt").call()) { + assertEquals("commit2", c.getFullMessage()); + count++; + } + assertEquals(1, count); + + // Third log - without filter + count = 0; + for (RevCommit c : git.log().call()) { + assertEquals(committer, c.getCommitterIdent()); + count++; + } + assertEquals(2, count); } - assertEquals(2, count); } // try to do a commit without specifying a message. Should fail! @Test public void testWrongParams() throws GitAPIException { - Git git = new Git(db); - try { + try (Git git = new Git(db)) { git.commit().setAuthor(author).call(); fail("Didn't get the expected exception"); } catch (NoMessageException e) { @@ -179,48 +179,50 @@ public class CommitAndLogCommandTest extends RepositoryTestCase { // exceptions @Test public void testMultipleInvocations() throws GitAPIException { - Git git = new Git(db); - CommitCommand commitCmd = git.commit(); - commitCmd.setMessage("initial commit").call(); - try { - // check that setters can't be called after invocation - commitCmd.setAuthor(author); - fail("didn't catch the expected exception"); - } catch (IllegalStateException e) { - // expected - } - LogCommand logCmd = git.log(); - logCmd.call(); - try { - // check that call can't be called twice + try (Git git = new Git(db)) { + CommitCommand commitCmd = git.commit(); + commitCmd.setMessage("initial commit").call(); + try { + // check that setters can't be called after invocation + commitCmd.setAuthor(author); + fail("didn't catch the expected exception"); + } catch (IllegalStateException e) { + // expected + } + LogCommand logCmd = git.log(); logCmd.call(); - fail("didn't catch the expected exception"); - } catch (IllegalStateException e) { - // expected + try { + // check that call can't be called twice + logCmd.call(); + fail("didn't catch the expected exception"); + } catch (IllegalStateException e) { + // expected + } } } @Test public void testMergeEmptyBranches() throws IOException, JGitInternalException, GitAPIException { - Git git = new Git(db); - git.commit().setMessage("initial commit").call(); - RefUpdate r = db.updateRef("refs/heads/side"); - r.setNewObjectId(db.resolve(Constants.HEAD)); - assertEquals(r.forceUpdate(), RefUpdate.Result.NEW); - RevCommit second = git.commit().setMessage("second commit").setCommitter(committer).call(); - db.updateRef(Constants.HEAD).link("refs/heads/side"); - RevCommit firstSide = git.commit().setMessage("first side commit").setAuthor(author).call(); - - write(new File(db.getDirectory(), Constants.MERGE_HEAD), ObjectId - .toString(db.resolve("refs/heads/master"))); - write(new File(db.getDirectory(), Constants.MERGE_MSG), "merging"); - - RevCommit commit = git.commit().call(); - RevCommit[] parents = commit.getParents(); - assertEquals(parents[0], firstSide); - assertEquals(parents[1], second); - assertEquals(2, parents.length); + try (Git git = new Git(db)) { + git.commit().setMessage("initial commit").call(); + RefUpdate r = db.updateRef("refs/heads/side"); + r.setNewObjectId(db.resolve(Constants.HEAD)); + assertEquals(r.forceUpdate(), RefUpdate.Result.NEW); + RevCommit second = git.commit().setMessage("second commit").setCommitter(committer).call(); + db.updateRef(Constants.HEAD).link("refs/heads/side"); + RevCommit firstSide = git.commit().setMessage("first side commit").setAuthor(author).call(); + + write(new File(db.getDirectory(), Constants.MERGE_HEAD), ObjectId + .toString(db.resolve("refs/heads/master"))); + write(new File(db.getDirectory(), Constants.MERGE_MSG), "merging"); + + RevCommit commit = git.commit().call(); + RevCommit[] parents = commit.getParents(); + assertEquals(parents[0], firstSide); + assertEquals(parents[1], second); + assertEquals(2, parents.length); + } } @Test @@ -232,56 +234,57 @@ public class CommitAndLogCommandTest extends RepositoryTestCase { writer.print("content"); writer.close(); - Git git = new Git(db); - git.add().addFilepattern("a.txt").call(); - RevCommit commit = git.commit().setMessage("initial commit").call(); - TreeWalk tw = TreeWalk.forPath(db, "a.txt", commit.getTree()); - assertEquals("6b584e8ece562ebffc15d38808cd6b98fc3d97ea", - tw.getObjectId(0).getName()); - - writer = new PrintWriter(file); - writer.print("content2"); - writer.close(); - commit = git.commit().setMessage("second commit").call(); - tw = TreeWalk.forPath(db, "a.txt", commit.getTree()); - assertEquals("6b584e8ece562ebffc15d38808cd6b98fc3d97ea", - tw.getObjectId(0).getName()); - - commit = git.commit().setAll(true).setMessage("third commit") - .setAll(true).call(); - tw = TreeWalk.forPath(db, "a.txt", commit.getTree()); - assertEquals("db00fd65b218578127ea51f3dffac701f12f486a", - tw.getObjectId(0).getName()); + try (Git git = new Git(db)) { + git.add().addFilepattern("a.txt").call(); + RevCommit commit = git.commit().setMessage("initial commit").call(); + TreeWalk tw = TreeWalk.forPath(db, "a.txt", commit.getTree()); + assertEquals("6b584e8ece562ebffc15d38808cd6b98fc3d97ea", + tw.getObjectId(0).getName()); + + writer = new PrintWriter(file); + writer.print("content2"); + writer.close(); + commit = git.commit().setMessage("second commit").call(); + tw = TreeWalk.forPath(db, "a.txt", commit.getTree()); + assertEquals("6b584e8ece562ebffc15d38808cd6b98fc3d97ea", + tw.getObjectId(0).getName()); + + commit = git.commit().setAll(true).setMessage("third commit") + .setAll(true).call(); + tw = TreeWalk.forPath(db, "a.txt", commit.getTree()); + assertEquals("db00fd65b218578127ea51f3dffac701f12f486a", + tw.getObjectId(0).getName()); + } } @Test public void testModeChange() throws IOException, GitAPIException { if (System.getProperty("os.name").startsWith("Windows")) return; // SKIP - Git git = new Git(db); - - // create file - File file = new File(db.getWorkTree(), "a.txt"); - FileUtils.createNewFile(file); - PrintWriter writer = new PrintWriter(file); - writer.print("content1"); - writer.close(); - - // First commit - a.txt file - git.add().addFilepattern("a.txt").call(); - git.commit().setMessage("commit1").setCommitter(committer).call(); - - // pure mode change should be committable - FS fs = db.getFS(); - fs.setExecute(file, true); - git.add().addFilepattern("a.txt").call(); - git.commit().setMessage("mode change").setCommitter(committer).call(); - - // pure mode change should be committable with -o option - fs.setExecute(file, false); - git.add().addFilepattern("a.txt").call(); - git.commit().setMessage("mode change").setCommitter(committer) - .setOnly("a.txt").call(); + try (Git git = new Git(db)) { + // create file + File file = new File(db.getWorkTree(), "a.txt"); + FileUtils.createNewFile(file); + PrintWriter writer = new PrintWriter(file); + writer.print("content1"); + writer.close(); + + // First commit - a.txt file + git.add().addFilepattern("a.txt").call(); + git.commit().setMessage("commit1").setCommitter(committer).call(); + + // pure mode change should be committable + FS fs = db.getFS(); + fs.setExecute(file, true); + git.add().addFilepattern("a.txt").call(); + git.commit().setMessage("mode change").setCommitter(committer).call(); + + // pure mode change should be committable with -o option + fs.setExecute(file, false); + git.add().addFilepattern("a.txt").call(); + git.commit().setMessage("mode change").setCommitter(committer) + .setOnly("a.txt").call(); + } } @Test @@ -289,112 +292,115 @@ public class CommitAndLogCommandTest extends RepositoryTestCase { JGitInternalException, MissingObjectException, IncorrectObjectTypeException { // do 4 commits and set the range to the second and fourth one - Git git = new Git(db); - git.commit().setMessage("first commit").call(); - RevCommit second = git.commit().setMessage("second commit") - .setCommitter(committer).call(); - git.commit().setMessage("third commit").setAuthor(author).call(); - RevCommit last = git.commit().setMessage("fourth commit").setAuthor( - author) - .setCommitter(committer).call(); - Iterable<RevCommit> commits = git.log().addRange(second.getId(), - last.getId()).call(); - - // check that we have the third and fourth commit - PersonIdent defaultCommitter = new PersonIdent(db); - PersonIdent expectedAuthors[] = new PersonIdent[] { author, author }; - PersonIdent expectedCommitters[] = new PersonIdent[] { - defaultCommitter, committer }; - String expectedMessages[] = new String[] { "third commit", - "fourth commit" }; - int l = expectedAuthors.length - 1; - for (RevCommit c : commits) { - assertEquals(expectedAuthors[l].getName(), c.getAuthorIdent() - .getName()); - assertEquals(expectedCommitters[l].getName(), c.getCommitterIdent() - .getName()); - assertEquals(c.getFullMessage(), expectedMessages[l]); - l--; + try (Git git = new Git(db)) { + git.commit().setMessage("first commit").call(); + RevCommit second = git.commit().setMessage("second commit") + .setCommitter(committer).call(); + git.commit().setMessage("third commit").setAuthor(author).call(); + RevCommit last = git.commit().setMessage("fourth commit").setAuthor( + author) + .setCommitter(committer).call(); + Iterable<RevCommit> commits = git.log().addRange(second.getId(), + last.getId()).call(); + + // check that we have the third and fourth commit + PersonIdent defaultCommitter = new PersonIdent(db); + PersonIdent expectedAuthors[] = new PersonIdent[] { author, author }; + PersonIdent expectedCommitters[] = new PersonIdent[] { + defaultCommitter, committer }; + String expectedMessages[] = new String[] { "third commit", + "fourth commit" }; + int l = expectedAuthors.length - 1; + for (RevCommit c : commits) { + assertEquals(expectedAuthors[l].getName(), c.getAuthorIdent() + .getName()); + assertEquals(expectedCommitters[l].getName(), c.getCommitterIdent() + .getName()); + assertEquals(c.getFullMessage(), expectedMessages[l]); + l--; + } + assertEquals(l, -1); } - assertEquals(l, -1); } @Test public void testCommitAmend() throws JGitInternalException, IOException, GitAPIException { - Git git = new Git(db); - git.commit().setMessage("first comit").call(); // typo - git.commit().setAmend(true).setMessage("first commit").call(); - - Iterable<RevCommit> commits = git.log().call(); - int c = 0; - for (RevCommit commit : commits) { - assertEquals("first commit", commit.getFullMessage()); - c++; + try (Git git = new Git(db)) { + git.commit().setMessage("first comit").call(); // typo + git.commit().setAmend(true).setMessage("first commit").call(); + + Iterable<RevCommit> commits = git.log().call(); + int c = 0; + for (RevCommit commit : commits) { + assertEquals("first commit", commit.getFullMessage()); + c++; + } + assertEquals(1, c); + ReflogReader reader = db.getReflogReader(Constants.HEAD); + assertTrue(reader.getLastEntry().getComment() + .startsWith("commit (amend):")); + reader = db.getReflogReader(db.getBranch()); + assertTrue(reader.getLastEntry().getComment() + .startsWith("commit (amend):")); } - assertEquals(1, c); - ReflogReader reader = db.getReflogReader(Constants.HEAD); - assertTrue(reader.getLastEntry().getComment() - .startsWith("commit (amend):")); - reader = db.getReflogReader(db.getBranch()); - assertTrue(reader.getLastEntry().getComment() - .startsWith("commit (amend):")); } @Test public void testInsertChangeId() throws JGitInternalException, GitAPIException { - Git git = new Git(db); - String messageHeader = "Some header line\n\nSome detail explanation\n"; - String changeIdTemplate = "\nChange-Id: I" - + ObjectId.zeroId().getName() + "\n"; - String messageFooter = "Some foooter lines\nAnother footer line\n"; - RevCommit commit = git.commit().setMessage( - messageHeader + messageFooter) - .setInsertChangeId(true).call(); - // we should find a real change id (at the end of the file) - byte[] chars = commit.getFullMessage().getBytes(); - int lastLineBegin = RawParseUtils.prevLF(chars, chars.length - 2); - String lastLine = RawParseUtils.decode(chars, lastLineBegin + 1, - chars.length); - assertTrue(lastLine.contains("Change-Id:")); - assertFalse(lastLine.contains( - "Change-Id: I" + ObjectId.zeroId().getName())); - - commit = git.commit().setMessage( - messageHeader + changeIdTemplate + messageFooter) - .setInsertChangeId(true).call(); - // we should find a real change id (in the line as dictated by the - // template) - chars = commit.getFullMessage().getBytes(); - int lineStart = 0; - int lineEnd = 0; - for (int i = 0; i < 4; i++) { - lineStart = RawParseUtils.nextLF(chars, lineStart); - } - lineEnd = RawParseUtils.nextLF(chars, lineStart); - - String line = RawParseUtils.decode(chars, lineStart, lineEnd); - - assertTrue(line.contains("Change-Id:")); - assertFalse(line.contains( - "Change-Id: I" + ObjectId.zeroId().getName())); - - commit = git.commit().setMessage( - messageHeader + changeIdTemplate + messageFooter) - .setInsertChangeId(false).call(); - // we should find the untouched template - chars = commit.getFullMessage().getBytes(); - lineStart = 0; - lineEnd = 0; - for (int i = 0; i < 4; i++) { - lineStart = RawParseUtils.nextLF(chars, lineStart); + try (Git git = new Git(db)) { + String messageHeader = "Some header line\n\nSome detail explanation\n"; + String changeIdTemplate = "\nChange-Id: I" + + ObjectId.zeroId().getName() + "\n"; + String messageFooter = "Some foooter lines\nAnother footer line\n"; + RevCommit commit = git.commit().setMessage( + messageHeader + messageFooter) + .setInsertChangeId(true).call(); + // we should find a real change id (at the end of the file) + byte[] chars = commit.getFullMessage().getBytes(); + int lastLineBegin = RawParseUtils.prevLF(chars, chars.length - 2); + String lastLine = RawParseUtils.decode(chars, lastLineBegin + 1, + chars.length); + assertTrue(lastLine.contains("Change-Id:")); + assertFalse(lastLine.contains( + "Change-Id: I" + ObjectId.zeroId().getName())); + + commit = git.commit().setMessage( + messageHeader + changeIdTemplate + messageFooter) + .setInsertChangeId(true).call(); + // we should find a real change id (in the line as dictated by the + // template) + chars = commit.getFullMessage().getBytes(); + int lineStart = 0; + int lineEnd = 0; + for (int i = 0; i < 4; i++) { + lineStart = RawParseUtils.nextLF(chars, lineStart); + } + lineEnd = RawParseUtils.nextLF(chars, lineStart); + + String line = RawParseUtils.decode(chars, lineStart, lineEnd); + + assertTrue(line.contains("Change-Id:")); + assertFalse(line.contains( + "Change-Id: I" + ObjectId.zeroId().getName())); + + commit = git.commit().setMessage( + messageHeader + changeIdTemplate + messageFooter) + .setInsertChangeId(false).call(); + // we should find the untouched template + chars = commit.getFullMessage().getBytes(); + lineStart = 0; + lineEnd = 0; + for (int i = 0; i < 4; i++) { + lineStart = RawParseUtils.nextLF(chars, lineStart); + } + lineEnd = RawParseUtils.nextLF(chars, lineStart); + + line = RawParseUtils.decode(chars, lineStart, lineEnd); + + assertTrue(commit.getFullMessage().contains( + "Change-Id: I" + ObjectId.zeroId().getName())); } - lineEnd = RawParseUtils.nextLF(chars, lineStart); - - line = RawParseUtils.decode(chars, lineStart, lineEnd); - - assertTrue(commit.getFullMessage().contains( - "Change-Id: I" + ObjectId.zeroId().getName())); } } |