[Python-Dev] [Python-checkins] r86817 - python/branches/py3k-stat-on-windows/Lib/test/test_shutil.py
Hirokazu Yamamoto
ocean-city at m2.ccsnet.ne.jp
Fri Nov 26 20:45:18 CET 2010
On 2010/11/27 3:52, Brian Curtin wrote:
> On Fri, Nov 26, 2010 at 12:44, hirokazu.yamamoto<python-checkins at python.org
>> wrote:
>
>> Author: hirokazu.yamamoto
>> Date: Fri Nov 26 19:44:28 2010
>> New Revision: 86817
>>
>> Log:
>> Now can reproduce the error on AMD64 Windows Server 2008
>> even where os.symlink is not supported.
>>
>>
>> Modified:
>> python/branches/py3k-stat-on-windows/Lib/test/test_shutil.py
>>
>> Modified: python/branches/py3k-stat-on-windows/Lib/test/test_shutil.py
>>
>> ==============================================================================
>> --- python/branches/py3k-stat-on-windows/Lib/test/test_shutil.py
>> (original)
>> +++ python/branches/py3k-stat-on-windows/Lib/test/test_shutil.py Fri
>> Nov 26 19:44:28 2010
>> @@ -271,24 +271,32 @@
>> shutil.rmtree(src_dir)
>> shutil.rmtree(os.path.dirname(dst_dir))
>>
>> - @support.skip_unless_symlink
>> + @unittest.skipUnless(hasattr(os, 'link'), 'requires os.link')
>> def test_dont_copy_file_onto_link_to_itself(self):
>> # bug 851123.
>> os.mkdir(TESTFN)
>> src = os.path.join(TESTFN, 'cheese')
>> dst = os.path.join(TESTFN, 'shop')
>> try:
>> - f = open(src, 'w')
>> - f.write('cheddar')
>> - f.close()
>> -
>> - if hasattr(os, "link"):
>> - os.link(src, dst)
>> - self.assertRaises(shutil.Error, shutil.copyfile, src, dst)
>> - with open(src, 'r') as f:
>> - self.assertEqual(f.read(), 'cheddar')
>> - os.remove(dst)
>> + with open(src, 'w') as f:
>> + f.write('cheddar')
>> + os.link(src, dst)
>> + self.assertRaises(shutil.Error, shutil.copyfile, src, dst)
>> + with open(src, 'r') as f:
>> + self.assertEqual(f.read(), 'cheddar')
>> + os.remove(dst)
>> + finally:
>> + shutil.rmtree(TESTFN, ignore_errors=True)
>>
>> + @support.skip_unless_symlink
>> + def test_dont_copy_file_onto_symlink_to_itself(self):
>> + # bug 851123.
>> + os.mkdir(TESTFN)
>> + src = os.path.join(TESTFN, 'cheese')
>> + dst = os.path.join(TESTFN, 'shop')
>> + try:
>> + with open(src, 'w') as f:
>> + f.write('cheddar')
>> # Using `src` here would mean we end up with a symlink pointing
>> # to TESTFN/TESTFN/cheese, while it should point at
>> # TESTFN/cheese.
>> @@ -298,10 +306,7 @@
>> self.assertEqual(f.read(), 'cheddar')
>> os.remove(dst)
>> finally:
>> - try:
>> - shutil.rmtree(TESTFN)
>> - except OSError:
>> - pass
>> + shutil.rmtree(TESTFN, ignore_errors=True)
>>
>> @support.skip_unless_symlink
>> def test_rmtree_on_symlink(self):
>
>
> You might be working on something slightly different, but I have an issue
> created for the failure of that test: http://bugs.python.org/issue10540
>
> It slipped past me because I was only running the test suite as a regular
> user without the required symlink privilege, so the test was skipped. That
> Server 2008 build slave runs the test suite as administrator, so it was
> running that test and going into the os.link block, which it didn't do until
> r86733.
I'm not sure, but why does os.path.samefile return False for hard link
on windows? MSDN says,
> A hard link is the file system representation of a file by which more
> than one path references a single file in the same volume.
(http://msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx)
I know st_ino on windows is a bit different from POSIX, so, just I'm not
sure. ;-)
More information about the Python-Dev
mailing list