Files are not always available from storage despite DEBUG=False
For example, in tests. So instead of switching on DEBUG, we first try to find a file from the finders, and then fall back to storage if that doesn't work.
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import fnmatch
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.staticfiles import finders
|
||||
from django.contrib.staticfiles.storage import staticfiles_storage
|
||||
|
||||
@@ -40,8 +39,10 @@ def get_file_from_finders(filename):
|
||||
|
||||
|
||||
def get_file_and_storage(filename):
|
||||
# TODO: the switch probably shouldn't be on DEBUG
|
||||
if settings.DEBUG:
|
||||
return get_file_from_finders(filename)
|
||||
else:
|
||||
return get_file_from_storage(filename)
|
||||
name, storage = get_file_from_finders(filename)
|
||||
# get_file_from_finders could fail in production if code is a deployed as a
|
||||
# package without it's package_data. In that case, we'd assume that
|
||||
# collectstatic had been run and we can get the file from storage.
|
||||
if storage is None:
|
||||
name, storage = get_file_from_storage(filename)
|
||||
return name, storage
|
||||
|
1
setup.py
1
setup.py
@@ -23,6 +23,7 @@ tests_require = [
|
||||
'Pillow',
|
||||
'django-compressor>=1.3',
|
||||
'django-discover-runner',
|
||||
'mock',
|
||||
]
|
||||
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
import os
|
||||
import re
|
||||
import mock
|
||||
|
||||
from django.test import TestCase
|
||||
from django.test.utils import override_settings
|
||||
from django.conf import settings
|
||||
|
||||
from scss.errors import SassImportError
|
||||
@@ -99,12 +99,14 @@ class ImportTestMixin(CompilerTestMixin):
|
||||
self.assertEqual(clean_css(actual), clean_css(PATH_CONFLICT_CONTENTS))
|
||||
|
||||
|
||||
@override_settings(DEBUG=True)
|
||||
class FindersImportTest(ImportTestMixin, NoCollectStaticTestCase):
|
||||
pass
|
||||
|
||||
|
||||
@override_settings(DEBUG=False)
|
||||
# Emulate the condition were collectstatic was run but the source files are no
|
||||
# longer available.
|
||||
@mock.patch('django_pyscss.utils.get_file_from_finders',
|
||||
new=mock.MagicMock(return_value=(None, None)))
|
||||
class StorageImportTest(ImportTestMixin, CollectStaticTestCase):
|
||||
pass
|
||||
|
||||
|
Reference in New Issue
Block a user