tests/test-check-pyflakes.t
author Kyle Lippincott <spectral@google.com>
Wed, 31 Mar 2021 12:46:54 -0700
changeset 46872 8bca353b1ebc
parent 44960 78cafd48b9b2
child 47063 1d075b857c90
permissions -rw-r--r--
match: convert O(n) to O(log n) in exactmatcher.visitchildrenset When using narrow, during rebase this is called (at least) once per directory in the set of files in the commit being rebased. Every time it's called, we did the set arithmetic (now extracted and cached), which was probably pretty cheap but not necessary to repeat each time, looped over every item in the matcher and kept things that started with the directory we were querying. With very large narrowspecs, and a commit that touched a file in a large number of directories, this was slow. In a pathological repo, the rebase of a single commit (that touched over 17k files, I believe in approximately as many directories) with a narrowspec that had >32k entries took 8,246s of profiled time, with 5,007s of that spent in visitchildrenset (transitively). With this change, the time spent in visitchildrenset is less than 34s (which is where my profile cut off). Most of the remaining time was network access due to our custom remotefilelog-based setup not properly prefetching. Differential Revision: https://phab.mercurial-scm.org/D10294
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29138
a29f071751df tests: mark test-check-pyflakes.t as requiring hg1.0+
timeless <timeless@mozdev.org>
parents: 27285
diff changeset
     1
#require test-repo pyflakes hg10
21208
0e1cbd3d52f7 tests: add repository check for pyflakes test
Matt Mackall <mpm@selenic.com>
parents: 20644
diff changeset
     2
29219
3c9066ed557c tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents: 29138
diff changeset
     3
  $ . "$TESTDIR/helpers-testrepo.sh"
19377
0cb996ee8c6d tests: run pyflakes on files from manifest which could be python files
Simon Heimberg <simohe@besonet.ch>
parents: 16350
diff changeset
     4
0cb996ee8c6d tests: run pyflakes on files from manifest which could be python files
Simon Heimberg <simohe@besonet.ch>
parents: 16350
diff changeset
     5
run pyflakes on all tracked files ending in .py or without a file ending
0cb996ee8c6d tests: run pyflakes on files from manifest which could be python files
Simon Heimberg <simohe@besonet.ch>
parents: 16350
diff changeset
     6
(skipping binary file random-seed)
21208
0e1cbd3d52f7 tests: add repository check for pyflakes test
Matt Mackall <mpm@selenic.com>
parents: 20644
diff changeset
     7
33367
6029939f7e98 filterpyflakes: move self-test into test file
Augie Fackler <raf@durin42.com>
parents: 33204
diff changeset
     8
  $ cat > test.py <<EOF
6029939f7e98 filterpyflakes: move self-test into test file
Augie Fackler <raf@durin42.com>
parents: 33204
diff changeset
     9
  > print(undefinedname)
6029939f7e98 filterpyflakes: move self-test into test file
Augie Fackler <raf@durin42.com>
parents: 33204
diff changeset
    10
  > EOF
44958
f9099e210c57 tests: consistently use pyflakes as a Python module
Anton Shestakov <av6@dwimlabs.net>
parents: 44957
diff changeset
    11
  $ $PYTHON -m pyflakes test.py 2>/dev/null | "$TESTDIR/filterpyflakes.py"
44959
170f8a43b5b8 tests: adjust to the new format in pyflakes output
Anton Shestakov <av6@dwimlabs.net>
parents: 44958
diff changeset
    12
  test.py:1:* undefined name 'undefinedname' (glob)
33367
6029939f7e98 filterpyflakes: move self-test into test file
Augie Fackler <raf@durin42.com>
parents: 33204
diff changeset
    13
  
33418
1f3b54f392b0 test-check-pyflakes: do not leave test.py in the repo
Jun Wu <quark@fb.com>
parents: 33367
diff changeset
    14
  $ cd "`dirname "$TESTDIR"`"
33367
6029939f7e98 filterpyflakes: move self-test into test file
Augie Fackler <raf@durin42.com>
parents: 33204
diff changeset
    15
33204
ddd65b4f3ae6 tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents: 33116
diff changeset
    16
  $ testrepohg locate 'set:**.py or grep("^#!.*python")' \
33116
6c113a7dec52 tests: use the system hg for examining the local repository
Adam Simpkins <simpkins@fb.com>
parents: 32510
diff changeset
    17
  > -X hgext/fsmonitor/pywatchman \
30894
5b60464efbde tests: exclude python-zstandard from pyflakes analysis
Augie Fackler <augie@google.com>
parents: 30655
diff changeset
    18
  > -X mercurial/pycompat.py -X contrib/python-zstandard \
44957
1ca0d5cae9bc tests: skip pyflakes for mercurial/thirdparty/
Anton Shestakov <av6@dwimlabs.net>
parents: 44461
diff changeset
    19
  > -X mercurial/thirdparty \
29584
06587edd1233 pycompat: make pycompat demandimport friendly
Pulkit Goyal <7895pulkit@gmail.com>
parents: 29232
diff changeset
    20
  > 2>/dev/null \
44461
e397c6d74652 tests: use pyflakes module instead of pyflakes executable
Manuel Jacob <me@manueljacob.de>
parents: 43496
diff changeset
    21
  > | xargs $PYTHON -m pyflakes 2>/dev/null | "$TESTDIR/filterpyflakes.py"
44959
170f8a43b5b8 tests: adjust to the new format in pyflakes output
Anton Shestakov <av6@dwimlabs.net>
parents: 44958
diff changeset
    22
  contrib/perf.py:*:* undefined name 'xrange' (glob) (?)
170f8a43b5b8 tests: adjust to the new format in pyflakes output
Anton Shestakov <av6@dwimlabs.net>
parents: 44958
diff changeset
    23
  mercurial/hgweb/server.py:*:* undefined name 'reload' (glob) (?)
170f8a43b5b8 tests: adjust to the new format in pyflakes output
Anton Shestakov <av6@dwimlabs.net>
parents: 44958
diff changeset
    24
  mercurial/util.py:*:* undefined name 'file' (glob) (?)
170f8a43b5b8 tests: adjust to the new format in pyflakes output
Anton Shestakov <av6@dwimlabs.net>
parents: 44958
diff changeset
    25
  mercurial/encoding.py:*:* undefined name 'localstr' (glob) (?)
22053
4354b1e35f53 tests: fix pyflakes test whitespace breakage
Matt Mackall <mpm@selenic.com>
parents: 22047
diff changeset
    26