@ -69,83 +69,90 @@ public class AttributesHandlerTest extends RepositoryTestCase {
private static final FileMode F = FileMode . REGULAR_FILE ;
private static final FileMode F = FileMode . REGULAR_FILE ;
private TreeWalk walk ;
@Test
@Test
public void testExpandNonMacro1 ( ) throws Exception {
public void testExpandNonMacro1 ( ) throws Exception {
setupRepo ( null , null , null , "*.txt text" ) ;
setupRepo ( null , null , null , "*.txt text" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "text" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "text" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testExpandNonMacro2 ( ) throws Exception {
public void testExpandNonMacro2 ( ) throws Exception {
setupRepo ( null , null , null , "*.txt -text" ) ;
setupRepo ( null , null , null , "*.txt -text" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "-text" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "-text" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testExpandNonMacro3 ( ) throws Exception {
public void testExpandNonMacro3 ( ) throws Exception {
setupRepo ( null , null , null , "*.txt !text" ) ;
setupRepo ( null , null , null , "*.txt !text" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testExpandNonMacro4 ( ) throws Exception {
public void testExpandNonMacro4 ( ) throws Exception {
setupRepo ( null , null , null , "*.txt text=auto" ) ;
setupRepo ( null , null , null , "*.txt text=auto" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "text=auto" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "text=auto" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testExpandBuiltInMacro1 ( ) throws Exception {
public void testExpandBuiltInMacro1 ( ) throws Exception {
setupRepo ( null , null , null , "*.txt binary" ) ;
setupRepo ( null , null , null , "*.txt binary" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "binary -diff -merge -text" ) ) ;
assertIteration ( walk , F , "sub/a.txt" ,
endWalk ( ) ;
attrs ( "binary -diff -merge -text" ) ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testExpandBuiltInMacro2 ( ) throws Exception {
public void testExpandBuiltInMacro2 ( ) throws Exception {
setupRepo ( null , null , null , "*.txt -binary" ) ;
setupRepo ( null , null , null , "*.txt -binary" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "-binary diff merge text" ) ) ;
assertIteration ( walk , F , "sub/a.txt" ,
endWalk ( ) ;
attrs ( "-binary diff merge text" ) ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testExpandBuiltInMacro3 ( ) throws Exception {
public void testExpandBuiltInMacro3 ( ) throws Exception {
setupRepo ( null , null , null , "*.txt !binary" ) ;
setupRepo ( null , null , null , "*.txt !binary" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -153,44 +160,48 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo (
setupRepo (
"[attr]foo a -b !c d=e" , null , null , "*.txt foo" ) ;
"[attr]foo a -b !c d=e" , null , null , "*.txt foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "foo a -b d=e" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "foo a -b d=e" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testCustomGlobalMacro2 ( ) throws Exception {
public void testCustomGlobalMacro2 ( ) throws Exception {
setupRepo ( "[attr]foo a -b !c d=e" , null , null , "*.txt -foo" ) ;
setupRepo ( "[attr]foo a -b !c d=e" , null , null , "*.txt -foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "-foo -a b d=e" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "-foo -a b d=e" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testCustomGlobalMacro3 ( ) throws Exception {
public void testCustomGlobalMacro3 ( ) throws Exception {
setupRepo ( "[attr]foo a -b !c d=e" , null , null , "*.txt !foo" ) ;
setupRepo ( "[attr]foo a -b !c d=e" , null , null , "*.txt !foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testCustomGlobalMacro4 ( ) throws Exception {
public void testCustomGlobalMacro4 ( ) throws Exception {
setupRepo ( "[attr]foo a -b !c d=e" , null , null , "*.txt foo=bar" ) ;
setupRepo ( "[attr]foo a -b !c d=e" , null , null , "*.txt foo=bar" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "foo=bar a -b d=bar" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "foo=bar a -b d=bar" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -198,11 +209,12 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo ( "[attr]foo bar1" ,
setupRepo ( "[attr]foo bar1" ,
"[attr]foo bar2" , null , "*.txt foo" ) ;
"[attr]foo bar2" , null , "*.txt foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "foo bar2" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "foo bar2" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -211,12 +223,13 @@ public class AttributesHandlerTest extends RepositoryTestCase {
null ,
null ,
"[attr]foo bar3" , "*.txt foo" ) ;
"[attr]foo bar3" , "*.txt foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "foo bar3" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "foo bar3" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -224,12 +237,13 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo ( "[attr]foo bar1" ,
setupRepo ( "[attr]foo bar1" ,
"[attr]foo bar2" , "[attr]foo bar3" , "*.txt foo" ) ;
"[attr]foo bar2" , "[attr]foo bar3" , "*.txt foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "foo bar2" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "foo bar2" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -238,11 +252,12 @@ public class AttributesHandlerTest extends RepositoryTestCase {
"[attr]foo x bar -foo" ,
"[attr]foo x bar -foo" ,
null , null , "*.txt foo" ) ;
null , null , "*.txt foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "foo x bar" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "foo x bar" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -250,11 +265,12 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo (
setupRepo (
"[attr]foo x -bar\n[attr]bar y -foo" , null , null , "*.txt foo" ) ;
"[attr]foo x -bar\n[attr]bar y -foo" , null , null , "*.txt foo" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/.gitattributes" ) ;
assertIteration ( walk , F , "sub/.gitattributes" ) ;
assertIteration ( F , "sub/a.txt" , attrs ( "foo x -bar -y" ) ) ;
assertIteration ( walk , F , "sub/a.txt" , attrs ( "foo x -bar -y" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -266,23 +282,30 @@ public class AttributesHandlerTest extends RepositoryTestCase {
// apply to any of the files here. It would match for a
// apply to any of the files here. It would match for a
// further subdirectory sub/sub. The sub/ rules must match
// further subdirectory sub/sub. The sub/ rules must match
// only for directories.
// only for directories.
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "sub" , attrs ( "global" ) ) ;
assertIteration ( walk , D , "sub" , attrs ( "global" ) ) ;
assertIteration ( F , "sub/.gitattributes" , attrs ( "init top_sub" ) ) ;
assertIteration ( walk , F , "sub/.gitattributes" ,
assertIteration ( F , "sub/a.txt" , attrs ( "init foo top top_sub" ) ) ;
attrs ( "init top_sub" ) ) ;
endWalk ( ) ;
assertIteration ( walk , F , "sub/a.txt" ,
attrs ( "init foo top top_sub" ) ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
// All right, let's see that they *do* apply in sub/sub:
// All right, let's see that they *do* apply in sub/sub:
writeTrashFile ( "sub/sub/b.txt" , "b" ) ;
writeTrashFile ( "sub/sub/b.txt" , "b" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "sub" , attrs ( "global" ) ) ;
assertIteration ( walk , D , "sub" , attrs ( "global" ) ) ;
assertIteration ( F , "sub/.gitattributes" , attrs ( "init top_sub" ) ) ;
assertIteration ( walk , F , "sub/.gitattributes" ,
assertIteration ( F , "sub/a.txt" , attrs ( "init foo top top_sub" ) ) ;
attrs ( "init top_sub" ) ) ;
assertIteration ( D , "sub/sub" , attrs ( "init subsub2 top_sub global" ) ) ;
assertIteration ( walk , F , "sub/a.txt" ,
assertIteration ( F , "sub/sub/b.txt" ,
attrs ( "init foo top top_sub" ) ) ;
attrs ( "init foo subsub top top_sub" ) ) ;
assertIteration ( walk , D , "sub/sub" ,
endWalk ( ) ;
attrs ( "init subsub2 top_sub global" ) ) ;
assertIteration ( walk , F , "sub/sub/b.txt" ,
attrs ( "init foo subsub top top_sub" ) ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -293,16 +316,17 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/b.jar" , "bj" ) ;
writeTrashFile ( "sub/b.jar" , "bj" ) ;
writeTrashFile ( "sub/b.xml" , "bx" ) ;
writeTrashFile ( "sub/b.xml" , "bx" ) ;
// On foo.xml/bar.jar we must not have 'xml'
// On foo.xml/bar.jar we must not have 'xml'
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo.xml" , attrs ( "xml" ) ) ;
assertIteration ( walk , D , "foo.xml" , attrs ( "xml" ) ) ;
assertIteration ( F , "foo.xml/bar.jar" , attrs ( "jar" ) ) ;
assertIteration ( walk , F , "foo.xml/bar.jar" , attrs ( "jar" ) ) ;
assertIteration ( F , "foo.xml/bar.xml" , attrs ( "xml" ) ) ;
assertIteration ( walk , F , "foo.xml/bar.xml" , attrs ( "xml" ) ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( F , "sub/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( walk , F , "sub/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( F , "sub/b.xml" , attrs ( "xml" ) ) ;
assertIteration ( walk , F , "sub/b.xml" , attrs ( "xml" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -314,18 +338,19 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/b.jar" , "bj" ) ;
writeTrashFile ( "sub/b.jar" , "bj" ) ;
writeTrashFile ( "sub/b.xml" , "bx" ) ;
writeTrashFile ( "sub/b.xml" , "bx" ) ;
writeTrashFile ( "sub/foo/b.jar" , "bf" ) ;
writeTrashFile ( "sub/foo/b.jar" , "bf" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" , attrs ( "xml" ) ) ;
assertIteration ( walk , D , "foo" , attrs ( "xml" ) ) ;
assertIteration ( F , "foo/bar.jar" , attrs ( "jar" ) ) ;
assertIteration ( walk , F , "foo/bar.jar" , attrs ( "jar" ) ) ;
assertIteration ( F , "foo/bar.xml" ) ;
assertIteration ( walk , F , "foo/bar.xml" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( F , "sub/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( walk , F , "sub/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( F , "sub/b.xml" ) ;
assertIteration ( walk , F , "sub/b.xml" ) ;
assertIteration ( D , "sub/foo" , attrs ( "sub xml" ) ) ;
assertIteration ( walk , D , "sub/foo" , attrs ( "sub xml" ) ) ;
assertIteration ( F , "sub/foo/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( walk , F , "sub/foo/b.jar" , attrs ( "jar" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -337,18 +362,19 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/b.xml" , "bx" ) ;
writeTrashFile ( "sub/b.xml" , "bx" ) ;
writeTrashFile ( "sub/foo/b.jar" , "bf" ) ;
writeTrashFile ( "sub/foo/b.jar" , "bf" ) ;
// On foo.xml/bar.jar we must not have 'xml'
// On foo.xml/bar.jar we must not have 'xml'
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( F , "foo/bar.jar" , attrs ( "jar xml" ) ) ;
assertIteration ( walk , F , "foo/bar.jar" , attrs ( "jar xml" ) ) ;
assertIteration ( F , "foo/bar.xml" , attrs ( "xml" ) ) ;
assertIteration ( walk , F , "foo/bar.xml" , attrs ( "xml" ) ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( F , "sub/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( walk , F , "sub/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( F , "sub/b.xml" ) ;
assertIteration ( walk , F , "sub/b.xml" ) ;
assertIteration ( D , "sub/foo" ) ;
assertIteration ( walk , D , "sub/foo" ) ;
assertIteration ( F , "sub/foo/b.jar" , attrs ( "jar" ) ) ;
assertIteration ( walk , F , "sub/foo/b.jar" , attrs ( "jar" ) ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -357,27 +383,29 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/a.txt" , "1" ) ;
writeTrashFile ( "sub/a.txt" , "1" ) ;
writeTrashFile ( "foo/sext" , "2" ) ;
writeTrashFile ( "foo/sext" , "2" ) ;
writeTrashFile ( "foo/s.txt" , "3" ) ;
writeTrashFile ( "foo/s.txt" , "3" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( F , "foo/s.txt" , attrs ( "bar" ) ) ;
assertIteration ( walk , F , "foo/s.txt" , attrs ( "bar" ) ) ;
assertIteration ( F , "foo/sext" , attrs ( "bar" ) ) ;
assertIteration ( walk , F , "foo/sext" , attrs ( "bar" ) ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
public void testPrefixMatchNot ( ) throws Exception {
public void testPrefixMatchNot ( ) throws Exception {
setupRepo ( null , null , "sub/new bar" , null ) ;
setupRepo ( null , null , "sub/new bar" , null ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -385,14 +413,15 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo ( null , null , "s[t-v]b/n[de]w bar" , null ) ;
setupRepo ( null , null , "s[t-v]b/n[de]w bar" , null ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/ndw" , "2" ) ;
writeTrashFile ( "sub/ndw" , "2" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( F , "sub/ndw" , attrs ( "bar" ) ) ;
assertIteration ( walk , F , "sub/ndw" , attrs ( "bar" ) ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -400,15 +429,16 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo ( null , null , "sub/new/* bar" , null ) ;
setupRepo ( null , null , "sub/new/* bar" , null ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/lower/foo.txt" , "2" ) ;
writeTrashFile ( "sub/new/lower/foo.txt" , "2" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" ) ;
assertIteration ( walk , D , "sub/new" ) ;
assertIteration ( F , "sub/new/foo.txt" , attrs ( "bar" ) ) ;
assertIteration ( walk , F , "sub/new/foo.txt" , attrs ( "bar" ) ) ;
assertIteration ( D , "sub/new/lower" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new/lower" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/lower/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/lower/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -417,20 +447,21 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "sub/sub/new/foo.txt" , "3" ) ;
writeTrashFile ( "sub/sub/new/foo.txt" , "3" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( D , "foo/sub" ) ;
assertIteration ( walk , D , "foo/sub" ) ;
assertIteration ( D , "foo/sub/new" ) ;
assertIteration ( walk , D , "foo/sub/new" ) ;
assertIteration ( F , "foo/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "foo/sub/new/foo.txt" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
assertIteration ( D , "sub/sub" ) ;
assertIteration ( walk , D , "sub/sub" ) ;
assertIteration ( D , "sub/sub/new" ) ;
assertIteration ( walk , D , "sub/sub/new" ) ;
assertIteration ( F , "sub/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -438,17 +469,18 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo ( null , null , "**/sub/new/ bar" , null ) ;
setupRepo ( null , null , "**/sub/new/ bar" , null ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( D , "foo/sub" ) ;
assertIteration ( walk , D , "foo/sub" ) ;
assertIteration ( D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "foo/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "foo/sub/new/foo.txt" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -457,20 +489,21 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "sub/sub/new/foo.txt" , "3" ) ;
writeTrashFile ( "sub/sub/new/foo.txt" , "3" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( D , "foo/sub" ) ;
assertIteration ( walk , D , "foo/sub" ) ;
assertIteration ( D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "foo/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "foo/sub/new/foo.txt" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
assertIteration ( D , "sub/sub" ) ;
assertIteration ( walk , D , "sub/sub" ) ;
assertIteration ( D , "sub/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -479,20 +512,21 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "sub/sub/new/foo.txt" , "3" ) ;
writeTrashFile ( "sub/sub/new/foo.txt" , "3" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( D , "foo/sub" ) ;
assertIteration ( walk , D , "foo/sub" ) ;
assertIteration ( D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "foo/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "foo/sub/new/foo.txt" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
assertIteration ( D , "sub/sub" ) ;
assertIteration ( walk , D , "sub/sub" ) ;
assertIteration ( D , "sub/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -500,17 +534,18 @@ public class AttributesHandlerTest extends RepositoryTestCase {
setupRepo ( null , null , "s[uv]b/n*/ bar" , null ) ;
setupRepo ( null , null , "s[uv]b/n*/ bar" , null ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( D , "foo/sub" ) ;
assertIteration ( walk , D , "foo/sub" ) ;
assertIteration ( D , "foo/sub/new" ) ;
assertIteration ( walk , D , "foo/sub/new" ) ;
assertIteration ( F , "foo/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "foo/sub/new/foo.txt" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
@Test
@Test
@ -519,30 +554,32 @@ public class AttributesHandlerTest extends RepositoryTestCase {
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "sub/new/foo.txt" , "1" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "foo/sub/new/foo.txt" , "2" ) ;
writeTrashFile ( "foo/new" , "3" ) ;
writeTrashFile ( "foo/new" , "3" ) ;
walk = beginWalk ( ) ;
try ( TreeWalk walk = beginWalk ( ) ) {
assertIteration ( F , ".gitattributes" ) ;
assertIteration ( walk , F , ".gitattributes" ) ;
assertIteration ( D , "foo" ) ;
assertIteration ( walk , D , "foo" ) ;
assertIteration ( F , "foo/new" ) ;
assertIteration ( walk , F , "foo/new" ) ;
assertIteration ( D , "foo/sub" ) ;
assertIteration ( walk , D , "foo/sub" ) ;
assertIteration ( D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "foo/sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "foo/sub/new/foo.txt" ) ;
assertIteration ( walk , F , "foo/sub/new/foo.txt" ) ;
assertIteration ( D , "sub" ) ;
assertIteration ( walk , D , "sub" ) ;
assertIteration ( F , "sub/a.txt" ) ;
assertIteration ( walk , F , "sub/a.txt" ) ;
assertIteration ( D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( walk , D , "sub/new" , attrs ( "bar" ) ) ;
assertIteration ( F , "sub/new/foo.txt" ) ;
assertIteration ( walk , F , "sub/new/foo.txt" ) ;
endWalk ( ) ;
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}
private static Collection < Attribute > attrs ( String s ) {
private static Collection < Attribute > attrs ( String s ) {
return new AttributesRule ( "*" , s ) . getAttributes ( ) ;
return new AttributesRule ( "*" , s ) . getAttributes ( ) ;
}
}
private void assertIteration ( FileMode type , String pathName )
private void assertIteration ( TreeWalk walk , FileMode type , String pathName )
throws IOException {
throws IOException {
assertIteration ( type , pathName , Collections . < Attribute > emptyList ( ) ) ;
assertIteration ( walk , type , pathName ,
Collections . < Attribute > emptyList ( ) ) ;
}
}
private void assertIteration ( FileMode type , String pathName ,
private void assertIteration ( TreeWalk walk , FileMode type , String pathName ,
Collection < Attribute > expectedAttrs ) throws IOException {
Collection < Attribute > expectedAttrs ) throws IOException {
assertTrue ( "walk has entry" , walk . next ( ) ) ;
assertTrue ( "walk has entry" , walk . next ( ) ) ;
assertEquals ( pathName , walk . getPathString ( ) ) ;
assertEquals ( pathName , walk . getPathString ( ) ) ;
@ -611,8 +648,4 @@ public class AttributesHandlerTest extends RepositoryTestCase {
newWalk . addTree ( new FileTreeIterator ( db ) ) ;
newWalk . addTree ( new FileTreeIterator ( db ) ) ;
return newWalk ;
return newWalk ;
}
}
private void endWalk ( ) throws IOException {
assertFalse ( "Not all files tested" , walk . next ( ) ) ;
}
}
}