py3: resolve Unicode issues around `hg serve` on Windows
Presumably we're going to want to use CreateProcessW(), and possibly get rid of
pycompat.getcwd() here (which maps to the DeprecationWarning causing
os.getcwdb()) to use os.getcwd() directly. But this was a minimal change to
get rid of some stacktraces in test-run-tests.t.
--- a/mercurial/win32.py Wed Sep 19 21:41:58 2018 -0400
+++ b/mercurial/win32.py Wed Sep 19 23:54:16 2018 -0400
@@ -579,10 +579,11 @@
env = '\0'
env += '\0'
- args = subprocess.list2cmdline(args)
+ args = subprocess.list2cmdline(pycompat.rapply(encoding.strfromlocal, args))
+ # TODO: CreateProcessW on py3?
res = _kernel32.CreateProcessA(
- None, args, None, None, False, _CREATE_NO_WINDOW,
+ None, encoding.strtolocal(args), None, None, False, _CREATE_NO_WINDOW,
env, pycompat.getcwd(), ctypes.byref(si), ctypes.byref(pi))
if not res:
raise ctypes.WinError()
--- a/mercurial/windows.py Wed Sep 19 21:41:58 2018 -0400
+++ b/mercurial/windows.py Wed Sep 19 23:54:16 2018 -0400
@@ -523,7 +523,7 @@
os.rename(src, dst)
def gethgcmd():
- return [sys.executable] + sys.argv[:1]
+ return [encoding.strtolocal(arg) for arg in [sys.executable] + sys.argv[:1]]
def groupmembers(name):
# Don't support groups on Windows for now