annotate contrib/gcc-changelog/test_email.py @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 2b5abeee2509
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 #!/usr/bin/env python3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 #
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 # This file is part of GCC.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 #
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 # GCC is free software; you can redistribute it and/or modify it under
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 # the terms of the GNU General Public License as published by the Free
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 # Software Foundation; either version 3, or (at your option) any later
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 # version.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 #
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 # GCC is distributed in the hope that it will be useful, but WITHOUT ANY
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 # for more details.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 #
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 # along with GCC; see the file COPYING3. If not see
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 # <http://www.gnu.org/licenses/>. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 import os
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 import tempfile
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 import unittest
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 from git_email import GitEmail
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 script_path = os.path.dirname(os.path.realpath(__file__))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 class TestGccChangelog(unittest.TestCase):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 def setUp(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 self.patches = {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 self.temps = []
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 filename = None
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 patch_lines = []
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 lines = open(os.path.join(script_path, 'test_patches.txt')).read()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 for line in lines.split('\n'):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 if line.startswith('==='):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 if patch_lines:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 self.patches[filename] = patch_lines
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 filename = line.split(' ')[1]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 patch_lines = []
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 else:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 patch_lines.append(line)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 if patch_lines:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 self.patches[filename] = patch_lines
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 def tearDown(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 for t in self.temps:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 assert t.endswith('.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 os.remove(t)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 def get_git_email(self, filename, strict=False):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 with tempfile.NamedTemporaryFile(mode='w+', suffix='.patch',
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 delete=False) as f:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 f.write('\n'.join(self.patches[filename]))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 self.temps.append(f.name)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 return GitEmail(f.name, strict)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 def from_patch_glob(self, name, strict=False):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 files = [f for f in self.patches.keys() if f.startswith(name)]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 assert len(files) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 return self.get_git_email(files[0], strict)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 def test_simple_patch_format(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66 email = self.get_git_email('0577-aarch64-Add-an-and.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 assert len(email.changelog_entries) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 entry = email.changelog_entries[0]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 assert (entry.author_lines ==
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71 [('Richard Sandiford <richard.sandiford@arm.com>',
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 '2020-02-06')])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 assert len(entry.authors) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 assert (entry.authors[0]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 == 'Richard Sandiford <richard.sandiford@arm.com>')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 assert entry.folder == 'gcc'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 assert entry.prs == ['PR target/87763']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78 assert len(entry.files) == 3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 assert entry.files[0] == 'config/aarch64/aarch64-protos.h'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
80
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
81 def test_daily_bump(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
82 email = self.get_git_email('0085-Daily-bump.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
83 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
84 assert not email.changelog_entries
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
85
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
86 def test_deduce_changelog_entries(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
87 email = self.from_patch_glob('0040')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
88 assert len(email.changelog_entries) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
89 assert email.changelog_entries[0].folder == 'gcc/cp'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
90 assert email.changelog_entries[0].prs == ['PR c++/90916']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
91 assert email.changelog_entries[0].files == ['pt.c']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
92 # this one is added automatically
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
93 assert email.changelog_entries[1].folder == 'gcc/testsuite'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
94
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
95 def test_only_changelog_updated(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
96 email = self.from_patch_glob('0129')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
97 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
98 assert not email.changelog_entries
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
99
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
100 def test_wrong_mentioned_filename(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
101 email = self.from_patch_glob('0096')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
102 assert email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
103 err = email.errors[0]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
104 assert err.message == 'file not changed in a patch'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
105 assert err.line == 'gcc/testsuite/gcc.target/aarch64/' \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
106 'advsimd-intrinsics/vdot-compile-3-1.c'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
107
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
108 def test_missing_tab(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
109 email = self.from_patch_glob('0031')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
110 assert len(email.errors) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
111 err = email.errors[0]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
112 assert err.message == 'line should start with a tab'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
113 assert err.line == ' * cfgloopanal.c (average_num_loop_insns): ' \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
114 'Free bbs when early'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
115
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
116 def test_leading_changelog_format(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
117 email = self.from_patch_glob('0184')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
118 assert len(email.errors) == 4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
119 assert email.errors[0].line == 'gcc/c-family/c-cppbuiltins.c'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
120 assert email.errors[2].line == 'gcc/c-family/c-cppbuiltin.c'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
121
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
122 def test_cannot_deduce_no_blank_line(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
123 email = self.from_patch_glob('0334')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
124 assert len(email.errors) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
125 assert len(email.changelog_entries) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
126 assert email.changelog_entries[0].folder is None
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
127
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
128 def test_author_lines(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
129 email = self.from_patch_glob('0814')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
130 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
131 assert (email.changelog_entries[0].author_lines ==
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
132 [('Martin Jambor <mjambor@suse.cz>', '2020-02-19')])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
133
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
134 def test_multiple_authors_and_prs(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
135 email = self.from_patch_glob('0735')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
136 assert len(email.changelog_entries) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
137 entry = email.changelog_entries[0]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
138 assert len(entry.author_lines) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
139 assert len(entry.authors) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
140 assert (entry.author_lines[1] ==
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
141 ('Bernd Edlinger <bernd.edlinger@hotmail.de>', None))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
142
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
143 def test_multiple_prs(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
144 email = self.from_patch_glob('1699')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
145 assert len(email.changelog_entries) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
146 assert len(email.changelog_entries[0].prs) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
147
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
148 def test_missing_PR_component(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
149 email = self.from_patch_glob('0735')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
150 assert len(email.errors) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
151 assert email.errors[0].message == 'missing PR component'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
153 def test_invalid_PR_component(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
154 email = self.from_patch_glob('0198')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
155 assert len(email.errors) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
156 assert email.errors[0].message == 'invalid PR component'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
157
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
158 def test_additional_author_list(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
159 email = self.from_patch_glob('0342')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
160 assert (email.errors[1].message == 'additional author must prepend '
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
161 'with tab and 4 spaces')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
162
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
163 def test_trailing_whitespaces(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
164 email = self.get_git_email('trailing-whitespaces.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
165 assert len(email.errors) == 3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
166
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
167 def test_space_after_asterisk(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
168 email = self.from_patch_glob('1999')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
169 assert len(email.errors) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
170 assert email.errors[0].message == 'one space should follow asterisk'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
171
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
172 def test_long_lines(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
173 email = self.get_git_email('long-lines.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
174 assert len(email.errors) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
175 assert email.errors[0].message == 'line limit exceeds 100 characters'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
176
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
177 def test_new_files(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
178 email = self.from_patch_glob('0030')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
179 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
180
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
181 def test_wrong_changelog_location(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
182 email = self.from_patch_glob('0043')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
183 assert len(email.errors) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
184 assert (email.errors[0].message ==
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
185 'wrong ChangeLog location "gcc", should be "gcc/testsuite"')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
186
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
187 def test_single_author_name(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
188 email = self.from_patch_glob('1975')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
189 assert len(email.changelog_entries) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
190 assert len(email.changelog_entries[0].author_lines) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
191 assert len(email.changelog_entries[1].author_lines) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
192
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
193 def test_bad_first_line(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
194 email = self.from_patch_glob('0413')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
195 assert len(email.errors) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
196
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
197 def test_co_authored_by(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
198 email = self.from_patch_glob('1850')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
199 assert email.co_authors == ['Jakub Jelinek <jakub@redhat.com>']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
200 output_entries = list(email.to_changelog_entries())
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
201 assert len(output_entries) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
202 ent0 = output_entries[0]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
203 assert ent0[1].startswith('2020-04-16 Martin Liska '
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
204 '<mliska@suse.cz>\n\t'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
205 ' Jakub Jelinek <jakub@redhat.com>')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
206
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
207 def test_multiple_co_author_formats(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
208 email = self.get_git_email('co-authored-by.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
209 assert len(email.co_authors) == 3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
210 assert email.co_authors[0] == 'Jakub Jelinek <jakub@redhat.com>'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
211 assert email.co_authors[1] == 'John Miller <jm@example.com>'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
212 assert email.co_authors[2] == 'John Miller2 <jm2@example.com>'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
213
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
214 def test_new_file_added_entry(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
215 email = self.from_patch_glob('1957')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
216 output_entries = list(email.to_changelog_entries())
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
217 assert len(output_entries) == 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
218 needle = ('\t* g++.dg/cpp2a/lambda-generic-variadic20.C'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
219 ': New file.')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
220 assert output_entries[1][1].endswith(needle)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
221 assert email.changelog_entries[1].prs == ['PR c++/94546']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
222
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
223 def test_global_pr_entry(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
224 email = self.from_patch_glob('2004')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
225 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
226 assert email.changelog_entries[0].prs == ['PR other/94629']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
227
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
228 def test_unique_prs(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
229 email = self.get_git_email('pr-check1.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
230 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
231 assert email.changelog_entries[0].prs == ['PR ipa/12345']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
232 assert email.changelog_entries[1].prs == []
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
233
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
234 def test_multiple_prs_not_added(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
235 email = self.from_patch_glob('0001-Add-patch_are')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
236 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
237 assert email.changelog_entries[0].prs == ['PR target/93492']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
238 assert email.changelog_entries[1].prs == ['PR target/12345']
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
239 assert email.changelog_entries[2].prs == []
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
240 assert email.changelog_entries[2].folder == 'gcc/testsuite'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
241
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
242 def test_strict_mode(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
243 email = self.from_patch_glob('0001-Add-patch_are',
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
244 True)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
245 msg = 'ChangeLog, DATESTAMP, BASE-VER and DEV-PHASE updates should ' \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
246 'be done separately from normal commits'
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
247 assert email.errors[0].message == msg
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
248
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
249 def test_strict_mode_normal_patch(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
250 email = self.get_git_email('0001-Just-test-it.patch', True)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
251 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
252
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
253 def test_strict_mode_datestamp_only(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
254 email = self.get_git_email('0002-Bump-date.patch', True)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
255 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
256
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
257 def test_wrong_changelog_entry(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
258 email = self.from_patch_glob('0020-IPA-Avoid')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
259 assert (email.errors[0].message
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
260 == 'first line should start with a tab, asterisk and space')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
261
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
262 def test_cherry_pick_format(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
263 email = self.from_patch_glob('0001-c-Alias.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
264 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
265
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
266 def test_signatures(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
267 email = self.from_patch_glob('0001-RISC-V-Make-unique.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
268 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
269 assert len(email.changelog_entries) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
270
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
271 def test_duplicate_top_level_author(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
272 email = self.from_patch_glob('0001-Fortran-ProcPtr-function.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
273 assert not email.errors
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
274 assert len(email.changelog_entries[0].author_lines) == 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
275
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
276 def test_dr_entry(self):
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
277 email = self.from_patch_glob('0001-c-C-20-DR-2237.patch')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
278 assert email.changelog_entries[0].prs == ['DR 2237']