gcc-changelog: fix parse_git_name_status for renames.

Renamed files are listed in the following format:

M	gcc/ada/Makefile.rtl
M	gcc/ada/impunit.adb
R097	gcc/ada/libgnat/s-atopar.adb	gcc/ada/libgnat/s-aoinar.adb
R095	gcc/ada/libgnat/s-atopar.ads	gcc/ada/libgnat/s-aoinar.ads
A	gcc/ada/libgnat/s-aomoar.adb
A	gcc/ada/libgnat/s-aomoar.ads

So 'R' is followed by a percentage number.

contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Fix renamed files in
	parse_git_name_status.
	* gcc-changelog/test_email.py: Add test for it.
This commit is contained in:
Martin Liska 2020-06-10 16:07:10 +02:00
parent 4fed5d5dd8
commit 50ff02b534
No known key found for this signature in database
GPG Key ID: 4DC182DC0FA73785
2 changed files with 15 additions and 1 deletions

View File

@ -322,7 +322,7 @@ class GitCommit:
t = parts[0]
if t == 'A' or t == 'D' or t == 'M':
modified_files.append((parts[1], t))
elif t == 'R':
elif t.startswith('R'):
modified_files.append((parts[1], 'D'))
modified_files.append((parts[2], 'A'))
return modified_files

View File

@ -20,6 +20,8 @@ import os
import tempfile
import unittest
from git_commit import GitCommit
from git_email import GitEmail
import unidiff
@ -29,6 +31,12 @@ script_path = os.path.dirname(os.path.realpath(__file__))
unidiff_supports_renaming = hasattr(unidiff.PatchedFile(), 'is_rename')
NAME_STATUS1 = """
M gcc/ada/impunit.adb'
R097 gcc/ada/libgnat/s-atopar.adb gcc/ada/libgnat/s-aoinar.adb
"""
class TestGccChangelog(unittest.TestCase):
def setUp(self):
self.patches = {}
@ -337,3 +345,9 @@ class TestGccChangelog(unittest.TestCase):
email = self.from_patch_glob('0001-configure.patch')
assert not email.errors
assert len(email.changelog_entries) == 2
def test_parse_git_name_status(self):
modified_files = GitCommit.parse_git_name_status(NAME_STATUS1)
assert len(modified_files) == 3
assert modified_files[1] == ('gcc/ada/libgnat/s-atopar.adb', 'D')
assert modified_files[2] == ('gcc/ada/libgnat/s-aoinar.adb', 'A')