Fourth batch
[gitweb.git] / t / t4209-log-pickaxe.sh
index 9c3b5963669dc0afde9a11737b9579fd1e2131e2..5d06f5f45eace6010c1a003e03a814b5ba03f324 100755 (executable)
@@ -33,6 +33,12 @@ test_log () {
        "
 }
 
+# test -i and --regexp-ignore-case and expect both to behave the same way
+test_log_icase () {
+       test_log $@ --regexp-ignore-case
+       test_log $@ -i
+}
+
 test_expect_success setup '
        >expect_nomatch &&
 
@@ -49,37 +55,20 @@ test_expect_success setup '
        git rev-parse --verify HEAD >expect_second
 '
 
-test_expect_success 'log --grep' '
-       git log --grep=initial --format=%H >actual &&
-       test_cmp expect_initial actual
-'
+test_log       expect_initial  --grep initial
+test_log       expect_nomatch  --grep InItial
+test_log_icase expect_initial  --grep InItial
+test_log_icase expect_nomatch  --grep initail
 
-test_expect_success 'log --grep --regexp-ignore-case' '
-       git log --regexp-ignore-case --grep=InItial --format=%H >actual &&
-       test_cmp expect_initial actual
-'
+test_log       expect_second   --author Person
+test_log       expect_nomatch  --author person
+test_log_icase expect_second   --author person
+test_log_icase expect_nomatch  --author spreon
 
-test_expect_success 'log --grep -i' '
-       git log -i --grep=InItial --format=%H >actual &&
-       test_cmp expect_initial actual
-'
-
-test_expect_success 'log --author --regexp-ignore-case' '
-       git log --regexp-ignore-case --author=person --format=%H >actual &&
-       test_cmp expect_second actual
-'
-
-test_expect_success 'log --author -i' '
-       git log -i --author=person --format=%H >actual &&
-       test_cmp expect_second actual
-'
-
-test_log expect_nomatch -G picked
-test_log expect_second  -G Picked
-test_log expect_nomatch -G pickle --regexp-ignore-case
-test_log expect_nomatch -G pickle -i
-test_log expect_second  -G picked --regexp-ignore-case
-test_log expect_second  -G picked -i
+test_log       expect_nomatch  -G picked
+test_log       expect_second   -G Picked
+test_log_icase expect_nomatch  -G pickle
+test_log_icase expect_second   -G picked
 
 test_expect_success 'log -G --textconv (missing textconv tool)' '
        echo "* diff=test" >.gitattributes &&
@@ -94,12 +83,15 @@ test_expect_success 'log -G --no-textconv (missing textconv tool)' '
        rm .gitattributes
 '
 
-test_log expect_nomatch -S picked
-test_log expect_second  -S Picked
-test_log expect_second  -S picked --regexp-ignore-case
-test_log expect_second  -S picked -i
-test_log expect_nomatch -S pickle --regexp-ignore-case
-test_log expect_nomatch -S pickle -i
+test_log       expect_nomatch  -S picked
+test_log       expect_second   -S Picked
+test_log_icase expect_second   -S picked
+test_log_icase expect_nomatch  -S pickle
+
+test_log       expect_nomatch  -S p.cked --pickaxe-regex
+test_log       expect_second   -S P.cked --pickaxe-regex
+test_log_icase expect_second   -S p.cked --pickaxe-regex
+test_log_icase expect_nomatch  -S p.ckle --pickaxe-regex
 
 test_expect_success 'log -S --textconv (missing textconv tool)' '
        echo "* diff=test" >.gitattributes &&
@@ -114,4 +106,39 @@ test_expect_success 'log -S --no-textconv (missing textconv tool)' '
        rm .gitattributes
 '
 
+test_expect_success 'setup log -[GS] binary & --text' '
+       git checkout --orphan GS-binary-and-text &&
+       git read-tree --empty &&
+       printf "a\na\0a\n" >data.bin &&
+       git add data.bin &&
+       git commit -m "create binary file" data.bin &&
+       printf "a\na\0a\n" >>data.bin &&
+       git commit -m "modify binary file" data.bin &&
+       git rm data.bin &&
+       git commit -m "delete binary file" data.bin &&
+       git log >full-log
+'
+
+test_expect_success 'log -G ignores binary files' '
+       git log -Ga >log &&
+       test_must_be_empty log
+'
+
+test_expect_success 'log -G looks into binary files with -a' '
+       git log -a -Ga >log &&
+       test_cmp log full-log
+'
+
+test_expect_success 'log -G looks into binary files with textconv filter' '
+       test_when_finished "rm .gitattributes" &&
+       echo "* diff=bin" >.gitattributes &&
+       git -c diff.bin.textconv=cat log -Ga >log &&
+       test_cmp log full-log
+'
+
+test_expect_success 'log -S looks into binary files' '
+       git log -Sa >log &&
+       test_cmp log full-log
+'
+
 test_done