[PATCH 3 of 6] check-code.py: Add a ``checkfile`` function

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Tue Mar 16 13:54:29 CDT 2010


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1268765577 -3600
# Branch stable
# Node ID a4d359e922e7e82bd450ca5616cd058564dab157
# Parent  128c0f0fcdced5b3012728218db424d556faf956
check-code.py: Add a ``checkfile`` function

The part of the code actually checking each file is moved in the  ``checkfile``
function to allow external reuses.

diff --git a/contrib/check-code.py b/contrib/check-code.py
--- a/contrib/check-code.py
+++ b/contrib/check-code.py
@@ -132,6 +132,36 @@
     ('test script', r'(.*/)?test-[^.~]*$', testfilters, testpats),
     ('c', r'.*\.c$', cfilters, cpats),
 ]
+def checkfile(f):
+    """checks style and portability of a given file"""
+    for name, match, filters, pats in checks:
+        fc = 0
+        if not re.match(match, f):
+            continue
+        pre = post = open(f).read()
+        if "no-" + "check-code" in pre:
+            break
+        for p, r in filters:
+            post = re.sub(p, r, post)
+        # print post # uncomment to show filtered version
+        z = enumerate(zip(pre.splitlines(), post.splitlines(True)))
+        for n, l in z:
+            if "check-code" + "-ignore" in l[0]:
+                continue
+            lc = 0
+            for p, msg in pats:
+                if re.search(p, l[1]):
+                    if not lc:
+                        print "%s:%d:" % (f, n + 1)
+                        print " > %s" % l[0]
+                    print " %s" % msg
+                    lc += 1
+                    fc += 1
+            if fc == 15:
+                print " (too many errors, giving up)"
+                break
+        break
+
 
 if __name__ == "__main__":
     if len(sys.argv) == 1:
@@ -140,30 +170,4 @@
         check = sys.argv[1:]
 
     for f in check:
-        for name, match, filters, pats in checks:
-            fc = 0
-            if not re.match(match, f):
-                continue
-            pre = post = open(f).read()
-            if "no-" + "check-code" in pre:
-                break
-            for p, r in filters:
-                post = re.sub(p, r, post)
-            # print post # uncomment to show filtered version
-            z = enumerate(zip(pre.splitlines(), post.splitlines(True)))
-            for n, l in z:
-                if "check-code" + "-ignore" in l[0]:
-                    continue
-                lc = 0
-                for p, msg in pats:
-                    if re.search(p, l[1]):
-                        if not lc:
-                            print "%s:%d:" % (f, n + 1)
-                            print " > %s" % l[0]
-                        print " %s" % msg
-                        lc += 1
-                        fc += 1
-                if fc == 15:
-                    print " (too many errors, giving up)"
-                    break
-            break
+        checkfile(f)


More information about the Mercurial-devel mailing list