@ -51,14 +51,10 @@ import static org.junit.Assert.fail;
import static org.junit.Assume.assumeFalse ;
import java.io.File ;
import java.io.IOException ;
import java.io.PrintWriter ;
import org.eclipse.jgit.api.errors.GitAPIException ;
import org.eclipse.jgit.api.errors.JGitInternalException ;
import org.eclipse.jgit.api.errors.NoMessageException ;
import org.eclipse.jgit.errors.IncorrectObjectTypeException ;
import org.eclipse.jgit.errors.MissingObjectException ;
import org.eclipse.jgit.junit.RepositoryTestCase ;
import org.eclipse.jgit.lib.Constants ;
import org.eclipse.jgit.lib.ObjectId ;
@ -77,13 +73,12 @@ import org.junit.Test;
* /
public class CommitAndLogCommandTest extends RepositoryTestCase {
@Test
public void testSomeCommits ( ) throws JGitInternalException , IOException ,
GitAPIException {
public void testSomeCommits ( ) throws Exception {
// do 4 commits
try ( Git git = new Git ( db ) ) {
git . commit ( ) . setMessage ( "initial commit" ) . call ( ) ;
git . commit ( ) . setMessage ( "second commit" ) . setCommitter ( committer ) . 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 ( ) ;
@ -91,26 +86,28 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
// check that all commits came in correctly
PersonIdent defaultCommitter = new PersonIdent ( db ) ;
PersonIdent expectedAuthors [ ] = new PersonIdent [ ] { defaultCommitter ,
committer , author , author } ;
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 ( 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:" ) ) ;
assertTrue (
reader . getLastEntry ( ) . getComment ( ) . startsWith ( "commit:" ) ) ;
reader = db . getReflogReader ( db . getBranch ( ) ) ;
assertTrue ( reader . getLastEntry ( ) . getComment ( ) . startsWith ( "commit:" ) ) ;
assertTrue (
reader . getLastEntry ( ) . getComment ( ) . startsWith ( "commit:" ) ) ;
}
}
@ -152,19 +149,20 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
}
@Test
public void testMergeEmptyBranches ( ) throws IOException ,
JGitInternalException , GitAPIException {
public void testMergeEmptyBranches ( ) throws Exception {
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 ( ) ;
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 ( ) ;
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_HEAD ) ,
ObjectId . toString ( db . resolve ( "refs/heads/master" ) ) ) ;
write ( new File ( db . getDirectory ( ) , Constants . MERGE_MSG ) , "merging" ) ;
RevCommit commit = git . commit ( ) . call ( ) ;
@ -176,8 +174,7 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
}
@Test
public void testAddUnstagedChanges ( ) throws IOException ,
JGitInternalException , GitAPIException {
public void testAddUnstagedChanges ( ) throws Exception {
File file = new File ( db . getWorkTree ( ) , "a.txt" ) ;
FileUtils . createNewFile ( file ) ;
try ( PrintWriter writer = new PrintWriter ( file , UTF_8 . name ( ) ) ) {
@ -208,7 +205,7 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
}
@Test
public void testModeChange ( ) throws IOException , GitAPI Exception {
public void testModeChange ( ) throws Exception {
assumeFalse ( System . getProperty ( "os.name" ) . startsWith ( "Windows" ) ) ; // SKIP
try ( Git git = new Git ( db ) ) {
// create file
@ -226,7 +223,8 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
FS fs = db . getFS ( ) ;
fs . setExecute ( file , true ) ;
git . add ( ) . addFilepattern ( "a.txt" ) . call ( ) ;
git . commit ( ) . setMessage ( "mode change" ) . setCommitter ( committer ) . call ( ) ;
git . commit ( ) . setMessage ( "mode change" ) . setCommitter ( committer )
. call ( ) ;
// pure mode change should be committable with -o option
fs . setExecute ( file , false ) ;
@ -237,34 +235,32 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
}
@Test
public void testCommitRange ( ) throws GitAPIException ,
JGitInternalException , MissingObjectException ,
IncorrectObjectTypeException {
public void testCommitRange ( ) throws Exception {
// do 4 commits and set the range to the second and fourth one
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 ( ) ;
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 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 ( expectedAuthors [ l ] . getName ( ) ,
c . getAuthorIdent ( ) . getName ( ) ) ;
assertEquals ( expectedCommitters [ l ] . getName ( ) ,
c . getCommitterIdent ( ) . getName ( ) ) ;
assertEquals ( c . getFullMessage ( ) , expectedMessages [ l ] ) ;
l - - ;
}
@ -273,8 +269,7 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
}
@Test
public void testCommitAmend ( ) throws JGitInternalException , IOException ,
GitAPIException {
public void testCommitAmend ( ) throws Exception {
try ( Git git = new Git ( db ) ) {
git . commit ( ) . setMessage ( "first comit" ) . call ( ) ; // typo
git . commit ( ) . setAmend ( true ) . setMessage ( "first commit" ) . call ( ) ;
@ -296,15 +291,14 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
}
@Test
public void testInsertChangeId ( ) throws JGitInternalException ,
GitAPIException {
public void testInsertChangeId ( ) throws Exception {
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 )
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 ( UTF_8 ) ;
@ -312,11 +306,12 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
String lastLine = RawParseUtils . decode ( chars , lastLineBegin + 1 ,
chars . length ) ;
assertTrue ( lastLine . contains ( "Change-Id:" ) ) ;
assertFalse ( lastLine . contains (
"Change-Id: I" + ObjectId . zeroId ( ) . getName ( ) ) ) ;
assertFalse ( lastLine
. contains ( "Change-Id: I" + ObjectId . zeroId ( ) . getName ( ) ) ) ;
commit = git . commit ( ) . setMessage (
messageHeader + changeIdTemplate + messageFooter )
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)
@ -331,11 +326,12 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
String line = RawParseUtils . decode ( chars , lineStart , lineEnd ) ;
assertTrue ( line . contains ( "Change-Id:" ) ) ;
assertFalse ( line . contains (
"Change-Id: I" + ObjectId . zeroId ( ) . getName ( ) ) ) ;
assertFalse ( line
. contains ( "Change-Id: I" + ObjectId . zeroId ( ) . getName ( ) ) ) ;
commit = git . commit ( ) . setMessage (
messageHeader + changeIdTemplate + messageFooter )
commit = git . commit ( )
. setMessage (
messageHeader + changeIdTemplate + messageFooter )
. setInsertChangeId ( false ) . call ( ) ;
// we should find the untouched template
chars = commit . getFullMessage ( ) . getBytes ( UTF_8 ) ;
@ -348,8 +344,8 @@ public class CommitAndLogCommandTest extends RepositoryTestCase {
line = RawParseUtils . decode ( chars , lineStart , lineEnd ) ;
assertTrue ( commit . getFullMessage ( ) . contains (
"Change-Id: I" + ObjectId . zeroId ( ) . getName ( ) ) ) ;
assertTrue ( commit . getFullMessage ( )
. contains ( "Change-Id: I" + ObjectId . zeroId ( ) . getName ( ) ) ) ;
}
}
}