[PATCH 3 of 7] py3: add warnings in check-code related to py3

Pulkit Goyal 7895pulkit at gmail.com
Wed Dec 21 17:03:48 EST 2016


# HG changeset patch
# User Pulkit Goyal <7895pulkit at gmail.com>
# Date 1482340351 -19800
#      Wed Dec 21 22:42:31 2016 +0530
# Node ID e8996b8c2c391ba6594cbeebe0a9e9a268f1ba2b
# Parent  64800628e1ffbe3d99535c2a8b4d0bc48c822a20
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 -r 64800628e1ff -r e8996b8c2c39 contrib/check-code.py
--- a/contrib/check-code.py	Mon Dec 19 02:54:49 2016 +0530
+++ b/contrib/check-code.py	Wed Dec 21 22:42:31 2016 +0530
@@ -456,8 +456,26 @@
   [],
 ]
 
+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).*(?<!pycompat)\.py', '',
+            pyfilters, py3pats),
     ('test script', r'(.*/)?test-[^.~]*$', '', testfilters, testpats),
     ('c', r'.*\.[ch]$', '', cfilters, cpats),
     ('unified test', r'.*\.t$', '', utestfilters, utestpats),
diff -r 64800628e1ff -r e8996b8c2c39 tests/test-check-code.t
--- a/tests/test-check-code.t	Mon Dec 19 02:54:49 2016 +0530
+++ b/tests/test-check-code.t	Wed Dec 21 22:42:31 2016 +0530
@@ -9,10 +9,47 @@
 
   $ 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.
 


More information about the Mercurial-devel mailing list