tests/filterpyflakes.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 30 Aug 2023 12:24:12 +0200
changeset 50911 93cc085653fb
parent 50486 e07dc1e7a454
permissions -rwxr-xr-x
run-tests: detect HGWITHRUSTEXT value Without this, some manual check in tests/test-dirstate.t could get confused by the lack of `rust` in module policy and break the test.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45849
c102b704edb5 global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43076
diff changeset
     1
#!/usr/bin/env python3
14140
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
27285
aef5b606d3ee tests/filterpyflakes: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26023
diff changeset
     5
aef5b606d3ee tests/filterpyflakes: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26023
diff changeset
     6
import re
aef5b606d3ee tests/filterpyflakes: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26023
diff changeset
     7
import sys
14140
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
     8
14173
419539ea79cb test-pyflake: improve sorting algorithm
timeless <timeless@mozdev.org>
parents: 14140
diff changeset
     9
lines = []
14140
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
    10
for line in sys.stdin:
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    11
    # 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
    12
    pats = [
32317
80e3002cd29e tests: remove special handling for undefined memoryview
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30430
diff changeset
    13
        r"undefined name 'WindowsError'",
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    14
        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
    15
        # 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
    16
        r"cffi/[^:]*:.*\bimport \*' used",
50eaccb8353f filterpyflakes: allow reexporting pure symbols from cffi modules
Yuya Nishihara <yuya@tcha.org>
parents: 32317
diff changeset
    17
        r"cffi/[^:]*:.*\*' imported but unused",
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    18
    ]
21293
507ce509fd22 filterpyflakes: make memoryview filtering unconditional
Matt Mackall <mpm@selenic.com>
parents: 21271
diff changeset
    19
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    20
    keep = True
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    21
    for pat in pats:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    22
        if re.search(pat, line):
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    23
            keep = False
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 33367
diff changeset
    24
            break  # pattern matches
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    25
    if keep:
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    26
        fn = line.split(':', 1)[0]
50486
e07dc1e7a454 tests: in filterpyflakes, tolerate non-ascii file contents
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 48966
diff changeset
    27
        with open(fn, 'rb') as f:
e07dc1e7a454 tests: in filterpyflakes, tolerate non-ascii file contents
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 48966
diff changeset
    28
            data = f.read()
e07dc1e7a454 tests: in filterpyflakes, tolerate non-ascii file contents
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 48966
diff changeset
    29
        if b'no-' b'check-code' in data:
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    30
            continue
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    31
        lines.append(line)
14173
419539ea79cb test-pyflake: improve sorting algorithm
timeless <timeless@mozdev.org>
parents: 14140
diff changeset
    32
30430
21772a6a7861 filterpyflakes: dramatically simplify the entire thing by blacklisting
Augie Fackler <augie@google.com>
parents: 30404
diff changeset
    33
for line in lines:
14140
82f0412ef7de tests: add pyflakes checking for unused imports
timeless <timeless@mozdev.org>
parents:
diff changeset
    34
    sys.stdout.write(line)
28724
cf339d6ac7c7 py3: use print_function in filterpyflakes.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 27285
diff changeset
    35
print()