py3: byteify windows.shelltocmdexe()
This makes test-doctest.py happy on Windows.
--- a/mercurial/windows.py Sat Sep 29 20:33:52 2018 -0400
+++ b/mercurial/windows.py Sat Sep 29 20:57:49 2018 -0400
@@ -314,7 +314,7 @@
index = 0
pathlen = len(path)
while index < pathlen:
- c = path[index]
+ c = path[index:index + 1]
if c == b'\'': # no expansion within single quotes
path = path[index + 1:]
pathlen = len(path)
@@ -344,7 +344,7 @@
var = path[:index]
# See below for why empty variables are handled specially
- if env.get(var, '') != '':
+ if env.get(var, b'') != b'':
res += b'%' + var + b'%'
else:
res += b'${' + var + b'}'
@@ -365,20 +365,20 @@
# VAR, and that really confuses things like revset expressions.
# OTOH, if it's left in Unix format and the hook runs sh.exe, it
# will substitute to an empty string, and everything is happy.
- if env.get(var, '') != '':
+ if env.get(var, b'') != b'':
res += b'%' + var + b'%'
else:
res += b'$' + var
- if c != '':
+ if c != b'':
index -= 1
elif (c == b'~' and index + 1 < pathlen
- and path[index + 1] in (b'\\', b'/')):
+ and path[index + 1:index + 2] in (b'\\', b'/')):
res += "%USERPROFILE%"
elif (c == b'\\' and index + 1 < pathlen
- and path[index + 1] in (b'$', b'~')):
+ and path[index + 1:index + 2] in (b'$', b'~')):
# Skip '\', but only if it is escaping $ or ~
- res += path[index + 1]
+ res += path[index + 1:index + 2]
index += 1
else:
res += c