Merge branch 'jn/add-2.0-u-A-sans-pathspec'
[git] / t / t7507-commit-verbose.sh
1 #!/bin/sh
2
3 test_description='verbose commit template'
4 . ./test-lib.sh
5
6 cat >check-for-diff <<EOF
7 #!$SHELL_PATH
8 exec grep '^diff --git' "\$1"
9 EOF
10 chmod +x check-for-diff
11 test_set_editor "$PWD/check-for-diff"
12
13 cat >message <<'EOF'
14 subject
15
16 body
17 EOF
18
19 test_expect_success 'setup' '
20         echo content >file &&
21         git add file &&
22         git commit -F message
23 '
24
25 test_expect_success 'initial commit shows verbose diff' '
26         git commit --amend -v
27 '
28
29 test_expect_success 'second commit' '
30         echo content modified >file &&
31         git add file &&
32         git commit -F message
33 '
34
35 check_message() {
36         git log -1 --pretty=format:%s%n%n%b >actual &&
37         test_cmp "$1" actual
38 }
39
40 test_expect_success 'verbose diff is stripped out' '
41         git commit --amend -v &&
42         check_message message
43 '
44
45 test_expect_success 'verbose diff is stripped out (mnemonicprefix)' '
46         git config diff.mnemonicprefix true &&
47         git commit --amend -v &&
48         check_message message
49 '
50
51 cat >diff <<'EOF'
52 This is an example commit message that contains a diff.
53
54 diff --git c/file i/file
55 new file mode 100644
56 index 0000000..f95c11d
57 --- /dev/null
58 +++ i/file
59 @@ -0,0 +1 @@
60 +this is some content
61 EOF
62
63 test_expect_success 'diff in message is retained without -v' '
64         git commit --amend -F diff &&
65         check_message diff
66 '
67
68 test_expect_success 'diff in message is retained with -v' '
69         git commit --amend -F diff -v &&
70         check_message diff
71 '
72
73 test_expect_success 'submodule log is stripped out too with -v' '
74         git config diff.submodule log &&
75         git submodule add ./. sub &&
76         git commit -m "sub added" &&
77         (
78                 cd sub &&
79                 echo "more" >>file &&
80                 git commit -a -m "submodule commit"
81         ) &&
82         (
83                 GIT_EDITOR=cat &&
84                 export GIT_EDITOR &&
85                 test_must_fail git commit -a -v 2>err
86         ) &&
87         test_i18ngrep "Aborting commit due to empty commit message." err
88 '
89
90 test_expect_success 'verbose diff is stripped out with set core.commentChar' '
91         (
92                 GIT_EDITOR=cat &&
93                 export GIT_EDITOR &&
94                 test_must_fail git -c core.commentchar=";" commit -a -v 2>err
95         ) &&
96         test_i18ngrep "Aborting commit due to empty commit message." err
97 '
98
99 test_done