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.
--- 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