tests/test-check-pyflakes.t
author Arun Kulshreshtha <akulshreshtha@janestreet.com>
Tue, 30 Aug 2022 15:29:55 -0400
changeset 49491 c6a1beba27e9
parent 49283 44b26349127b
permissions -rw-r--r--
bisect: avoid copying ancestor list for non-merge commits During a bisection, hg needs to compute a list of all ancestors for every candidate commit. This is accomplished via a bottom-up traversal of the set of candidates, during which each revision's ancestor list is populated using the ancestor list of its parent(s). Previously, this involved copying the entire list, which could be very long in if the bisection range was large. To help improve this, we can observe that each candidate commit is visited exactly once, at which point its ancestor list is copied into its children's lists and then dropped. In the case of non-merge commits, a commit's ancestor list consists exactly of its parent's list plus itself. This means that we can trivially reuse the parent's existing list for one of its non-merge children, which avoids copying entirely if that commit is the parent's only child. This makes bisections over linear ranges of commits much faster. During some informal testing in the large publicly-available `mozilla-central` repository, this noticeably sped up bisections over large ranges of history: Setup: $ cd mozilla-central $ hg bisect --reset $ hg bisect --good 0 $ hg log -r tip -T '{rev}\n' 628417 Test: $ time hg bisect --bad tip --noupdate Before: real 3m35.927s user 3m35.553s sys 0m0.319s After: real 1m41.142s user 1m40.810s sys 0m0.285s
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
47063
1d075b857c90 tests: ensure `$PYTHON` is quoted for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 44960
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 \
48997
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    18
  > -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 \
47063
1d075b857c90 tests: ensure `$PYTHON` is quoted for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 44960
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) (?)
48997
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    23
  mercurial/pycompat.py:*:* 'codecs' imported but unused (glob)
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    24
  mercurial/pycompat.py:*:* 'concurrent.futures' imported but unused (glob)
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    25
  mercurial/pycompat.py:*:* 'http.client as httplib' imported but unused (glob)
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    26
  mercurial/pycompat.py:*:* 'http.cookiejar as cookielib' imported but unused (glob)
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    27
  mercurial/pycompat.py:*:* 'io' imported but unused (glob)
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    28
  mercurial/pycompat.py:*:* 'queue' imported but unused (glob)
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    29
  mercurial/pycompat.py:*:* 'socketserver' imported but unused (glob)
20c6c9e43397 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com>
parents: 48996
diff changeset
    30
  mercurial/pycompat.py:*:* 'xmlrpc.client as xmlrpclib' imported but unused (glob)
48993
225659936fff util: restore the util.pickle symbol
Matt Harbison <matt_harbison@yahoo.com>
parents: 47181
diff changeset
    31
  mercurial/util.py:*:* 'pickle' imported but unused (glob)
22053
4354b1e35f53 tests: fix pyflakes test whitespace breakage
Matt Mackall <mpm@selenic.com>
parents: 22047
diff changeset
    32