diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ChangeLog | 5 | ||||
-rwxr-xr-x | contrib/mklog.py | 22 | ||||
-rwxr-xr-x | contrib/test_mklog.py | 25 |
3 files changed, 48 insertions, 4 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 9cfa3f0..79a767c 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2021-06-28 Martin Liska <mliska@suse.cz> + + * mklog.py: Handle correctly long lines. + * test_mklog.py: Test it. + 2021-06-23 Martin Liska <mliska@suse.cz> * gcc-git-customization.sh: Use the new wrapper. diff --git a/contrib/mklog.py b/contrib/mklog.py index 674c1dc..ba70af0 100755 --- a/contrib/mklog.py +++ b/contrib/mklog.py @@ -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: diff --git a/contrib/test_mklog.py b/contrib/test_mklog.py index f5e9ecd..bf2f280 100755 --- a/contrib/test_mklog.py +++ b/contrib/test_mklog.py @@ -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 |