Mercurial > hg
changeset 18288:0d5a22f73a1f
posix: fix split() for the case where the path is at the root of the filesystem
posixpath.split() strips '/' from the dirname *unless it is the root*. This
patch reproduces this behavior in posix.split(). The old behavior causes a
crash when creating a file at the root of the repo with localrepo.wfile()
when the repo is at the root of the filesystem.
author | Remy Blank <remy.blank@pobox.com> |
---|---|
date | Wed, 09 Jan 2013 20:27:17 +0100 |
parents | eeadc76a7575 |
children | 9bfb53106328 |
files | mercurial/posix.py tests/test-doctest.py |
diffstat | 2 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/posix.py Wed Jan 09 21:13:52 2013 +0200 +++ b/mercurial/posix.py Wed Jan 09 20:27:17 2013 +0100 @@ -21,14 +21,26 @@ os.umask(umask) def split(p): - '''Same as os.path.split, but faster''' + '''Same as posixpath.split, but faster + + >>> import posixpath + >>> for f in ['/absolute/path/to/file', + ... 'relative/path/to/file', + ... 'file_alone', + ... 'path/to/directory/', + ... '/multiple/path//separators', + ... '/file_at_root', + ... '///multiple_leading_separators_at_root', + ... '']: + ... assert split(f) == posixpath.split(f), f + ''' ht = p.rsplit('/', 1) if len(ht) == 1: return '', p nh = ht[0].rstrip('/') if nh: return nh, ht[1] - return ht + return ht[0] + '/', ht[1] def openhardlinks(): '''return true if it is safe to hold open file handles to hardlinks'''
--- a/tests/test-doctest.py Wed Jan 09 21:13:52 2013 +0200 +++ b/tests/test-doctest.py Wed Jan 09 20:27:17 2013 +0100 @@ -6,6 +6,8 @@ import mercurial.util doctest.testmod(mercurial.util) +# Only run doctests for the current platform +doctest.testmod(mercurial.util.platform) import mercurial.changelog doctest.testmod(mercurial.changelog)