changeset 29279:438caf194160

check-code: make repquote distinguish more characters for exact detection This patch makes repquote() distinguish more characters below, as a preparation for exact detection in subsequent patch. - "%" as "%" - "\\" as "b"(ackslash) - "*" as "A"(sterisk) - "+" as "P"(lus) - "-" as "M"(inus) Characters other than "%" don't use itself as replacement, because they are treated as special ones in regexp.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Tue, 31 May 2016 21:02:30 +0900
parents 5eda83fb09fc
children 6c97b9739f9d
files contrib/check-code.py tests/test-contrib-check-code.t
diffstat 2 files changed, 20 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/check-code.py	Tue May 31 21:02:30 2016 +0900
+++ b/contrib/check-code.py	Tue May 31 21:02:30 2016 +0900
@@ -53,7 +53,8 @@
 def repquote(m):
     # check "rules depending on implementation of repquote()" in each
     # patterns (especially pypats), before changing this function
-    fixedmap = {' ': ' ', '\n': '\n', '.': 'p', ':': 'q'}
+    fixedmap = {' ': ' ', '\n': '\n', '.': 'p', ':': 'q',
+                '%': '%', '\\': 'b', '*': 'A', '+': 'P', '-': 'M'}
     def encodechr(i):
         if i > 255:
             return 'u'
@@ -326,7 +327,8 @@
     (r'\.next\(\)', "don't use .next(), use next(...)"),
 
     # rules depending on implementation of repquote()
-    (r' x+[xpqo][\'"]\n\s+[\'"]x', 'string join across lines with no space'),
+    (r' x+[xpqo%APM][\'"]\n\s+[\'"]x',
+     'string join across lines with no space'),
     (r'ui\.(status|progress|write|note|warn)\([\'\"]x',
      "missing _() in ui message (use () to hide false-positives)"),
   ],
--- a/tests/test-contrib-check-code.t	Tue May 31 21:02:30 2016 +0900
+++ b/tests/test-contrib-check-code.t	Tue May 31 21:02:30 2016 +0900
@@ -256,6 +256,10 @@
   >        'bar foo.'
   >        'bar foo:'
   >        'bar foo@'
+  >        'bar foo%'
+  >        'bar foo*'
+  >        'bar foo+'
+  >        'bar foo-'
   >        'bar')
   > EOF
   $ "$check_code" stringjoin.py
@@ -271,4 +275,16 @@
   stringjoin.py:4:
    >        'bar foo@'
    string join across lines with no space
+  stringjoin.py:5:
+   >        'bar foo%'
+   string join across lines with no space
+  stringjoin.py:6:
+   >        'bar foo*'
+   string join across lines with no space
+  stringjoin.py:7:
+   >        'bar foo+'
+   string join across lines with no space
+  stringjoin.py:8:
+   >        'bar foo-'
+   string join across lines with no space
   [1]