[PATCH 2 of 7] py3: make sure osutil.listdir() returns what it gets

Pulkit Goyal 7895pulkit at gmail.com
Wed Nov 2 18:23:07 EDT 2016


# HG changeset patch
# User Pulkit Goyal <7895pulkit at gmail.com>
# Date 1478118344 -19800
#      Thu Nov 03 01:55:44 2016 +0530
# Node ID 6585e9c1d915818d5138f6cb4134707002d5d749
# Parent  e541b0e5839988f63446c88509db68772a55775b
py3: make sure osutil.listdir() returns what it gets

osutil.listdir() on py3 was having problems with bytes. Since
os.sep is a str in Py3, we need to check if what passed is bytes and then
convert os.sep to bytes. On python 2, doing os.sep.encode() is okay.
After this patch, osutil.listdir() argument will return what is gets as an
argument on Python 3.5.

diff -r e541b0e58399 -r 6585e9c1d915 mercurial/pure/osutil.py
--- a/mercurial/pure/osutil.py	Thu Nov 03 00:28:33 2016 +0530
+++ b/mercurial/pure/osutil.py	Thu Nov 03 01:55:44 2016 +0530
@@ -51,8 +51,11 @@
     '''
     result = []
     prefix = path
-    if not prefix.endswith(os.sep):
-        prefix += os.sep
+    sep = os.sep
+    if isinstance(path, bytes):
+        sep = sep.encode('ascii')
+    if not prefix.endswith(sep):
+        prefix += sep
     names = os.listdir(path)
     names.sort()
     for fn in names:


More information about the Mercurial-devel mailing list