Commit 6cfbd521 authored by Jacob Kaplan-Moss's avatar Jacob Kaplan-Moss
Browse files

[1.0.X] Yet more file storage testing cleanup for the sake of buildbots; this...

[1.0.X] Yet more file storage testing cleanup for the sake of buildbots; this should be the last of it, I hope.
  
Backport of r9226 from trunk.



git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@9227 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 4d692e6a
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -19,7 +19,8 @@ try:
except NameError:
    from django.utils.itercompat import sorted

temp_storage = FileSystemStorage(tempfile.gettempdir())
temp_storage_dir = tempfile.mkdtemp()
temp_storage = FileSystemStorage(temp_storage_dir)

ARTICLE_STATUS = (
    (1, 'Draft'),
@@ -1251,4 +1252,8 @@ ValidationError: [u'Select a valid choice. z is not one of the available choices
>>> core = form.save()
>>> core.parent
<Inventory: Pear>

# Clean up
>>> import shutil
>>> shutil.rmtree(temp_storage_dir)
"""}
+5 −1
Original line number Diff line number Diff line
import os
import tempfile
import shutil
from django.db import models
from django.core.files.storage import FileSystemStorage
from django.core.files.base import ContentFile

temp_storage = FileSystemStorage(tempfile.gettempdir())
temp_storage_dir = tempfile.mkdtemp()
temp_storage = FileSystemStorage(temp_storage_dir)

# Test for correct behavior of width_field/height_field.
# Of course, we can't run this without PIL.
@@ -64,5 +66,7 @@ False
>>> _ = p3.mugshot.size
>>> hasattr(p3.mugshot, '_file')
False

>>> shutil.rmtree(temp_storage_dir)
"""}
    
 No newline at end of file
+23 −12
Original line number Diff line number Diff line
@@ -88,10 +88,12 @@ u'custom_storage.2'
# without threading.
import os
import time
import shutil
import tempfile
from unittest import TestCase
from django.conf import settings
from django.core.files.base import ContentFile
from models import temp_storage
from django.core.files.storage import FileSystemStorage
try:
    import threading
except ImportError:
@@ -104,29 +106,38 @@ class SlowFile(ContentFile):

class FileSaveRaceConditionTest(TestCase):
    def setUp(self):
        self.storage_dir = tempfile.mkdtemp()
        self.storage = FileSystemStorage(self.storage_dir)
        self.thread = threading.Thread(target=self.save_file, args=['conflict'])
    
    def tearDown(self):
        shutil.rmtree(self.storage_dir)
    
    def save_file(self, name):
        name = temp_storage.save(name, SlowFile("Data"))
        name = self.storage.save(name, SlowFile("Data"))
    
    def test_race_condition(self):
        self.thread.start()
        name = self.save_file('conflict')
        self.thread.join()
        self.assert_(temp_storage.exists('conflict'))
        self.assert_(temp_storage.exists('conflict_'))
        temp_storage.delete('conflict')
        temp_storage.delete('conflict_')
        self.assert_(self.storage.exists('conflict'))
        self.assert_(self.storage.exists('conflict_'))
        self.storage.delete('conflict')
        self.storage.delete('conflict_')

class FileStoragePermissions(TestCase):
    def setUp(self):
        self.old_perms = settings.FILE_UPLOAD_PERMISSIONS
        settings.FILE_UPLOAD_PERMISSIONS = 0666
        self.storage_dir = tempfile.mkdtemp()
        self.storage = FileSystemStorage(self.storage_dir)

    def tearDown(self):
        settings.FILE_UPLOAD_PERMISSIONS = self.old_perms
        shutil.rmtree(self.storage_dir)

    def test_file_upload_permissions(self):
        name = temp_storage.save("the_file", ContentFile("data"))
        actual_mode = os.stat(temp_storage.path(name))[0] & 0777
        name = self.storage.save("the_file", ContentFile("data"))
        actual_mode = os.stat(self.storage.path(name))[0] & 0777
        self.assertEqual(actual_mode, 0666)
    def tearDown(self):
        settings.FILE_UPLOAD_PERMISSIONS = self.old_perms
 No newline at end of file