@ -1737,6 +1737,45 @@ public class RebaseCommandTest extends RepositoryTestCase {
assertEquals ( "file1" , diffs . get ( 0 ) . getOldPath ( ) ) ;
}
@Test
public void testFastForwardRebaseWithAutoStash ( ) throws Exception {
// create file0, add and commit
db . getConfig ( ) . setBoolean ( ConfigConstants . CONFIG_REBASE_SECTION , null ,
ConfigConstants . CONFIG_KEY_AUTOSTASH , true ) ;
writeTrashFile ( "file0" , "file0" ) ;
git . add ( ) . addFilepattern ( "file0" ) . call ( ) ;
git . commit ( ) . setMessage ( "commit0" ) . call ( ) ;
// create file1, add and commit
writeTrashFile ( FILE1 , "file1" ) ;
git . add ( ) . addFilepattern ( FILE1 ) . call ( ) ;
RevCommit commit = git . commit ( ) . setMessage ( "commit1" ) . call ( ) ;
// create topic branch
createBranch ( commit , "refs/heads/topic" ) ;
// checkout master branch / modify file1, add and commit
checkoutBranch ( "refs/heads/master" ) ;
writeTrashFile ( FILE1 , "modified file1" ) ;
git . add ( ) . addFilepattern ( FILE1 ) . call ( ) ;
git . commit ( ) . setMessage ( "commit3" ) . call ( ) ;
// checkout topic branch / modify file0
checkoutBranch ( "refs/heads/topic" ) ;
writeTrashFile ( "file0" , "unstaged modified file0" ) ;
// rebase
assertEquals ( Status . FAST_FORWARD ,
git . rebase ( ) . setUpstream ( "refs/heads/master" )
. call ( ) . getStatus ( ) ) ;
checkFile ( new File ( db . getWorkTree ( ) , "file0" ) ,
"unstaged modified file0" ) ;
checkFile ( new File ( db . getWorkTree ( ) , FILE1 ) , "modified file1" ) ;
assertEquals ( "[file0, mode:100644, content:file0]"
+ "[file1, mode:100644, content:modified file1]" ,
indexState ( CONTENT ) ) ;
assertEquals ( RepositoryState . SAFE , db . getRepositoryState ( ) ) ;
}
private List < DiffEntry > getStashedDiff ( ) throws AmbiguousObjectException ,
IncorrectObjectTypeException , IOException , MissingObjectException {
ObjectId stashId = db . resolve ( "stash@{0}" ) ;