[Python-Dev] [Python-checkins] bpo-34239: Convert test_bz2 to use tempfile (#8485)
Chris Jerdonek
chris.jerdonek at gmail.com
Sat Jul 28 18:54:41 EDT 2018
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
More information about the Python-Dev
mailing list