[PATCH] D60776: [clang-tidy] Add test support for the fix description.

Haojian Wu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 16 07:54:23 PDT 2019


hokein updated this revision to Diff 195385.
hokein added a comment.

cleanup


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60776/new/

https://reviews.llvm.org/D60776

Files:
  clang-tools-extra/test/clang-tidy/check_clang_tidy.py
  clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp


Index: clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp
+++ clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp
@@ -80,6 +80,7 @@
 using n::A; // A
 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: using decl 'A' is unused
 // CHECK-FIXES: {{^}}// A
+// CHECK-FIX-DESCRIPTIONS: :[[@LINE-3]]:10: note: remove the using
 using n::B;
 using n::C;
 using n::D;
Index: clang-tools-extra/test/clang-tidy/check_clang_tidy.py
===================================================================
--- clang-tools-extra/test/clang-tidy/check_clang_tidy.py
+++ clang-tools-extra/test/clang-tidy/check_clang_tidy.py
@@ -90,10 +90,12 @@
   check_fixes_prefixes = []
   check_messages_prefixes = []
   check_notes_prefixes = []
+  check_fix_descriptions_prefixes = []
 
   has_check_fixes = False
   has_check_messages = False
   has_check_notes = False
+  has_check_fix_descriptions = False
 
   for check in args.check_suffix:
     if check and not re.match('^[A-Z0-9\-]+$', check):
@@ -104,26 +106,33 @@
     check_fixes_prefix = 'CHECK-FIXES' + file_check_suffix
     check_messages_prefix = 'CHECK-MESSAGES' + file_check_suffix
     check_notes_prefix = 'CHECK-NOTES' + file_check_suffix
+    check_fix_descriptions_prefix = 'CHECK-FIX-DESCRIPTIONS' + file_check_suffix
 
     has_check_fix = check_fixes_prefix in input_text
     has_check_message = check_messages_prefix in input_text
     has_check_note = check_notes_prefix in input_text
+    has_check_fix_description = check_fix_descriptions_prefix in input_text
 
     if has_check_note and has_check_message:
       sys.exit('Please use either %s or %s but not both' %
         (check_notes_prefix, check_messages_prefix))
 
-    if not has_check_fix and not has_check_message and not has_check_note:
-      sys.exit('%s, %s or %s not found in the input' %
-        (check_fixes_prefix, check_messages_prefix, check_notes_prefix))
+    if not has_check_fix and not has_check_message and not has_check_note and \
+      not has_check_fix_description:
+      sys.exit('%s, %s, %s or %s not found in the input' %
+        (check_fixes_prefix, check_messages_prefix, check_notes_prefix,
+          check_fix_descriptions_prefix))
 
     has_check_fixes = has_check_fixes or has_check_fix
     has_check_messages = has_check_messages or has_check_message
     has_check_notes = has_check_notes or has_check_note
+    has_check_fix_descriptions = has_check_fix_descriptions or \
+      has_check_fix_description
 
     check_fixes_prefixes.append(check_fixes_prefix)
     check_messages_prefixes.append(check_messages_prefix)
     check_notes_prefixes.append(check_notes_prefix)
+    check_fix_descriptions_prefixes.append(check_fix_descriptions_prefix)
 
   assert has_check_fixes or has_check_messages or has_check_notes
   # Remove the contents of the CHECK lines to avoid CHECKs matching on
@@ -175,6 +184,18 @@
       print('FileCheck failed:\n' + e.output.decode())
       raise
 
+  if has_check_fix_descriptions:
+    try:
+      fix_descriptions_file = temp_file_name + '.fix-descriptions'
+      write_file(fix_descriptions_file, clang_tidy_output)
+      subprocess.check_output(
+          ['FileCheck', '-input-file=' + fix_descriptions_file, input_file_name,
+           '-check-prefixes=' + ','.join(check_fix_descriptions_prefixes)],
+          stderr=subprocess.STDOUT)
+    except subprocess.CalledProcessError as e:
+      print('FileCheck failed:\n' + e.output.decode())
+      raise
+
   if has_check_messages:
     messages_file = temp_file_name + '.msg'
     write_file(messages_file, clang_tidy_output)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60776.195385.patch
Type: text/x-patch
Size: 3721 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190416/25d2c9c8/attachment-0001.bin>


More information about the cfe-commits mailing list