diff options
| -rw-r--r-- | pkg_resources/__init__.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 3cbb5d19..5423af6f 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -2220,15 +2220,18 @@ register_namespace_handler(object, null_ns_handler) def normalize_path(filename): """Normalize a file/dir name for comparison purposes""" - if sys.platform == 'cygwin': - # This results in a call to getcwd() if `filename` is relative. Contrary - # to POSIX 2008 on Cygwin getcwd (3) contains symlink components. Using - # os.path.abspath() works around this limitation. A fix in os.getcwd() - # would probably better, in Cygwin even more so except that this seems - # to be by design... - return os.path.normcase(os.path.realpath(os.path.abspath(filename))) - else: - return os.path.normcase(os.path.realpath(filename)) + return os.path.normcase(os.path.realpath(_cygwin_patch(filename))) + + +def _cygwin_patch(filename): # pragma: nocover + """ + Contrary to POSIX 2008, on Cygwin, getcwd (3) contains + symlink components. Using + os.path.abspath() works around this limitation. A fix in os.getcwd() + would probably better, in Cygwin even more so, except + that this seems to be by design... + """ + return os.path.abspath(filename) if sys.platform == 'cygwin' else filename def _normalize_cached(filename, _cache={}): |
