##// END OF EJS Templates
tests: simplify and document the sorting of pyflake messages...
Simon Heimberg -
r19335:77440de1 default
parent child Browse files
Show More
@@ -4,35 +4,48 b''
4
4
5 import sys, re, os
5 import sys, re, os
6
6
7 def makekey(message):
7 def makekey(typeandline):
8 # "path/file:line: message"
8 """
9 match = re.search(r"(line \d+)", message)
9 for sorting lines by: msgtype, path/to/file, lineno, message
10 line = ''
10
11 if match:
11 typeandline is a sequence of a message type and the entire message line
12 line = match.group(0)
12 the message line format is path/to/file:line: message
13 message = re.sub(r"(line \d+)", '', message)
13
14 return re.sub(r"([^:]*):([^:]+):([^']*)('[^']*')(.*)$",
14 >>> makekey((3, 'example.py:36: any message'))
15 r'\3:\5:\4:\1:\2:' + line,
15 (3, 'example.py', 36, ' any message')
16 message)
16 >>> makekey((7, 'path/to/file.py:68: dummy message'))
17 (7, 'path/to/file.py', 68, ' dummy message')
18 >>> makekey((2, 'fn:88: m')) > makekey((2, 'fn:9: m'))
19 True
20 """
21
22 msgtype, line = typeandline
23 fname, line, message = line.split(":", 2)
24 # line as int for ordering 9 before 88
25 return msgtype, fname, int(line), message
26
17
27
18 lines = []
28 lines = []
19 for line in sys.stdin:
29 for line in sys.stdin:
20 # We whitelist tests
30 # We whitelist tests (see more messages in pyflakes.messages)
21 pats = [
31 pats = [
22 r"imported but unused",
32 r"imported but unused",
23 r"local variable '.*' is assigned to but never used",
33 r"local variable '.*' is assigned to but never used",
24 r"unable to detect undefined names",
34 r"unable to detect undefined names",
25 ]
35 ]
26 if not re.search('|'.join(pats), line):
36 for msgtype, pat in enumerate(pats):
27 continue
37 if re.search(pat, line):
38 break # pattern matches
39 else:
40 continue # no pattern matched, next line
28 fn = line.split(':', 1)[0]
41 fn = line.split(':', 1)[0]
29 f = open(os.path.join(os.path.dirname(os.path.dirname(__file__)), fn))
42 f = open(os.path.join(os.path.dirname(os.path.dirname(__file__)), fn))
30 data = f.read()
43 data = f.read()
31 f.close()
44 f.close()
32 if 'no-check-code' in data:
45 if 'no-check-code' in data:
33 continue
46 continue
34 lines.append(line)
47 lines.append((msgtype, line))
35
48
36 for line in sorted(lines, key = makekey):
49 for msgtype, line in sorted(lines, key = makekey):
37 sys.stdout.write(line)
50 sys.stdout.write(line)
38 print
51 print
General Comments 0
You need to be logged in to leave comments. Login now