Commit 926bc421 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Merge pull request #1566 from adamsc64/ticket_11857

Fixed #11857 -- Added missing 'closed' property on TemporaryFile class.
parents b7451b72 0756a4d6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ answer newbie questions, and generally made Django that much better:

    Gisle Aas <gisle@aas.no>
    Chris Adams
    Christopher Adams <christopher.r.adams@gmail.com>
    Mathieu Agopian <mathieu.agopian@gmail.com>
    Roberto Aguilar <roberto@baremetal.io>
    ajs <adi@sieker.info>
+9 −0
Original line number Diff line number Diff line
@@ -46,6 +46,15 @@ if os.name == 'nt':
                except (OSError):
                    pass

        @property
        def closed(self):
            """
            This attribute needs to be accessible in certain situations,
            because this class is supposed to mock the API of the class
            tempfile.NamedTemporaryFile in the Python standard library.
            """
            return self.file.closed

        def __del__(self):
            self.close()

+15 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ from django.core.files import File
from django.core.files.move import file_move_safe
from django.core.files.base import ContentFile
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.files.temp import NamedTemporaryFile
from django.test import TestCase
from django.utils.six import StringIO

@@ -142,6 +143,20 @@ class FileTests(unittest.TestCase):
        self.assertTrue(f.closed)
        self.assertTrue(orig_file.closed)

    def test_namedtemporaryfile_closes(self):
        """
        The symbol django.core.files.NamedTemporaryFile is assigned as
        a different class on different operating systems. In
        any case, the result should minimally mock some of the API of
        tempfile.NamedTemporaryFile from the Python standard library.
        """
        tempfile = NamedTemporaryFile()
        self.assertTrue(hasattr(tempfile, "closed"))
        self.assertFalse(tempfile.closed)

        tempfile.close()
        self.assertTrue(tempfile.closed)

    def test_file_mode(self):
        # Should not set mode to None if it is not present.
        # See #14681, stdlib gzip module crashes if mode is set to None