tests/filterpyflakes.py
author Matt Harbison <matt_harbison@yahoo.com>
Sun, 14 Oct 2012 14:44:08 -0400
changeset 17823 0fc1ce271ee6
parent 14209 08d84bdce1a5
child 19335 77440de177f7
permissions -rwxr-xr-x
largefiles: fix a traceback in lfconvert if a largefile is missing (issue3519) The largefile may be missing for various reasons, including that a remote repository was cloned without the --all-largefiles option. Therefore, it seems reasonable to attempt to download the missing files and failing that, abort and indicate the affected file and revision so the user can manually fix the problem.

#!/usr/bin/env python

# Filter output by pyflakes to control which warnings we check

import sys, re, os

def makekey(message):
    # "path/file:line: message"
    match = re.search(r"(line \d+)", message)
    line = ''
    if match:
        line = match.group(0)
        message = re.sub(r"(line \d+)", '', message)
    return re.sub(r"([^:]*):([^:]+):([^']*)('[^']*')(.*)$",
                  r'\3:\5:\4:\1:\2:' + line,
                  message)

lines = []
for line in sys.stdin:
    # We whitelist tests
    pats = [
            r"imported but unused",
            r"local variable '.*' is assigned to but never used",
            r"unable to detect undefined names",
           ]
    if not re.search('|'.join(pats), line):
        continue
    fn = line.split(':', 1)[0]
    f = open(os.path.join(os.path.dirname(os.path.dirname(__file__)), fn))
    data = f.read()
    f.close()
    if 'no-check-code' in data:
        continue
    lines.append(line)

for line in sorted(lines, key = makekey):
    sys.stdout.write(line)
print