mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #18387 -- Do not call sys.exit during call_command.
Moved sys.exit(1) so as failing management commands reach it only when running from command line.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import sys
|
||||
from StringIO import StringIO
|
||||
|
||||
from django.core import management
|
||||
@@ -26,4 +27,20 @@ class CommandTests(TestCase):
|
||||
self.assertEqual(translation.get_language(), 'fr')
|
||||
|
||||
def test_explode(self):
|
||||
""" Test that an unknown command raises CommandError """
|
||||
self.assertRaises(CommandError, management.call_command, ('explode',))
|
||||
|
||||
def test_system_exit(self):
|
||||
""" Exception raised in a command should raise CommandError with
|
||||
call_command, but SystemExit when run from command line
|
||||
"""
|
||||
with self.assertRaises(CommandError):
|
||||
management.call_command('dance', example="raise")
|
||||
old_stderr = sys.stderr
|
||||
sys.stderr = err = StringIO()
|
||||
try:
|
||||
with self.assertRaises(SystemExit):
|
||||
management.ManagementUtility(['manage.py', 'dance', '--example=raise']).execute()
|
||||
finally:
|
||||
sys.stderr = old_stderr
|
||||
self.assertIn("CommandError", err.getvalue())
|
||||
|
||||
Reference in New Issue
Block a user