gcc-changelog: fix parse_git_name_status for renames.

Message ID 9e32c3ba-6cf4-f6b5-84bc-ffcfb3c8d087@suse.cz
State New
Headers show
Series
  • gcc-changelog: fix parse_git_name_status for renames.
Related show

Commit Message

Martin Liška June 10, 2020, 2:09 p.m.
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.

Pushed to master.

contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Fix renamed files in
	parse_git_name_status.
	* gcc-changelog/test_email.py: Add test for it.
---
  contrib/gcc-changelog/git_commit.py |  2 +-
  contrib/gcc-changelog/test_email.py | 14 ++++++++++++++
  2 files changed, 15 insertions(+), 1 deletion(-)

-- 
2.26.2

Patch

diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index eac64887053..e868e028225 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -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
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
index c50687bc331..a185b85e838 100755
--- a/contrib/gcc-changelog/test_email.py
+++ b/contrib/gcc-changelog/test_email.py
@@ -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')