| #!/bin/sh |
| |
| test_description='blame output in various formats on a simple case' |
| . ./test-lib.sh |
| |
| test_expect_success 'setup' ' |
| echo a >file && |
| git add file && |
| test_tick && |
| git commit -m one && |
| echo b >>file && |
| echo c >>file && |
| echo d >>file && |
| test_tick && |
| git commit -a -m two && |
| ID1=$(git rev-parse HEAD^) && |
| shortID1="^$(git rev-parse HEAD^ |cut -c 1-17)" && |
| ID2=$(git rev-parse HEAD) && |
| shortID2="$(git rev-parse HEAD |cut -c 1-18)" |
| ' |
| |
| cat >expect <<EOF |
| $shortID1 (A U Thor 2005-04-07 15:13:13 -0700 1) a |
| $shortID2 (A U Thor 2005-04-07 15:14:13 -0700 2) b |
| $shortID2 (A U Thor 2005-04-07 15:14:13 -0700 3) c |
| $shortID2 (A U Thor 2005-04-07 15:14:13 -0700 4) d |
| EOF |
| test_expect_success 'normal blame output' ' |
| git blame --abbrev=17 file >actual && |
| test_cmp expect actual |
| ' |
| |
| COMMIT1="author A U Thor |
| author-mail <author@example.com> |
| author-time 1112911993 |
| author-tz -0700 |
| committer C O Mitter |
| committer-mail <committer@example.com> |
| committer-time 1112911993 |
| committer-tz -0700 |
| summary one |
| boundary |
| filename file" |
| COMMIT2="author A U Thor |
| author-mail <author@example.com> |
| author-time 1112912053 |
| author-tz -0700 |
| committer C O Mitter |
| committer-mail <committer@example.com> |
| committer-time 1112912053 |
| committer-tz -0700 |
| summary two |
| previous $ID1 file |
| filename file" |
| |
| cat >expect <<EOF |
| $ID1 1 1 1 |
| $COMMIT1 |
| a |
| $ID2 2 2 3 |
| $COMMIT2 |
| b |
| $ID2 3 3 |
| c |
| $ID2 4 4 |
| d |
| EOF |
| test_expect_success 'blame --porcelain output' ' |
| git blame --porcelain file >actual && |
| test_cmp expect actual |
| ' |
| |
| cat >expect <<EOF |
| $ID1 1 1 1 |
| $COMMIT1 |
| a |
| $ID2 2 2 3 |
| $COMMIT2 |
| b |
| $ID2 3 3 |
| $COMMIT2 |
| c |
| $ID2 4 4 |
| $COMMIT2 |
| d |
| EOF |
| test_expect_success 'blame --line-porcelain output' ' |
| git blame --line-porcelain file >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success '--porcelain detects first non-blank line as subject' ' |
| ( |
| GIT_INDEX_FILE=.git/tmp-index && |
| export GIT_INDEX_FILE && |
| echo "This is it" >single-file && |
| git add single-file && |
| tree=$(git write-tree) && |
| commit=$(printf "%s\n%s\n%s\n\n\n \noneline\n\nbody\n" \ |
| "tree $tree" \ |
| "author A <a@b.c> 123456789 +0000" \ |
| "committer C <c@d.e> 123456789 +0000" | |
| git hash-object -w -t commit --stdin) && |
| git blame --porcelain $commit -- single-file >output && |
| grep "^summary oneline$" output |
| ) |
| ' |
| |
| test_done |