1
+#!/bin/sh
2
+#
3
+# Copyright (c) 2007 Johannes E. Schindelin
4
+#
5
+
6
+test_description='Test commit notes'
7
+
8
+. ./test-lib.sh
9
+
10
+cat > fake_editor.sh << \EOF
11
+echo "$MSG" > "$1"
12
+echo "$MSG" >& 2
13
+EOF
14
+chmod a+x fake_editor.sh
15
+VISUAL=./fake_editor.sh
16
+export VISUAL
17
+
18
+test_expect_success 'cannot annotate non-existing HEAD' '
19
+ (MSG=3 && export MSG && test_must_fail git notes edit)
20
+'
21
+
22
+test_expect_success setup '
23
+ : > a1 &&
24
+ git add a1 &&
25
+ test_tick &&
26
+ git commit -m 1st &&
27
+ : > a2 &&
28
+ git add a2 &&
29
+ test_tick &&
30
+ git commit -m 2nd
31
+'
32
+
33
+test_expect_success 'need valid notes ref' '
34
+ (MSG=1 GIT_NOTES_REF=/ && export MSG GIT_NOTES_REF &&
35
+ test_must_fail git notes edit) &&
36
+ (MSG=2 GIT_NOTES_REF=/ && export MSG GIT_NOTES_REF &&
37
+ test_must_fail git notes show)
38
+'
39
+
40
+test_expect_success 'refusing to edit in refs/heads/' '
41
+ (MSG=1 GIT_NOTES_REF=refs/heads/bogus &&
42
+ export MSG GIT_NOTES_REF &&
43
+ test_must_fail git notes edit)
44
+'
45
+
46
+test_expect_success 'refusing to edit in refs/remotes/' '
47
+ (MSG=1 GIT_NOTES_REF=refs/remotes/bogus &&
48
+ export MSG GIT_NOTES_REF &&
49
+ test_must_fail git notes edit)
50
+'
51
+
52
+# 1 indicates caught gracefully by die, 128 means git-show barked
53
+test_expect_success 'handle empty notes gracefully' '
54
+ git notes show ; test 1 = $?
55
+'
56
+
57
+test_expect_success 'create notes' '
58
+ git config core.notesRef refs/notes/commits &&
59
+ MSG=b1 git notes edit &&
60
+ test ! -f .git/new-notes &&
61
+ test 1 = $(git ls-tree refs/notes/commits | wc -l) &&
62
+ test b1 = $(git notes show) &&
63
+ git show HEAD^ &&
64
+ test_must_fail git notes show HEAD^
65
+'
66
+
67
+cat > expect << EOF
68
+commit 268048bfb8a1fb38e703baceb8ab235421bf80c5
69
+Author: A U Thor <author@example.com>
70
+Date: Thu Apr 7 15:14:13 2005 -0700
71
+
72
+ 2nd
73
+
74
+Notes:
75
+ b1
76
+EOF
77
+
78
+test_expect_success 'show notes' '
79
+ ! (git cat-file commit HEAD | grep b1) &&
80
+ git log -1 > output &&
81
+ test_cmp expect output
82
+'
83
+test_expect_success 'create multi-line notes (setup)' '
84
+ : > a3 &&
85
+ git add a3 &&
86
+ test_tick &&
87
+ git commit -m 3rd &&
88
+ MSG="b3
89
+c3c3c3c3
90
+d3d3d3" git notes edit
91
+'
92
+
93
+cat > expect-multiline << EOF
94
+commit 1584215f1d29c65e99c6c6848626553fdd07fd75
95
+Author: A U Thor <author@example.com>
96
+Date: Thu Apr 7 15:15:13 2005 -0700
97
+
98
+ 3rd
99
+
100
+Notes:
101
+ b3
102
+ c3c3c3c3
103
+ d3d3d3
104
+EOF
105
+
106
+printf "\n" >> expect-multiline
107
+cat expect >> expect-multiline
108
+
109
+test_expect_success 'show multi-line notes' '
110
+ git log -2 > output &&
111
+ test_cmp expect-multiline output
112
+'
113
+
114
+test_done