[py-svn] pylib commit 7799c5a50b52: fix samefile() impl on windows

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Mon Nov 22 12:34:17 CET 2010


# HG changeset patch -- Bitbucket.org
# Project pylib
# URL http://bitbucket.org/hpk42/pylib/overview
# User holger krekel <holger at merlinux.eu>
# Date 1290425642 -3600
# Node ID 7799c5a50b52b28ebcf1eb543c97d790ec53db4f
# Parent  eaeb7575fbcf599a10741528a3f000a01125e58a
fix samefile() impl on windows

--- a/py/_path/local.py
+++ b/py/_path/local.py
@@ -68,10 +68,6 @@ class PosixPath(common.PathBase):
             target = self.sep.join(('..', )*n + (relsource, ))
             py.error.checked_call(os.symlink, target, self.strpath)
 
-    def samefile(self, other):
-        """ return True if other refers to the same stat object as self. """
-        return py.error.checked_call(os.path.samefile, str(self), str(other))
-
 def getuserid(user):
     import pwd
     if not isinstance(user, int):
@@ -160,6 +156,14 @@ class LocalPath(FSBase):
     def __lt__(self, other):
         return str(self) < str(other)
 
+    def samefile(self, other):
+        """ return True if 'other' references the same file as 'self'. """
+        if self == other:
+            return True
+        if not iswin32:
+            return py.error.checked_call(os.path.samefile, str(self), str(other))
+        return False
+
     def remove(self, rec=1, ignore_errors=False):
         """ remove a file or directory (or a directory tree if rec=1).
         if ignore_errors is True, errors while removing directories will

--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,7 @@ def main():
         long_description = open('README.txt').read(),
         install_requires=['py>=1.3.9', ], # force newer py version which removes 'py' namespace
         #                                  # so we can occupy it
-        version='2.0.0.dev7',
+        version='2.0.0.dev8',
         url='http://pylib.org',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],

--- a/testing/path/test_local.py
+++ b/testing/path/test_local.py
@@ -420,6 +420,10 @@ def test_samefile(tmpdir):
     assert tmpdir.samefile(tmpdir)
     p = tmpdir.ensure("hello")
     assert p.samefile(p)
+    if sys.platform == "win32":
+        p1 = p.__class__(str(p).lower())
+        p2 = p.__class__(str(p).upper())
+        assert p1.samefile(p2)
 
 def test_mkdtemp_rootdir(tmpdir):
     dtmp = local.mkdtemp(rootdir=tmpdir)

--- a/py/__init__.py
+++ b/py/__init__.py
@@ -8,7 +8,7 @@ dictionary or an import path.
 
 (c) Holger Krekel and others, 2004-2010
 """
-__version__ = '2.0.0.dev7'
+__version__ = '2.0.0.dev8'
 
 from py import _apipkg



More information about the pytest-commit mailing list