Commit 6ca163d7 authored by Alex Morozov's avatar Alex Morozov Committed by Claude Paroz
Browse files

Fixed #25784 -- Prevented an exception on collectstatic help

Made the `manage.py help collectstatic` don't fail if the `STATIC_ROOT`
setting is empty.
parent 550107ff
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ from django.core.files.storage import FileSystemStorage
from django.core.management.base import BaseCommand, CommandError
from django.core.management.color import no_style
from django.utils.encoding import smart_text
from django.utils.functional import cached_property
from django.utils.six.moves import input


@@ -28,12 +29,14 @@ class Command(BaseCommand):
        self.post_processed_files = []
        self.storage = staticfiles_storage
        self.style = no_style()

    @cached_property
    def local(self):
        try:
            self.storage.path('')
        except NotImplementedError:
            self.local = False
        else:
            self.local = True
            return False
        return True

    def add_arguments(self, parser):
        parser.add_argument('--noinput', '--no-input',
+14 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ import shutil
import tempfile
import unittest

from admin_scripts.tests import AdminScriptTestCase

from django.conf import settings
from django.contrib.staticfiles import storage
from django.contrib.staticfiles.management.commands import collectstatic
@@ -130,6 +132,18 @@ class TestConfiguration(StaticFilesTestCase):
            storage.staticfiles_storage = staticfiles_storage


class TestCollectionHelpSubcommand(AdminScriptTestCase):
    @override_settings(STATIC_ROOT=None)
    def test_missing_settings_dont_prevent_help(self):
        """
        Even if the STATIC_ROOT setting is not set, one can still call the
        `manage.py help collectstatic` command.
        """
        self.write_settings('settings.py', apps=['django.contrib.staticfiles'])
        out, err = self.run_manage(['help', 'collectstatic'])
        self.assertNoOutput(err)


class TestCollection(CollectionTestCase, TestDefaults):
    """
    Test ``collectstatic`` management command.