diff contrib/check-config.py @ 33195:5d8942dbe49e

check-config: syntax to allow inconsistent config values The ignore regular expression has been updated to detect "inconsistent config." If present, we track which configs have that set and we suppress the conflicting defaults error for those options. I also added named groups to the regexp to aid readability. A comment was added to profiling.py to make a desired inconsistent value error go away.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 01 Jul 2017 20:34:27 -0700
parents e9fc5550be46
children e470f12d7d05
line wrap: on
line diff
--- a/contrib/check-config.py	Fri Jun 30 03:28:02 2017 +0200
+++ b/contrib/check-config.py	Sat Jul 01 20:34:27 2017 -0700
@@ -13,6 +13,7 @@
 
 foundopts = {}
 documented = {}
+allowinconsistent = set()
 
 configre = re.compile(r'''
     # Function call
@@ -36,6 +37,11 @@
 
 configpartialre = (r"""ui\.config""")
 
+ignorere = re.compile(r'''
+    \#\s(?P<reason>internal|experimental|deprecated|developer|inconsistent)\s
+    config:\s(?P<config>\S+\.\S+)$
+    ''', re.VERBOSE | re.MULTILINE)
+
 def main(args):
     for f in args:
         sect = ''
@@ -82,10 +88,12 @@
                 documented[m.group(1)] = 1
 
             # look for ignore markers
-            m = re.search(r'# (?:internal|experimental|deprecated|developer)'
-                          ' config: (\S+\.\S+)$', l)
+            m = ignorere.search(l)
             if m:
-                documented[m.group(1)] = 1
+                if m.group('reason') == 'inconsistent':
+                    allowinconsistent.add(m.group('config'))
+                else:
+                    documented[m.group('config')] = 1
 
             # look for code-like bits
             line = carryover + l
@@ -100,7 +108,8 @@
                     default = ''
                 if re.match('[a-z.]+$', default):
                     default = '<variable>'
-                if name in foundopts and (ctype, default) != foundopts[name]:
+                if (name in foundopts and (ctype, default) != foundopts[name]
+                    and name not in allowinconsistent):
                     print(l)
                     print("conflict on %s: %r != %r" % (name, (ctype, default),
                                                         foundopts[name]))