[Python-Dev] [Python-checkins] r87070 - python/branches/py3k/Lib/test/test_shutil.py

Brian Curtin brian.curtin at gmail.com
Sun Dec 5 03:08:35 CET 2010


On Sat, Dec 4, 2010 at 20:04, hirokazu.yamamoto
<python-checkins at python.org>wrote:

> Author: hirokazu.yamamoto
> Date: Sun Dec  5 03:04:16 2010
> New Revision: 87070
>
> Log:
> Now can reproduce the error on AMD64 Windows Server 2008
> even where os.symlink is not supported.
>
>
> Modified:
>   python/branches/py3k/Lib/test/test_shutil.py
>
> Modified: python/branches/py3k/Lib/test/test_shutil.py
>
> ==============================================================================
> --- python/branches/py3k/Lib/test/test_shutil.py        (original)
> +++ python/branches/py3k/Lib/test/test_shutil.py        Sun Dec  5 03:04:16
> 2010
> @@ -271,25 +271,33 @@
>             shutil.rmtree(src_dir)
>             shutil.rmtree(os.path.dirname(dst_dir))
>
> -    @unittest.skipUnless(hasattr(os, "symlink"),
> -                         "Missing symlink implementation")
> +    @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)
>
> +    @unittest.skipUnless(hasattr(os, "symlink"),
> +                         "Missing symlink implementation")
> +    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.
> @@ -299,10 +307,7 @@
>                 self.assertEqual(f.read(), 'cheddar')
>             os.remove(dst)
>         finally:
> -            try:
> -                shutil.rmtree(TESTFN)
> -            except OSError:
> -                pass
> +            shutil.rmtree(TESTFN, ignore_errors=True)
>
>     @unittest.skipUnless(hasattr(os, "symlink"),
>                          "Missing symlink implementation")
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins
>

I created #10540 for this issue, but the patch I have on there is just a bad
hack. I need to fix os.path.samefile for hard links, which might be easier
if we keep st_ino data in stat structures on Windows.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20101204/f2ab10c2/attachment.html>


More information about the Python-Dev mailing list