@ -164,7 +164,7 @@ public class RebaseCommandTest extends RepositoryTestCase {
* Create the following commits and then attempt to rebase topic onto
* Create the following commits and then attempt to rebase topic onto
* master . This will fail as the cherry - pick list C , D , E an F contains
* master . This will fail as the cherry - pick list C , D , E an F contains
* a merge commit ( F ) .
* a merge commit ( F ) .
*
*
* < pre >
* < pre >
* A - B ( master )
* A - B ( master )
* \
* \
@ -1053,7 +1053,7 @@ public class RebaseCommandTest extends RepositoryTestCase {
// checkout topic branch / modify file2 and add
// checkout topic branch / modify file2 and add
checkoutBranch ( "refs/heads/topic" ) ;
checkoutBranch ( "refs/heads/topic" ) ;
writeTrashFile ( "file2" , "uncommitted file2" ) ;
File uncommittedFile = writeTrashFile ( "file2" , "uncommitted file2" ) ;
git . add ( ) . addFilepattern ( "file2" ) . call ( ) ;
git . add ( ) . addFilepattern ( "file2" ) . call ( ) ;
// do not commit
// do not commit
@ -1067,6 +1067,9 @@ public class RebaseCommandTest extends RepositoryTestCase {
assertNotNull ( exception ) ;
assertNotNull ( exception ) ;
assertEquals ( "Checkout conflict with files: \nfile2" ,
assertEquals ( "Checkout conflict with files: \nfile2" ,
exception . getMessage ( ) ) ;
exception . getMessage ( ) ) ;
checkFile ( uncommittedFile , "uncommitted file2" ) ;
assertEquals ( RepositoryState . SAFE , git . getRepository ( ) . getRepositoryState ( ) ) ;
}
}
@Test
@Test
@ -1375,4 +1378,38 @@ public class RebaseCommandTest extends RepositoryTestCase {
checkFile ( new File ( db . getWorkTree ( ) , "file2" ) , "more change" ) ;
checkFile ( new File ( db . getWorkTree ( ) , "file2" ) , "more change" ) ;
assertEquals ( Status . FAST_FORWARD , res . getStatus ( ) ) ;
assertEquals ( Status . FAST_FORWARD , res . getStatus ( ) ) ;
}
}
@Test
public void testRebaseShouldLeaveWorkspaceUntouchedWithUnstagedChangesConflict ( )
throws Exception {
writeTrashFile ( FILE1 , "initial file" ) ;
git . add ( ) . addFilepattern ( FILE1 ) . call ( ) ;
RevCommit initial = git . commit ( ) . setMessage ( "initial commit" ) . call ( ) ;
createBranch ( initial , "refs/heads/side" ) ;
writeTrashFile ( FILE1 , "updated file" ) ;
git . add ( ) . addFilepattern ( FILE1 ) . call ( ) ;
git . commit ( ) . setMessage ( "updated FILE1 on master" ) . call ( ) ;
// switch to side, modify the file
checkoutBranch ( "refs/heads/side" ) ;
writeTrashFile ( FILE1 , "side update" ) ;
git . add ( ) . addFilepattern ( FILE1 ) . call ( ) ;
git . commit ( ) . setMessage ( "updated FILE1 on side" ) . call ( ) ;
File theFile = writeTrashFile ( FILE1 , "dirty the file" ) ;
// and attempt to rebase
try {
RebaseResult rebaseResult = git . rebase ( )
. setUpstream ( "refs/heads/master" ) . call ( ) ;
fail ( "Checkout with conflict should have occured, not "
+ rebaseResult . getStatus ( ) ) ;
} catch ( JGitInternalException e ) {
checkFile ( theFile , "dirty the file" ) ;
}
assertEquals ( RepositoryState . SAFE , git . getRepository ( )
. getRepositoryState ( ) ) ;
}
}
}