|
@@ -20,6 +20,8 @@ from user_commands.utils import AssertFormatterFailureCaughtContext
|
|
|
|
|
|
from django import conf, get_version
|
|
|
from django.conf import settings
|
|
|
+from django.core.checks import Error, Tags, register
|
|
|
+from django.core.checks.registry import registry
|
|
|
from django.core.management import (
|
|
|
BaseCommand,
|
|
|
CommandError,
|
|
@@ -27,7 +29,7 @@ from django.core.management import (
|
|
|
color,
|
|
|
execute_from_command_line,
|
|
|
)
|
|
|
-from django.core.management.base import LabelCommand
|
|
|
+from django.core.management.base import LabelCommand, SystemCheckError
|
|
|
from django.core.management.commands.loaddata import Command as LoaddataCommand
|
|
|
from django.core.management.commands.runserver import Command as RunserverCommand
|
|
|
from django.core.management.commands.testserver import Command as TestserverCommand
|
|
@@ -1733,7 +1735,53 @@ class ManageRunserver(SimpleTestCase):
|
|
|
stdout=self.output,
|
|
|
)
|
|
|
self.assertIn("Performing system checks...", self.output.getvalue())
|
|
|
- mocked_check.assert_called()
|
|
|
+ mocked_check.assert_has_calls(
|
|
|
+ [mock.call(tags=set()), mock.call(display_num_errors=True)]
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_custom_system_checks(self):
|
|
|
+ original_checks = registry.registered_checks.copy()
|
|
|
+
|
|
|
+ @register(Tags.signals)
|
|
|
+ def my_check(app_configs, **kwargs):
|
|
|
+ return [Error("my error")]
|
|
|
+
|
|
|
+ class CustomException(Exception):
|
|
|
+ pass
|
|
|
+
|
|
|
+ self.addCleanup(setattr, registry, "registered_checks", original_checks)
|
|
|
+
|
|
|
+ class CustomRunserverCommand(RunserverCommand):
|
|
|
+ """Rather than mock run(), raise immediately after system checks run."""
|
|
|
+
|
|
|
+ def check_migrations(self, *args, **kwargs):
|
|
|
+ raise CustomException
|
|
|
+
|
|
|
+ class CustomRunserverCommandWithSignalsChecks(CustomRunserverCommand):
|
|
|
+ requires_system_checks = [Tags.signals]
|
|
|
+
|
|
|
+ command = CustomRunserverCommandWithSignalsChecks()
|
|
|
+ with self.assertRaises(SystemCheckError):
|
|
|
+ call_command(
|
|
|
+ command,
|
|
|
+ use_reloader=False,
|
|
|
+ skip_checks=False,
|
|
|
+ stdout=StringIO(),
|
|
|
+ stderr=StringIO(),
|
|
|
+ )
|
|
|
+
|
|
|
+ class CustomMigrateCommandWithSecurityChecks(CustomRunserverCommand):
|
|
|
+ requires_system_checks = [Tags.security]
|
|
|
+
|
|
|
+ command = CustomMigrateCommandWithSecurityChecks()
|
|
|
+ with self.assertRaises(CustomException):
|
|
|
+ call_command(
|
|
|
+ command,
|
|
|
+ use_reloader=False,
|
|
|
+ skip_checks=False,
|
|
|
+ stdout=StringIO(),
|
|
|
+ stderr=StringIO(),
|
|
|
+ )
|
|
|
|
|
|
|
|
|
class ManageRunserverMigrationWarning(TestCase):
|