# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2016-12-21 17:12:31 # Node ID 01721d382c16de7edaaf4f9bd6d7ab29484f17e6 # Parent 69acfd2ca11e7ee58a7faa14009e6d721639b33d 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. diff --git a/contrib/check-code.py b/contrib/check-code.py --- a/contrib/check-code.py +++ b/contrib/check-code.py @@ -456,8 +456,26 @@ allfilespats = [ [], ] +py3pats = [ + [ + (r'os\.environ', "use encoding.environ instead (py3)"), + (r'os\.name', "use pycompat.osname instead (py3)"), + (r'os\.getcwd', "use pycompat.getcwd instead (py3)"), + (r'os\.sep', "use pycompat.ossep instead (py3)"), + (r'os\.pathsep', "use pycompat.ospathsep instead (py3)"), + (r'os\.altsep', "use pycompat.osaltsep instead (py3)"), + (r'os\.getenv', "use pycompat.osgetenv instead (py3)"), + (r'sys\.platform', "use pycompat.sysplatform instead (py3)"), + (r'getopt\.getopt', "use pycompat.getoptb instead (py3)"), + ], + # warnings + [], +] + checks = [ ('python', r'.*\.(py|cgi)$', r'^#!.*python', pyfilters, pypats), + ('python 3', r'.*(hgext|mercurial).*(? 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.