]> git.proxmox.com Git - libgit2.git/blob - tests/message/trailer.c
New upstream version 1.3.0+dfsg.1
[libgit2.git] / tests / message / trailer.c
1 #include "clar_libgit2.h"
2 #include "message.h"
3
4 static void assert_trailers(const char *message, git_message_trailer *trailers)
5 {
6 git_message_trailer_array arr;
7 size_t i;
8
9 int rc = git_message_trailers(&arr, message);
10
11 cl_assert_equal_i(0, rc);
12
13 for(i=0; i<arr.count; i++) {
14 cl_assert_equal_s(arr.trailers[i].key, trailers[i].key);
15 cl_assert_equal_s(arr.trailers[i].value, trailers[i].value);
16 }
17
18 cl_assert_equal_i(0, rc);
19
20 git_message_trailer_array_free(&arr);
21 }
22
23 void test_message_trailer__simple(void)
24 {
25 git_message_trailer trailers[] = {
26 {"Signed-off-by", "foo@bar.com"},
27 {"Signed-off-by", "someone@else.com"},
28 {NULL, NULL},
29 };
30
31 assert_trailers(
32 "Message\n"
33 "\n"
34 "Signed-off-by: foo@bar.com\n"
35 "Signed-off-by: someone@else.com\n"
36 , trailers);
37 }
38
39 void test_message_trailer__no_whitespace(void)
40 {
41 git_message_trailer trailers[] = {
42 {"Key", "value"},
43 {NULL, NULL},
44 };
45
46 assert_trailers(
47 "Message\n"
48 "\n"
49 "Key:value\n"
50 , trailers);
51 }
52
53 void test_message_trailer__extra_whitespace(void)
54 {
55 git_message_trailer trailers[] = {
56 {"Key", "value"},
57 {NULL, NULL},
58 };
59
60 assert_trailers(
61 "Message\n"
62 "\n"
63 "Key : value\n"
64 , trailers);
65 }
66
67 void test_message_trailer__no_newline(void)
68 {
69 git_message_trailer trailers[] = {
70 {"Key", "value"},
71 {NULL, NULL},
72 };
73
74 assert_trailers(
75 "Message\n"
76 "\n"
77 "Key: value"
78 , trailers);
79 }
80
81 void test_message_trailer__not_last_paragraph(void)
82 {
83 git_message_trailer trailers[] = {
84 {NULL, NULL},
85 };
86
87 assert_trailers(
88 "Message\n"
89 "\n"
90 "Key: value\n"
91 "\n"
92 "More stuff\n"
93 , trailers);
94 }
95
96 void test_message_trailer__conflicts(void)
97 {
98 git_message_trailer trailers[] = {
99 {"Key", "value"},
100 {NULL, NULL},
101 };
102
103 assert_trailers(
104 "Message\n"
105 "\n"
106 "Key: value\n"
107 "\n"
108 "Conflicts:\n"
109 "\tfoo.c\n"
110 , trailers);
111 }
112
113 void test_message_trailer__patch(void)
114 {
115 git_message_trailer trailers[] = {
116 {"Key", "value"},
117 {NULL, NULL},
118 };
119
120 assert_trailers(
121 "Message\n"
122 "\n"
123 "Key: value\n"
124 "\n"
125 "---\n"
126 "More: stuff\n"
127 , trailers);
128 }
129
130 void test_message_trailer__continuation(void)
131 {
132 git_message_trailer trailers[] = {
133 {"A", "b\n c"},
134 {"D", "e\n f: g h"},
135 {"I", "j"},
136 {NULL, NULL},
137 };
138
139 assert_trailers(
140 "Message\n"
141 "\n"
142 "A: b\n"
143 " c\n"
144 "D: e\n"
145 " f: g h\n"
146 "I: j\n"
147 , trailers);
148 }
149
150 void test_message_trailer__invalid(void)
151 {
152 git_message_trailer trailers[] = {
153 {"Signed-off-by", "some@one.com"},
154 {"Another", "trailer"},
155 {NULL, NULL},
156 };
157
158 assert_trailers(
159 "Message\n"
160 "\n"
161 "Signed-off-by: some@one.com\n"
162 "Not a trailer\n"
163 "Another: trailer\n"
164 , trailers);
165 }