# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2016-11-22 13:16:50 # Node ID fc0cfe6c87d7668e1695800f99ca798802ca5eff # Parent 22d05b53b0e8b77ec52b229102248af56bcf442a 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. diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -667,7 +667,7 @@ def _getlocal(ui, rpath, wd=None): """ 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) diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py --- a/mercurial/pycompat.py +++ b/mercurial/pycompat.py @@ -43,6 +43,9 @@ if ispy3: 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 @@ else: stdout = sys.stdout stderr = sys.stderr sysargv = sys.argv + getcwd = os.getcwd stringio = io.StringIO empty = _queue.Empty