Fixed #23685 -- Made call_command skip checks by default
Thanks Loic Bistuer for the report/review and Tim Graham for the review.
This commit is contained in:
parent
a39df37049
commit
685edab9da
|
@ -114,6 +114,8 @@ def call_command(name, *args, **options):
|
||||||
# Legacy optparse method
|
# Legacy optparse method
|
||||||
defaults, _ = parser.parse_args(args=[])
|
defaults, _ = parser.parse_args(args=[])
|
||||||
defaults = dict(defaults.__dict__, **options)
|
defaults = dict(defaults.__dict__, **options)
|
||||||
|
if 'skip_checks' not in options:
|
||||||
|
defaults['skip_checks'] = True
|
||||||
|
|
||||||
return command.execute(*args, **defaults)
|
return command.execute(*args, **defaults)
|
||||||
|
|
||||||
|
|
|
@ -634,6 +634,9 @@ Miscellaneous
|
||||||
class name found in the :setting:`BACKEND <CACHES-BACKEND>` key of the
|
class name found in the :setting:`BACKEND <CACHES-BACKEND>` key of the
|
||||||
:setting:`CACHES` setting.
|
:setting:`CACHES` setting.
|
||||||
|
|
||||||
|
* By default, :ref:`call_command <call-command>` now always skips the check
|
||||||
|
framework (unless you pass it ``skip_checks=False``).
|
||||||
|
|
||||||
.. _deprecated-features-1.8:
|
.. _deprecated-features-1.8:
|
||||||
|
|
||||||
Features deprecated in 1.8
|
Features deprecated in 1.8
|
||||||
|
|
|
@ -15,5 +15,6 @@ class Command(BaseCommand):
|
||||||
example = options["example"]
|
example = options["example"]
|
||||||
if example == "raise":
|
if example == "raise":
|
||||||
raise CommandError()
|
raise CommandError()
|
||||||
|
if options['verbosity'] > 0:
|
||||||
self.stdout.write("I don't feel like dancing %s." % options["style"])
|
self.stdout.write("I don't feel like dancing %s." % options["style"])
|
||||||
self.stdout.write(','.join(options.keys()))
|
self.stdout.write(','.join(options.keys()))
|
||||||
|
|
|
@ -4,7 +4,7 @@ import warnings
|
||||||
|
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from django.core import management
|
from django.core import management
|
||||||
from django.core.management import CommandError
|
from django.core.management import BaseCommand, CommandError
|
||||||
from django.core.management.utils import find_command, popen_wrapper
|
from django.core.management.utils import find_command, popen_wrapper
|
||||||
from django.test import SimpleTestCase
|
from django.test import SimpleTestCase
|
||||||
from django.utils import translation
|
from django.utils import translation
|
||||||
|
@ -136,6 +136,26 @@ class CommandTests(SimpleTestCase):
|
||||||
self.assertTrue(output.startswith(connection.ops.start_transaction_sql()))
|
self.assertTrue(output.startswith(connection.ops.start_transaction_sql()))
|
||||||
self.assertTrue(output.endswith(connection.ops.end_transaction_sql()))
|
self.assertTrue(output.endswith(connection.ops.end_transaction_sql()))
|
||||||
|
|
||||||
|
def test_call_command_no_checks(self):
|
||||||
|
"""
|
||||||
|
By default, call_command should not trigger the check framework, unless
|
||||||
|
specifically asked.
|
||||||
|
"""
|
||||||
|
self.counter = 0
|
||||||
|
|
||||||
|
def patched_check(self_, **kwargs):
|
||||||
|
self.counter = self.counter + 1
|
||||||
|
|
||||||
|
saved_check = BaseCommand.check
|
||||||
|
BaseCommand.check = patched_check
|
||||||
|
try:
|
||||||
|
management.call_command("dance", verbosity=0)
|
||||||
|
self.assertEqual(self.counter, 0)
|
||||||
|
management.call_command("dance", verbosity=0, skip_checks=False)
|
||||||
|
self.assertEqual(self.counter, 1)
|
||||||
|
finally:
|
||||||
|
BaseCommand.check = saved_check
|
||||||
|
|
||||||
|
|
||||||
class UtilsTests(SimpleTestCase):
|
class UtilsTests(SimpleTestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue