osdir.com

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Python-Dev] [Python-checkins] bpo-34239: Convert test_bz2 to use tempfile (#8485)


On Thu, Jul 26, 2018 at 2:05 PM, Tim Golden <webhook-mailer at python.org> wrote:
> https://github.com/python/cpython/commit/6a62e1d365934de82ff7c634981b3fbf218b4d5f
> commit: 6a62e1d365934de82ff7c634981b3fbf218b4d5f
> branch: master
> author: Tim Golden <mail at timgolden.me.uk>
> committer: GitHub <noreply at github.com>
> date: 2018-07-26T22:05:00+01:00
> summary:
>
> bpo-34239: Convert test_bz2 to use tempfile (#8485)
>
> * bpo-34239: Convert test_bz2 to use tempfile
>
> test_bz2 currently uses the test.support.TESTFN functionality which creates a temporary file local to the test directory named around the pid.
>
> This can give rise to race conditions where tests are competing with each other to delete and recreate the file.

Per the other thread--
https://mail.python.org/pipermail/python-dev/2018-July/154762.html
this seems like a wrong statement of the problem as tests are properly
cleaning up after themselves. The leading hypothesis is that unrelated
Windows processes are delaying the deletion (e.g. virus scanners).

--Chris

>
> This change converts the tests to use tempfile.mkstemp which gives a different file every time from the system's temp area
>
> files:
> M Lib/test/test_bz2.py
>
> diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py
> index 003497f28b16..e62729a5a2f8 100644
> --- a/Lib/test/test_bz2.py
> +++ b/Lib/test/test_bz2.py
> @@ -6,6 +6,7 @@
>  import os
>  import pickle
>  import glob
> +import tempfile
>  import pathlib
>  import random
>  import shutil
> @@ -76,11 +77,14 @@ class BaseTest(unittest.TestCase):
>      BIG_DATA = bz2.compress(BIG_TEXT, compresslevel=1)
>
>      def setUp(self):
> -        self.filename = support.TESTFN
> +        fd, self.filename = tempfile.mkstemp()
> +        os.close(fd)
>
>      def tearDown(self):
> -        if os.path.isfile(self.filename):
> +        try:
>              os.unlink(self.filename)
> +        except FileNotFoundError:
> +            pass
>
>
>  class BZ2FileTest(BaseTest):
>
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> https://mail.python.org/mailman/listinfo/python-checkins