mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-26 09:40:40 +08:00
mklog: Handle correctly long lines.
contrib/ChangeLog: * mklog.py: Handle correctly long lines. * test_mklog.py: Test it.
This commit is contained in:
parent
9fe9c45ae3
commit
b838641bb0
@ -38,6 +38,9 @@ import requests
|
||||
|
||||
from unidiff import PatchSet
|
||||
|
||||
LINE_LIMIT = 100
|
||||
TAB_WIDTH = 8
|
||||
|
||||
pr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<pr>PR [a-z+-]+\/[0-9]+)')
|
||||
prnum_regex = re.compile(r'PR (?P<comp>[a-z+-]+)/(?P<num>[0-9]+)')
|
||||
dr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<dr>DR [0-9]+)')
|
||||
@ -134,6 +137,16 @@ def get_pr_titles(prs):
|
||||
return '\n'.join(output)
|
||||
|
||||
|
||||
def append_changelog_line(out, relative_path, text):
|
||||
line = f'\t* {relative_path}:'
|
||||
if len(line.replace('\t', ' ' * TAB_WIDTH) + ' ' + text) <= LINE_LIMIT:
|
||||
out += f'{line} {text}\n'
|
||||
else:
|
||||
out += f'{line}\n'
|
||||
out += f'\t{text}\n'
|
||||
return out
|
||||
|
||||
|
||||
def generate_changelog(data, no_functions=False, fill_pr_titles=False,
|
||||
additional_prs=None):
|
||||
changelogs = {}
|
||||
@ -213,12 +226,12 @@ def generate_changelog(data, no_functions=False, fill_pr_titles=False,
|
||||
relative_path = file.path[len(changelog):].lstrip('/')
|
||||
functions = []
|
||||
if file.is_added_file:
|
||||
msg = 'New test' if in_tests else 'New file'
|
||||
out += '\t* %s: %s.\n' % (relative_path, msg)
|
||||
msg = 'New test.' if in_tests else 'New file.'
|
||||
out = append_changelog_line(out, relative_path, msg)
|
||||
elif file.is_removed_file:
|
||||
out += '\t* %s: Removed.\n' % (relative_path)
|
||||
out = append_changelog_line(out, relative_path, 'Removed.')
|
||||
elif hasattr(file, 'is_rename') and file.is_rename:
|
||||
out += '\t* %s: Moved to...\n' % (relative_path)
|
||||
out = append_changelog_line(out, relative_path, 'Moved to...')
|
||||
new_path = file.target_file[2:]
|
||||
# A file can be theoretically moved to a location that
|
||||
# belongs to a different ChangeLog. Let user fix it.
|
||||
@ -227,6 +240,7 @@ def generate_changelog(data, no_functions=False, fill_pr_titles=False,
|
||||
out += '\t* %s: ...here.\n' % (new_path)
|
||||
elif os.path.basename(file.path) in generated_files:
|
||||
out += '\t* %s: Regenerate.\n' % (relative_path)
|
||||
append_changelog_line(out, relative_path, 'Regenerate.')
|
||||
else:
|
||||
if not no_functions:
|
||||
for hunk in file:
|
||||
|
@ -443,6 +443,27 @@ gcc/ChangeLog:
|
||||
|
||||
'''
|
||||
|
||||
PATCH10 = '''\
|
||||
diff --git a/libgomp/doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst b/libgomp/doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst
|
||||
new file mode 100644
|
||||
index 00000000000..ad3c6d856fc
|
||||
--- /dev/null
|
||||
+++ b/libgomp/doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst
|
||||
@@ -0,0 +1,3 @@
|
||||
+
|
||||
+
|
||||
+
|
||||
|
||||
'''
|
||||
|
||||
EXPECTED10 = '''\
|
||||
libgomp/ChangeLog:
|
||||
|
||||
* doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst:
|
||||
New file.
|
||||
|
||||
'''
|
||||
|
||||
class TestMklog(unittest.TestCase):
|
||||
def test_macro_definition(self):
|
||||
changelog = generate_changelog(PATCH1)
|
||||
@ -485,3 +506,7 @@ class TestMklog(unittest.TestCase):
|
||||
def test_define_macro_parsing(self):
|
||||
changelog = generate_changelog(PATCH9)
|
||||
assert changelog == EXPECTED9
|
||||
|
||||
def test_long_filenames(self):
|
||||
changelog = generate_changelog(PATCH10)
|
||||
assert changelog == EXPECTED10
|
||||
|
Loading…
x
Reference in New Issue
Block a user