py3: add os.getcwdb() to have bytes path
authorPulkit Goyal <7895pulkit@gmail.com>
Tue, 22 Nov 2016 18:46:50 +0530
changeset 30500 fc0cfe6c87d7
parent 30499 22d05b53b0e8
child 30501 a87e469201f9
py3: add os.getcwdb() to have bytes path Following the behaviour of Python 3, os.getcwd() return unicodes. We need bytes version as path variables are bytes in UNIX. Python 3 has os.getcwdb() which returns current working directory in bytes. Like rest of the things there in pycompat, like osname, ossep, we need to rewrite every instance of os.getcwd to pycompat.getcwd to make them work correctly on Python 3.
mercurial/dispatch.py
mercurial/pycompat.py
--- a/mercurial/dispatch.py	Tue Nov 22 18:13:02 2016 -0800
+++ b/mercurial/dispatch.py	Tue Nov 22 18:46:50 2016 +0530
@@ -667,7 +667,7 @@
     """
     if wd is None:
         try:
-            wd = os.getcwd()
+            wd = pycompat.getcwd()
         except OSError as e:
             raise error.Abort(_("error getting current working directory: %s") %
                               e.strerror)
--- a/mercurial/pycompat.py	Tue Nov 22 18:13:02 2016 -0800
+++ b/mercurial/pycompat.py	Tue Nov 22 18:46:50 2016 +0530
@@ -43,6 +43,9 @@
     osname = os.name.encode('ascii')
     ospathsep = os.pathsep.encode('ascii')
     ossep = os.sep.encode('ascii')
+    # os.getcwd() on Python 3 returns string, but it has os.getcwdb() which
+    # returns bytes.
+    getcwd = os.getcwdb
 
     # TODO: .buffer might not exist if std streams were replaced; we'll need
     # a silly wrapper to make a bytes stream backed by a unicode one.
@@ -110,6 +113,7 @@
     stdout = sys.stdout
     stderr = sys.stderr
     sysargv = sys.argv
+    getcwd = os.getcwd
 
 stringio = io.StringIO
 empty = _queue.Empty