annotate tests/filterpyflakes.py @ 38727:fcb517ff9562

debug: move extensions debug behind a dedicated flag Since b86664c81833, we process the `--debug` flag earlier. This is overall good and useful, but has at least one negative side effect. Previously the debug message we report when trying to import extensions were issued before we processed the `--debug` flag. Now they happen after. Before: $ ./hg id --debug 21f507b8de2f9c1606e9aeb5ec7d2a6dedb7a4a7 tip After: $ ./hg id --debug ☿ (revset-bench) could not import hgext.evolve (No module named evolve): trying hgext3rd.evolve could not import hgext.mercurial_keyring (No module named mercurial_keyring): trying hgext3rd.mercurial_keyring could not import hgext3rd.mercurial_keyring (No module named mercurial_keyring): trying mercurial_keyring could not import hgext.hggit (No module named hggit): trying hgext3rd.hggit could not import hgext3rd.hggit (No module named hggit): trying hggit 21f507b8de2f9c1606e9aeb5ec7d2a6dedb7a4a7 tip (This get worse if --traceback is used). To work around this, we move this extensions related debug message behind a new flag 'devel.debug.extensions' and restore the previous output. I'm not fully happy about using the 'devel' section for a flag that can be used by legitimate users to debug extensions issues. However, it fits well next to other `devel.devel.*` options and is mostly used by extensions author anyway. We might move it to another, more appropriate section in the future (using alias).
author Boris Feld <boris.feld@octobus.net>
date Mon, 16 Jul 2018 18:02:30 +0200
parents 6029939f7e98
children 2372284d9457
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:
30421
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
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 = [
32277
80e3002cd29e tests: remove special handling for undefined memoryview
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30421
diff changeset
14 r"undefined name 'WindowsError'",
30421
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
15 r"redefinition of unused '[^']+' from line",
32510
50eaccb8353f filterpyflakes: allow reexporting pure symbols from cffi modules
Yuya Nishihara <yuya@tcha.org>
parents: 32277
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: 32277
diff changeset
17 r"cffi/[^:]*:.*\bimport \*' used",
50eaccb8353f filterpyflakes: allow reexporting pure symbols from cffi modules
Yuya Nishihara <yuya@tcha.org>
parents: 32277
diff changeset
18 r"cffi/[^:]*:.*\*' imported but unused",
30421
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
19 ]
21293
507ce509fd22 filterpyflakes: make memoryview filtering unconditional
Matt Mackall <mpm@selenic.com>
parents: 21271
diff changeset
20
30421
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
21 keep = True
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
22 for pat in pats:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
23 if re.search(pat, line):
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
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
30421
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
26 if keep:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
27 fn = line.split(':', 1)[0]
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
28 f = open(fn)
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
29 data = f.read()
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
30 f.close()
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
31 if 'no-' 'check-code' in data:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
32 continue
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
diff changeset
33 lines.append(line)
14173
419539ea79cb test-pyflake: improve sorting algorithm
timeless <timeless@mozdev.org>
parents: 14140
diff changeset
34
30421
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30394
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()