[Python-Dev] [Python-checkins] r86817 - python/branches/py3k-stat-on-windows/Lib/test/test_shutil.py (original) (raw)

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/testshutil.py Modified: python/branches/py3k-stat-on-windows/Lib/test/testshutil.py ============================================================================== --- python/branches/py3k-stat-on-windows/Lib/test/testshutil.py (original) +++ python/branches/py3k-stat-on-windows/Lib/test/testshutil.py Fri Nov 26 19:44:28 2010 @@ -271,24 +271,32 @@ shutil.rmtree(srcdir) shutil.rmtree(os.path.dirname(dstdir)) - @support.skipunlesssymlink + @unittest.skipUnless(hasattr(os, 'link'), 'requires os.link') def testdontcopyfileontolinktoitself(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, ignoreerrors=True) + @support.skipunlesssymlink + def testdontcopyfileontosymlinktoitself(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, ignoreerrors=True) @support.skipunlesssymlink def testrmtreeonsymlink(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