Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/scripts/angle_presubmit_utils_unittest.py
1693 views
1
#!/usr/bin/env python
2
# Copyright 2020 The Chromium Authors. All rights reserved.
3
# Use of this source code is governed by a BSD-style license that can be
4
# found in the LICENSE file.
5
"""
6
angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
7
"""
8
9
import imp
10
import os
11
import unittest
12
from angle_presubmit_utils import *
13
14
15
def SetCWDToAngleFolder():
16
angle_folder = "angle"
17
cwd = os.path.dirname(os.path.abspath(__file__))
18
cwd = cwd.split(angle_folder)[0] + angle_folder
19
os.chdir(cwd)
20
21
22
SetCWDToAngleFolder()
23
24
PRESUBMIT = imp.load_source('PRESUBMIT', 'PRESUBMIT.py')
25
26
27
class CommitMessageFormattingCheckTest(unittest.TestCase):
28
29
def __init__(self, *args, **kwargs):
30
super(CommitMessageFormattingCheckTest, self).__init__(*args, **kwargs)
31
self.output_api = OutputAPI_mock()
32
33
def run_check_commit_message_formatting(self, commit_msg):
34
input_api = InputAPI_mock(commit_msg)
35
return PRESUBMIT._CheckCommitMessageFormatting(input_api, self.output_api)
36
37
def test_correct_commit_message(self):
38
commit_msg = """a
39
40
b
41
42
Bug: angleproject:4662
43
Change-Id: I966c79d96175da9eee92ef6da20db50d488137b2
44
"""
45
errors = self.run_check_commit_message_formatting(commit_msg)
46
self.assertEqual(len(errors), 0)
47
48
def test_missing_description_body_and_description_summary(self):
49
commit_msg = """Change-Id: I966c79d96175da9eee92ef6da20db50d488137b2"""
50
errors = self.run_check_commit_message_formatting(commit_msg)
51
self.assertEqual(len(errors), 1)
52
self.assertEqual(
53
errors[0],
54
self.output_api.PresubmitError(
55
"Commit 1:Please ensure that your" +
56
" description summary and description body are not blank."))
57
58
def test_missing_description_body(self):
59
commit_msg = """
60
a
61
62
b: d
63
c: e
64
"""
65
errors = self.run_check_commit_message_formatting(commit_msg)
66
self.assertEqual(len(errors), 0)
67
68
def test_missing_tag_paragraph(self):
69
commit_msg = """a
70
71
bd
72
efgh"""
73
errors = self.run_check_commit_message_formatting(commit_msg)
74
self.assertEqual(len(errors), 1)
75
self.assertEqual(
76
errors[0],
77
self.output_api.PresubmitError(
78
"Commit 1:Please ensure that there are tags (e.g., Bug:, Test:) in your description."
79
))
80
81
def test_missing_tag_paragraph_and_description_body(self):
82
commit_msg = "a"
83
errors = self.run_check_commit_message_formatting(commit_msg)
84
self.assertEqual(len(errors), 1)
85
self.assertEqual(
86
errors[0],
87
self.output_api.PresubmitError(
88
"Commit 1:Please ensure that there are tags (e.g., Bug:, Test:) in your description."
89
))
90
91
def test_missing_blank_line_between_description_summary_and_description_body(self):
92
commit_msg = """a
93
b
94
95
Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12"""
96
errors = self.run_check_commit_message_formatting(commit_msg)
97
self.assertEqual(len(errors), 1)
98
self.assertEqual(errors[0], self.output_api.PresubmitError(
99
"Commit 1:Please ensure the summary is only 1 line and there is 1 blank line" + \
100
" between the summary and description body."))
101
102
def test_missing_blank_line_between_description_body_and_tags_paragraph(self):
103
commit_msg = """a
104
105
b
106
Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12"""
107
errors = self.run_check_commit_message_formatting(commit_msg)
108
self.assertEqual(len(errors), 0)
109
110
def test_multiple_blank_lines_before_and_after_commit_message(self):
111
commit_msg = """
112
113
114
a
115
116
b
117
118
Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12
119
"""
120
errors = self.run_check_commit_message_formatting(commit_msg)
121
self.assertEqual(len(errors), 0)
122
123
def test_newlines_within_description_body(self):
124
commit_msg = """a
125
126
b
127
128
d
129
130
e
131
132
for
133
134
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
135
errors = self.run_check_commit_message_formatting(commit_msg)
136
self.assertEqual(len(errors), 0)
137
138
# Summary description in warning threshold(at 65 characters)
139
def test_summmary_description_in_warning_thresholds(self):
140
commit_msg = """aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
141
142
b
143
144
Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12
145
"""
146
errors = self.run_check_commit_message_formatting(commit_msg)
147
self.assertEqual(len(errors), 1)
148
self.assertEqual(
149
errors[0],
150
self.output_api.PresubmitPromptWarning(
151
"Commit 1:Your description summary should be on one line of 64 or less characters."
152
))
153
154
# Summary description in error threshold(at 71 characters)
155
def test_summary_description_in_error_threshold(self):
156
commit_msg = """aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
157
158
b
159
160
Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12"""
161
errors = self.run_check_commit_message_formatting(commit_msg)
162
self.assertEqual(len(errors), 1)
163
self.assertEqual(
164
errors[0],
165
self.output_api.PresubmitError(
166
"Commit 1:Please ensure that your description summary is on one line of 64 or less characters."
167
))
168
169
def test_description_body_exceeds_line_count_limit(self):
170
commit_msg = """a
171
172
bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
173
174
175
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
176
errors = self.run_check_commit_message_formatting(commit_msg)
177
self.assertEqual(len(errors), 2)
178
self.assertEqual(
179
errors[0],
180
self.output_api.PresubmitError(
181
"Commit 1:Please ensure that there exists only 1 blank line between tags and description body."
182
))
183
self.assertEqual(
184
errors[1],
185
self.output_api.PresubmitError("""Commit 1:Line 3 is too long.
186
"bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
187
Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
188
))
189
190
def test_description_body_exceeds_line_count_limit_but_with_4_spaces_prefix(self):
191
commit_msg = """a
192
193
cc
194
195
dddd
196
197
bbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
198
199
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
200
errors = self.run_check_commit_message_formatting(commit_msg)
201
self.assertEqual(len(errors), 0)
202
203
def test_description_body_exceeds_line_count_limit_but_without_space(self):
204
commit_msg = """a
205
206
cc
207
208
dddd
209
210
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
211
212
a: d"""
213
errors = self.run_check_commit_message_formatting(commit_msg)
214
self.assertEqual(len(errors), 0)
215
216
def test_tabs_in_commit_message(self):
217
commit_msg = """ a
218
219
bbbbbbbbbbbbbbbbbbbb
220
221
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
222
errors = self.run_check_commit_message_formatting(commit_msg)
223
self.assertEqual(len(errors), 1)
224
self.assertEqual(
225
errors[0],
226
self.output_api.PresubmitError("Commit 1:Tabs are not allowed in commit message."))
227
228
def test_allowlist_revert(self):
229
commit_msg = """Revert "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssa
230
231
bbbbbbbbbbbbbbbbbbbb
232
233
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
234
errors = self.run_check_commit_message_formatting(commit_msg)
235
self.assertEqual(len(errors), 0)
236
237
def test_allowlist_roll(self):
238
commit_msg = """Roll sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
239
240
bbbbbbbbbbbbbbbbbbbb
241
242
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
243
errors = self.run_check_commit_message_formatting(commit_msg)
244
self.assertEqual(len(errors), 0)
245
246
def test_allowlist_reland(self):
247
commit_msg = """Reland sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
248
249
bbbbbbbbbbbbbbbbbbbb
250
251
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
252
errors = self.run_check_commit_message_formatting(commit_msg)
253
self.assertEqual(len(errors), 0)
254
255
def test_multiple_commits_with_errors_in_multiple_commits(self):
256
commit_msg = """a
257
258
bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
259
260
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b
261
262
a
263
264
cccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccc
265
266
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
267
errors = self.run_check_commit_message_formatting(commit_msg)
268
self.assertEqual(len(errors), 2)
269
self.assertEqual(
270
errors[0],
271
self.output_api.PresubmitError("""Commit 2:Line 3 is too long.
272
"bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
273
Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
274
))
275
self.assertEqual(
276
errors[1],
277
self.output_api.PresubmitError("""Commit 1:Line 4 is too long.
278
"cccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccc"
279
Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
280
))
281
282
def test_multiple_commits_with_error_in_one_commit(self):
283
commit_msg = """a
284
285
bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
286
287
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b
288
289
Roll sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
290
291
bbbbbbbbbbbbbbbbbbbb
292
293
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
294
errors = self.run_check_commit_message_formatting(commit_msg)
295
self.assertEqual(len(errors), 1)
296
self.assertEqual(
297
errors[0],
298
self.output_api.PresubmitError("""Commit 2:Line 3 is too long.
299
"bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
300
Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
301
))
302
303
def test_multiple_commits_with_no_error(self):
304
commit_msg = """Reland sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
305
306
bbbbbbbbbbbbbbbbbbbb
307
308
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b
309
310
Roll sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
311
312
bbbbbbbbbbbbbbbbbbbb
313
314
Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
315
errors = self.run_check_commit_message_formatting(commit_msg)
316
self.assertEqual(len(errors), 0)
317
318
319
if __name__ == '__main__':
320
unittest.main()
321
322