tests/test-check-code.t
author Jun Wu <quark@fb.com>
Wed, 29 Mar 2017 16:46:57 -0700
changeset 31721 be8a866a2c44
parent 31448 6419cd243017
child 31722 4eb75c86368b
permissions -rw-r--r--
check-code: detect r.revision(r.node(rev)) revlog.revision takes either node or rev, but taking a rev is more efficient, because converting rev to node is just a seek and read. That's cheaper than converting node to rev, which may require O(n) walk in revlog index for the first times, and then triggering building the radix tree index. Even with the radix tree built, rev -> node is still faster than node -> rev because the radix tree requires more jumps in memory. So r.revision(r.node(rev)) should be changed to r.revision(rev). This patch adds a check-code rule to detect that.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27368
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     1
#require test-repo
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     2
29219
3c9066ed557c tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents: 28529
diff changeset
     3
  $ . "$TESTDIR/helpers-testrepo.sh"
27368
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     4
  $ check_code="$TESTDIR"/../contrib/check-code.py
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     5
  $ cd "$TESTDIR"/..
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     6
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     7
New errors are not allowed. Warnings are strongly discouraged.
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     8
(The writing "no-che?k-code" is for not skipping this file when checking.)
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     9
30633
fd244e047ec0 tests: exclude bundled pywatchman from check-code test
David Soria Parra <davidsp@fb.com>
parents: 30541
diff changeset
    10
  $ hg locate -X contrib/python-zstandard -X hgext/fsmonitor/pywatchman |
fd244e047ec0 tests: exclude bundled pywatchman from check-code test
David Soria Parra <davidsp@fb.com>
parents: 30541
diff changeset
    11
  > sed 's-\\-/-g' | xargs "$check_code" --warnings --per-file=0 || false
31721
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    12
  contrib/perf.py:859:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    13
   >             r.revision(r.node(x))
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    14
   don't covert rev to node before passing to revision(nodeorrev)
27368
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    15
  Skipping i18n/polib.py it has no-che?k-code (glob)
31721
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    16
  mercurial/bundlerepo.py:117:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    17
   >         return mdiff.textdiff(self.revision(self.node(rev1)),
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    18
   don't covert rev to node before passing to revision(nodeorrev)
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    19
  mercurial/bundlerepo.py:118:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    20
   >                               self.revision(self.node(rev2)))
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    21
   don't covert rev to node before passing to revision(nodeorrev)
30697
13d94304c8da merge with stable
Augie Fackler <augie@google.com>
parents: 30667
diff changeset
    22
  mercurial/demandimport.py:312:
30665
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    23
   >     if os.environ.get('HGDEMANDIMPORT') != 'disable':
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    24
   use encoding.environ instead (py3)
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    25
  mercurial/encoding.py:54:
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    26
   >     environ = os.environ
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    27
   use encoding.environ instead (py3)
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    28
  mercurial/encoding.py:56:
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    29
   >     environ = os.environb
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    30
   use encoding.environ instead (py3)
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    31
  mercurial/encoding.py:61:
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    32
   >                    for k, v in os.environ.items())
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    33
   use encoding.environ instead (py3)
31448
6419cd243017 encoding: add converter between native str and byte string
Yuya Nishihara <yuya@tcha.org>
parents: 31447
diff changeset
    34
  mercurial/encoding.py:221:
30665
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    35
   >                    for k, v in os.environ.items())
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    36
   use encoding.environ instead (py3)
27368
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    37
  Skipping mercurial/httpclient/__init__.py it has no-che?k-code (glob)
409a20314c64 tests: move the '-hg' postfix for all style tests
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    38
  Skipping mercurial/httpclient/_readers.py it has no-che?k-code (glob)
31361
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    39
  mercurial/policy.py:46:
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    40
   >     if 'HGMODULEPOLICY' in os.environ:
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    41
   use encoding.environ instead (py3)
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    42
  mercurial/policy.py:47:
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    43
   >         policy = os.environ['HGMODULEPOLICY'].encode('utf-8')
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    44
   use encoding.environ instead (py3)
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    45
  mercurial/policy.py:49:
8a17c541177f py3: add "b" prefix to string literals related to module policy
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30697
diff changeset
    46
   >     policy = os.environ.get('HGMODULEPOLICY', policy)
30665
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    47
   use encoding.environ instead (py3)
31721
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    48
  mercurial/revlog.py:441:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    49
   >         t = self.revision(self.node(rev))
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    50
   don't covert rev to node before passing to revision(nodeorrev)
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    51
  mercurial/revlog.py:1599:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    52
   >                 basetext = self.revision(self.node(baserev), _df=fh, raw=raw)
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    53
   don't covert rev to node before passing to revision(nodeorrev)
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    54
  mercurial/revlog.py:1631:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    55
   >                     ptext = self.revision(self.node(rev), _df=fh)
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    56
   don't covert rev to node before passing to revision(nodeorrev)
30253
b032a7b676c6 statprof: vendor statprof.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29442
diff changeset
    57
  Skipping mercurial/statprof.py it has no-che?k-code (glob)
31721
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    58
  mercurial/unionrepo.py:93:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    59
   >         return mdiff.textdiff(self.revision(self.node(rev1)),
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    60
   don't covert rev to node before passing to revision(nodeorrev)
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    61
  mercurial/unionrepo.py:94:
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    62
   >                               self.revision(self.node(rev2)))
be8a866a2c44 check-code: detect r.revision(r.node(rev))
Jun Wu <quark@fb.com>
parents: 31448
diff changeset
    63
   don't covert rev to node before passing to revision(nodeorrev)
30665
01721d382c16 py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30633
diff changeset
    64
  [1]
30540
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    65
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    66
@commands in debugcommands.py should be in alphabetical order.
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    67
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    68
  >>> import re
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    69
  >>> commands = []
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    70
  >>> with open('mercurial/debugcommands.py', 'rb') as fh:
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    71
  ...     for line in fh:
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    72
  ...         m = re.match("^@command\('([a-z]+)", line)
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    73
  ...         if m:
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    74
  ...             commands.append(m.group(1))
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    75
  >>> scommands = list(sorted(commands))
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    76
  >>> for i, command in enumerate(scommands):
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    77
  ...     if command != commands[i]:
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    78
  ...         print('commands in debugcommands.py not sorted; first differing '
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    79
  ...               'command is %s; expected %s' % (commands[i], command))
d955cebd8d6a tests: add test that @commands in debugcommands.py are sorted
Gregory Szorc <gregory.szorc@gmail.com>
parents: 30435
diff changeset
    80
  ...         break