Kaydet (Commit) 685edab9 authored tarafından Claude Paroz's avatar Claude Paroz

Fixed #23685 -- Made call_command skip checks by default

Thanks Loic Bistuer for the report/review and Tim Graham for the
review.
üst a39df370
...@@ -114,6 +114,8 @@ def call_command(name, *args, **options): ...@@ -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 ...@@ -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): ...@@ -15,5 +15,6 @@ class Command(BaseCommand):
example = options["example"] example = options["example"]
if example == "raise": if example == "raise":
raise CommandError() raise CommandError()
self.stdout.write("I don't feel like dancing %s." % options["style"]) if options['verbosity'] > 0:
self.stdout.write(','.join(options.keys())) self.stdout.write("I don't feel like dancing %s." % options["style"])
self.stdout.write(','.join(options.keys()))
...@@ -4,7 +4,7 @@ import warnings ...@@ -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): ...@@ -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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment