annotate tests/filterpyflakes.py @ 32771:627eaab1ad07

tests: factor external procedures out for portability Fortunately, "&&" is treated as "execute next, if previous doesn't fail" both on POSIX and Windows. But keeping portability of "dirstaterace.command" manually is troublesome. This patch factors external procedures out as a shell script for portability. "sh SCRIPT" always allows scripting in POSIX style. This change is also for convenience. Fixed script name can reduce command line arguments. "r" prefix is needed for "sh '$TESTTMP/dirstaterace.sh'", because $TESTTMP contains backslash on Windows.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Fri, 09 Jun 2017 13:07:49 +0900
parents 50eaccb8353f
children 6029939f7e98
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14140
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
1 #!/usr/bin/env python
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
2
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
3 # Filter output by pyflakes to control which warnings we check
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
4
28724
cf339d6ac7c7 py3: use print_function in filterpyflakes.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 27285
diff changeset
5 from __future__ import absolute_import, print_function
27285
aef5b606d3ee tests/filterpyflakes: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26023
diff changeset
6
aef5b606d3ee tests/filterpyflakes: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26023
diff changeset
7 import re
aef5b606d3ee tests/filterpyflakes: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26023
diff changeset
8 import sys
14140
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
9
14173
419539ea79cb test-pyflake: improve sorting algorithm
timeless <timeless@mozdev.org>
parents: 14140
diff changeset
10 lines = []
14140
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
11 for line in sys.stdin:
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
12 # We blacklist tests that are too noisy for us
14175
b452abffcb15 tests: add pyflakes checking for assigned to but never used
timeless <timeless@mozdev.org>
parents: 14173
diff changeset
13 pats = [
32317
80e3002cd29e tests: remove special handling for undefined memoryview
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30430
diff changeset
14 r"undefined name 'WindowsError'",
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
15 r"redefinition of unused '[^']+' from line",
32543
50eaccb8353f filterpyflakes: allow reexporting pure symbols from cffi modules
Yuya Nishihara <yuya@tcha.org>
parents: 32317
diff changeset
16 # for cffi, allow re-exports from pure.*
50eaccb8353f filterpyflakes: allow reexporting pure symbols from cffi modules
Yuya Nishihara <yuya@tcha.org>
parents: 32317
diff changeset
17 r"cffi/[^:]*:.*\bimport \*' used",
50eaccb8353f filterpyflakes: allow reexporting pure symbols from cffi modules
Yuya Nishihara <yuya@tcha.org>
parents: 32317
diff changeset
18 r"cffi/[^:]*:.*\*' imported but unused",
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
19 ]
21293
507ce509fd22 filterpyflakes: make memoryview filtering unconditional
Matt Mackall <mpm@selenic.com>
parents: 21271
diff changeset
20
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
21 keep = True
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
22 for pat in pats:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
23 if re.search(pat, line):
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
24 keep = False
19335
77440de177f7 tests: simplify and document the sorting of pyflake messages
Simon Heimberg <simohe@besonet.ch>
parents: 14209
diff changeset
25 break # pattern matches
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
26 if keep:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
27 fn = line.split(':', 1)[0]
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
28 f = open(fn)
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
29 data = f.read()
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
30 f.close()
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
31 if 'no-' 'check-code' in data:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
32 continue
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
33 lines.append(line)
14173
419539ea79cb test-pyflake: improve sorting algorithm
timeless <timeless@mozdev.org>
parents: 14140
diff changeset
34
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
35 for line in lines:
14140
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
36 sys.stdout.write(line)
28724
cf339d6ac7c7 py3: use print_function in filterpyflakes.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 27285
diff changeset
37 print()
21271
4adc090fa2fb tests: ignore "undefined name 'memoryview'" pyflakes error on earlier Python
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21232
diff changeset
38
32317
80e3002cd29e tests: remove special handling for undefined memoryview
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30430
diff changeset
39 # self test of "undefined name" detection
21271
4adc090fa2fb tests: ignore "undefined name 'memoryview'" pyflakes error on earlier Python
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21232
diff changeset
40 if False:
28724
cf339d6ac7c7 py3: use print_function in filterpyflakes.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 27285
diff changeset
41 print(undefinedname)