@ -120,11 +120,15 @@ public class NameConflictTreeWalkTest extends RepositoryTestCase {
tw . addTree ( new DirCacheIterator ( tree1 ) ) ;
assertModes ( "a" , REGULAR_FILE , TREE , tw ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
assertTrue ( tw . isSubtree ( ) ) ;
tw . enterSubtree ( ) ;
assertModes ( "a/b" , MISSING , REGULAR_FILE , tw ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a.b" , EXECUTABLE_FILE , MISSING , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a0b" , SYMLINK , MISSING , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
}
public void testDF_GapByOne ( ) throws Exception {
@ -153,10 +157,14 @@ public class NameConflictTreeWalkTest extends RepositoryTestCase {
assertModes ( "a" , REGULAR_FILE , TREE , tw ) ;
assertTrue ( tw . isSubtree ( ) ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
tw . enterSubtree ( ) ;
assertModes ( "a/b" , MISSING , REGULAR_FILE , tw ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a.b" , EXECUTABLE_FILE , EXECUTABLE_FILE , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a0b" , SYMLINK , MISSING , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
}
public void testDF_SkipsSeenSubtree ( ) throws Exception {
@ -185,10 +193,57 @@ public class NameConflictTreeWalkTest extends RepositoryTestCase {
assertModes ( "a" , REGULAR_FILE , TREE , tw ) ;
assertTrue ( tw . isSubtree ( ) ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
tw . enterSubtree ( ) ;
assertModes ( "a/b" , MISSING , REGULAR_FILE , tw ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a.b" , MISSING , EXECUTABLE_FILE , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a0b" , SYMLINK , SYMLINK , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
}
public void testDF_DetectConflict ( ) throws Exception {
final DirCache tree0 = db . readDirCache ( ) ;
final DirCache tree1 = db . readDirCache ( ) ;
{
final DirCacheBuilder b0 = tree0 . builder ( ) ;
final DirCacheBuilder b1 = tree1 . builder ( ) ;
b0 . add ( makeEntry ( "0" , REGULAR_FILE ) ) ;
b0 . add ( makeEntry ( "a" , REGULAR_FILE ) ) ;
b1 . add ( makeEntry ( "0" , REGULAR_FILE ) ) ;
b1 . add ( makeEntry ( "a.b" , REGULAR_FILE ) ) ;
b1 . add ( makeEntry ( "a/b" , REGULAR_FILE ) ) ;
b1 . add ( makeEntry ( "a/c/e" , REGULAR_FILE ) ) ;
b0 . finish ( ) ;
b1 . finish ( ) ;
assertEquals ( 2 , tree0 . getEntryCount ( ) ) ;
assertEquals ( 4 , tree1 . getEntryCount ( ) ) ;
}
final NameConflictTreeWalk tw = new NameConflictTreeWalk ( db ) ;
tw . reset ( ) ;
tw . addTree ( new DirCacheIterator ( tree0 ) ) ;
tw . addTree ( new DirCacheIterator ( tree1 ) ) ;
assertModes ( "0" , REGULAR_FILE , REGULAR_FILE , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a" , REGULAR_FILE , TREE , tw ) ;
assertTrue ( tw . isSubtree ( ) ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
tw . enterSubtree ( ) ;
assertModes ( "a/b" , MISSING , REGULAR_FILE , tw ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a/c" , MISSING , TREE , tw ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
tw . enterSubtree ( ) ;
assertModes ( "a/c/e" , MISSING , REGULAR_FILE , tw ) ;
assertTrue ( tw . isDirectoryFileConflict ( ) ) ;
assertModes ( "a.b" , MISSING , REGULAR_FILE , tw ) ;
assertFalse ( tw . isDirectoryFileConflict ( ) ) ;
}
private DirCacheEntry makeEntry ( final String path , final FileMode mode )