Yet more file storage testing cleanup for the sake of buildbots; this should be the last of it, I hope.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@9226 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jacob Kaplan-Moss 2008-10-10 22:13:16 +00:00
parent b21ea0a836
commit d7c829c98e
3 changed files with 35 additions and 15 deletions

View File

@ -19,7 +19,8 @@ try:
except NameError: except NameError:
from django.utils.itercompat import sorted from django.utils.itercompat import sorted
temp_storage = FileSystemStorage(tempfile.gettempdir()) temp_storage_dir = tempfile.mkdtemp()
temp_storage = FileSystemStorage(temp_storage_dir)
ARTICLE_STATUS = ( ARTICLE_STATUS = (
(1, 'Draft'), (1, 'Draft'),
@ -1251,4 +1252,8 @@ ValidationError: [u'Select a valid choice. z is not one of the available choices
>>> core = form.save() >>> core = form.save()
>>> core.parent >>> core.parent
<Inventory: Pear> <Inventory: Pear>
# Clean up
>>> import shutil
>>> shutil.rmtree(temp_storage_dir)
"""} """}

View File

@ -1,10 +1,12 @@
import os import os
import tempfile import tempfile
import shutil
from django.db import models from django.db import models
from django.core.files.storage import FileSystemStorage from django.core.files.storage import FileSystemStorage
from django.core.files.base import ContentFile 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. # Test for correct behavior of width_field/height_field.
# Of course, we can't run this without PIL. # Of course, we can't run this without PIL.
@ -64,5 +66,7 @@ False
>>> _ = p3.mugshot.size >>> _ = p3.mugshot.size
>>> hasattr(p3.mugshot, '_file') >>> hasattr(p3.mugshot, '_file')
False False
>>> shutil.rmtree(temp_storage_dir)
"""} """}

View File

@ -88,10 +88,12 @@ u'custom_storage.2'
# without threading. # without threading.
import os import os
import time import time
import shutil
import tempfile
from unittest import TestCase from unittest import TestCase
from django.conf import settings from django.conf import settings
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from models import temp_storage from django.core.files.storage import FileSystemStorage
try: try:
import threading import threading
except ImportError: except ImportError:
@ -104,29 +106,38 @@ class SlowFile(ContentFile):
class FileSaveRaceConditionTest(TestCase): class FileSaveRaceConditionTest(TestCase):
def setUp(self): def setUp(self):
self.storage_dir = tempfile.mkdtemp()
self.storage = FileSystemStorage(self.storage_dir)
self.thread = threading.Thread(target=self.save_file, args=['conflict']) self.thread = threading.Thread(target=self.save_file, args=['conflict'])
def tearDown(self):
shutil.rmtree(self.storage_dir)
def save_file(self, name): def save_file(self, name):
name = temp_storage.save(name, SlowFile("Data")) name = self.storage.save(name, SlowFile("Data"))
def test_race_condition(self): def test_race_condition(self):
self.thread.start() self.thread.start()
name = self.save_file('conflict') name = self.save_file('conflict')
self.thread.join() self.thread.join()
self.assert_(temp_storage.exists('conflict')) self.assert_(self.storage.exists('conflict'))
self.assert_(temp_storage.exists('conflict_')) self.assert_(self.storage.exists('conflict_'))
temp_storage.delete('conflict') self.storage.delete('conflict')
temp_storage.delete('conflict_') self.storage.delete('conflict_')
class FileStoragePermissions(TestCase): class FileStoragePermissions(TestCase):
def setUp(self): def setUp(self):
self.old_perms = settings.FILE_UPLOAD_PERMISSIONS self.old_perms = settings.FILE_UPLOAD_PERMISSIONS
settings.FILE_UPLOAD_PERMISSIONS = 0666 settings.FILE_UPLOAD_PERMISSIONS = 0666
self.storage_dir = tempfile.mkdtemp()
def test_file_upload_permissions(self): self.storage = FileSystemStorage(self.storage_dir)
name = temp_storage.save("the_file", ContentFile("data"))
actual_mode = os.stat(temp_storage.path(name))[0] & 0777
self.assertEqual(actual_mode, 0666)
def tearDown(self): def tearDown(self):
settings.FILE_UPLOAD_PERMISSIONS = self.old_perms settings.FILE_UPLOAD_PERMISSIONS = self.old_perms
shutil.rmtree(self.storage_dir)
def test_file_upload_permissions(self):
name = self.storage.save("the_file", ContentFile("data"))
actual_mode = os.stat(self.storage.path(name))[0] & 0777
self.assertEqual(actual_mode, 0666)