view tests/test-check-code.t @ 30668:01721d382c16

py3: add warnings in check-code related to py3 We have our own bytes versions of things like, getopt.getopt, os.sep, os.name, sys.executable, os.environ and few more for python 3 portability. Its better to come up with warnings if someone breaks the things which we have fixed. After this patch, check-code will warn us to use our bytes version. These checks run on mercurial/ and hgext/ and pycompat.py is excluded.
author Pulkit Goyal <7895pulkit@gmail.com>
date Wed, 21 Dec 2016 22:42:31 +0530
parents fd244e047ec0
children 6ada1658fc6b
line wrap: on
line source

#require test-repo

  $ . "$TESTDIR/helpers-testrepo.sh"
  $ check_code="$TESTDIR"/../contrib/check-code.py
  $ cd "$TESTDIR"/..

New errors are not allowed. Warnings are strongly discouraged.
(The writing "no-che?k-code" is for not skipping this file when checking.)

  $ hg locate -X contrib/python-zstandard -X hgext/fsmonitor/pywatchman |
  > sed 's-\\-/-g' | xargs "$check_code" --warnings --per-file=0 || false
  hgext/fsmonitor/__init__.py:295:
   >     switch_slashes = os.sep == '\\'
   use pycompat.ossep instead (py3)
  hgext/fsmonitor/__init__.py:395:
   >             if 'FSMONITOR_LOG_FILE' in os.environ:
   use encoding.environ instead (py3)
  hgext/fsmonitor/__init__.py:396:
   >                 fn = os.environ['FSMONITOR_LOG_FILE']
   use encoding.environ instead (py3)
  hgext/fsmonitor/__init__.py:437:
   >                    'HG_PENDING' not in os.environ)
   use encoding.environ instead (py3)
  hgext/fsmonitor/__init__.py:548:
   >     if sys.platform == 'darwin':
   use pycompat.sysplatform instead (py3)
  Skipping i18n/polib.py it has no-che?k-code (glob)
  mercurial/demandimport.py:309:
   >     if os.environ.get('HGDEMANDIMPORT') != 'disable':
   use encoding.environ instead (py3)
  mercurial/encoding.py:54:
   >     environ = os.environ
   use encoding.environ instead (py3)
  mercurial/encoding.py:56:
   >     environ = os.environb
   use encoding.environ instead (py3)
  mercurial/encoding.py:61:
   >                    for k, v in os.environ.items())
   use encoding.environ instead (py3)
  mercurial/encoding.py:203:
   >                    for k, v in os.environ.items())
   use encoding.environ instead (py3)
  Skipping mercurial/httpclient/__init__.py it has no-che?k-code (glob)
  Skipping mercurial/httpclient/_readers.py it has no-che?k-code (glob)
  mercurial/policy.py:45:
   > policy = os.environ.get('HGMODULEPOLICY', policy)
   use encoding.environ instead (py3)
  Skipping mercurial/statprof.py it has no-che?k-code (glob)
  mercurial/win32.py:443:
   >         env, os.getcwd(), ctypes.byref(si), ctypes.byref(pi))
   use pycompat.getcwd instead (py3)
  [1]

@commands in debugcommands.py should be in alphabetical order.

  >>> import re
  >>> commands = []
  >>> with open('mercurial/debugcommands.py', 'rb') as fh:
  ...     for line in fh:
  ...         m = re.match("^@command\('([a-z]+)", line)
  ...         if m:
  ...             commands.append(m.group(1))
  >>> scommands = list(sorted(commands))
  >>> for i, command in enumerate(scommands):
  ...     if command != commands[i]:
  ...         print('commands in debugcommands.py not sorted; first differing '
  ...               'command is %s; expected %s' % (commands[i], command))
  ...         break