diff mbox series

changelog: add hint for a file mismatch

Message ID f17ab3b4-d2b4-52a4-d5e9-b59adbdcdf61@suse.cz
State New
Headers show
Series changelog: add hint for a file mismatch | expand

Commit Message

Martin Liška Nov. 30, 2020, 4:21 p.m. UTC
Pushed to master. It's supposed to provide a hint, e.g.

ERR: unchanged file mentioned in a ChangeLog (did you mean "gcc/testsuite/gfortran.dg/goacc-gomp/free-1.f90"?):"gcc/testsuite/gfortran.dg/goacc-gomp/free-1.f"

Martin


contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Suggest close file for
	'unchanged file mentioned in a ChangeLog' error.
	* gcc-changelog/test_email.py: Test it.
---
  contrib/gcc-changelog/git_commit.py | 4 ++++
  contrib/gcc-changelog/test_email.py | 4 +++-
  2 files changed, 7 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index 57fba756d32..0c438165516 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -16,6 +16,7 @@ 
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.  */
  
+import difflib
  import os
  import re
  
@@ -576,6 +577,9 @@  class GitCommit:
          changed_files = set(cand)
          for file in sorted(mentioned_files - changed_files):
              msg = 'unchanged file mentioned in a ChangeLog'
+            candidates = difflib.get_close_matches(file, changed_files, 1)
+            if candidates:
+                msg += f' (did you mean "{candidates[0]}"?)'
              self.errors.append(Error(msg, file))
          for file in sorted(changed_files - mentioned_files):
              if not self.in_ignored_location(file):
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
index 48ecc1ee6a6..8f5129edb12 100755
--- a/contrib/gcc-changelog/test_email.py
+++ b/contrib/gcc-changelog/test_email.py
@@ -113,7 +113,9 @@  class TestGccChangelog(unittest.TestCase):
          email = self.from_patch_glob('0096')
          assert email.errors
          err = email.errors[0]
-        assert err.message == 'unchanged file mentioned in a ChangeLog'
+        assert err.message == 'unchanged file mentioned in a ChangeLog (did ' \
+            'you mean "gcc/testsuite/gcc.target/aarch64/' \
+            'advsimd-intrinsics/vdot-3-1.c"?)'
          assert err.line == 'gcc/testsuite/gcc.target/aarch64/' \
                             'advsimd-intrinsics/vdot-compile-3-1.c'