Refs #31546 -- Removed support for boolean values in Command.requires_system_checks.

Per deprecation timeline.
This commit is contained in:
Mariusz Felisiak 2021-09-16 08:23:46 +02:00
parent 2e10abeb7f
commit 1cb495074f
3 changed files with 4 additions and 54 deletions

View File

@ -5,7 +5,6 @@ be executed through ``django-admin`` or ``manage.py``).
import argparse import argparse
import os import os
import sys import sys
import warnings
from argparse import ArgumentParser, HelpFormatter from argparse import ArgumentParser, HelpFormatter
from io import TextIOBase from io import TextIOBase
@ -14,7 +13,6 @@ from django.core import checks
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.core.management.color import color_style, no_style from django.core.management.color import color_style, no_style
from django.db import DEFAULT_DB_ALIAS, connections from django.db import DEFAULT_DB_ALIAS, connections
from django.utils.deprecation import RemovedInDjango41Warning
ALL_CHECKS = '__all__' ALL_CHECKS = '__all__'
@ -252,14 +250,6 @@ class BaseCommand:
else: else:
self.style = color_style(force_color) self.style = color_style(force_color)
self.stderr.style_func = self.style.ERROR self.stderr.style_func = self.style.ERROR
if self.requires_system_checks in [False, True]:
warnings.warn(
"Using a boolean value for requires_system_checks is "
"deprecated. Use '__all__' instead of True, and [] (an empty "
"list) instead of False.",
RemovedInDjango41Warning,
)
self.requires_system_checks = ALL_CHECKS if self.requires_system_checks else []
if ( if (
not isinstance(self.requires_system_checks, (list, tuple)) and not isinstance(self.requires_system_checks, (list, tuple)) and
self.requires_system_checks != ALL_CHECKS self.requires_system_checks != ALL_CHECKS

View File

@ -249,3 +249,6 @@ to remove usage of these features.
* Support for assigning objects which don't support creating deep copies with * Support for assigning objects which don't support creating deep copies with
``copy.deepcopy()`` to class attributes in ``TestCase.setUpTestData()`` is ``copy.deepcopy()`` to class attributes in ``TestCase.setUpTestData()`` is
removed. removed.
* Support for using a boolean value in
:attr:`.BaseCommand.requires_system_checks` is removed.

View File

@ -14,9 +14,8 @@ from django.core.management.utils import (
) )
from django.db import connection from django.db import connection
from django.test import SimpleTestCase, override_settings from django.test import SimpleTestCase, override_settings
from django.test.utils import captured_stderr, extend_sys_path, ignore_warnings from django.test.utils import captured_stderr, extend_sys_path
from django.utils import translation from django.utils import translation
from django.utils.deprecation import RemovedInDjango41Warning
from .management.commands import dance from .management.commands import dance
@ -422,45 +421,3 @@ class UtilsTests(SimpleTestCase):
def test_normalize_path_patterns_truncates_wildcard_base(self): def test_normalize_path_patterns_truncates_wildcard_base(self):
expected = [os.path.normcase(p) for p in ['foo/bar', 'bar/*/']] expected = [os.path.normcase(p) for p in ['foo/bar', 'bar/*/']]
self.assertEqual(normalize_path_patterns(['foo/bar/*', 'bar/*/']), expected) self.assertEqual(normalize_path_patterns(['foo/bar/*', 'bar/*/']), expected)
class DeprecationTests(SimpleTestCase):
def test_requires_system_checks_warning(self):
class Command(BaseCommand):
pass
msg = (
"Using a boolean value for requires_system_checks is deprecated. "
"Use '__all__' instead of True, and [] (an empty list) instead of "
"False."
)
for value in [False, True]:
Command.requires_system_checks = value
with self.assertRaisesMessage(RemovedInDjango41Warning, msg):
Command()
@ignore_warnings(category=RemovedInDjango41Warning)
def test_requires_system_checks_true(self):
class Command(BaseCommand):
requires_system_checks = True
def handle(self, *args, **options):
pass
command = Command()
with mock.patch('django.core.management.base.BaseCommand.check') as mocked_check:
management.call_command(command, skip_checks=False)
mocked_check.assert_called_once_with()
@ignore_warnings(category=RemovedInDjango41Warning)
def test_requires_system_checks_false(self):
class Command(BaseCommand):
requires_system_checks = False
def handle(self, *args, **options):
pass
command = Command()
with mock.patch('django.core.management.base.BaseCommand.check') as mocked_check:
management.call_command(command)
self.assertIs(mocked_check.called, False)