Added the possibility to pass a stdin object to a management command.
This makes testing certain features easier. Thanks to AeroNotix for the original patch.
This commit is contained in:
parent
3c547a423f
commit
116d39842d
|
@ -306,6 +306,7 @@ class BaseCommand(object):
|
|||
self.stderr = OutputWrapper(options.get('stderr', sys.stderr))
|
||||
else:
|
||||
self.stderr = OutputWrapper(options.get('stderr', sys.stderr), self.style.ERROR)
|
||||
self.stdin = options.get('stdin', sys.stdin) # Useful for testing
|
||||
|
||||
if self.can_import_settings:
|
||||
from django.conf import settings # NOQA
|
||||
|
|
|
@ -2,6 +2,7 @@ import sys
|
|||
|
||||
from django.core import management
|
||||
from django.core.management import CommandError
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.core.management.utils import popen_wrapper
|
||||
from django.test import SimpleTestCase
|
||||
from django.utils import translation
|
||||
|
@ -60,6 +61,32 @@ class CommandTests(SimpleTestCase):
|
|||
management.call_command('leave_locale_alone_true', stdout=out)
|
||||
self.assertEqual(out.getvalue(), "pl\n")
|
||||
|
||||
def test_passing_stdin(self):
|
||||
"""
|
||||
You can pass a stdin object to a command's options and it should be
|
||||
available on self.stdin.
|
||||
"""
|
||||
class CustomCommand(BaseCommand):
|
||||
def handle(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
sentinel = object()
|
||||
command = CustomCommand()
|
||||
command.execute(stdin=sentinel, stdout=StringIO())
|
||||
self.assertIs(command.stdin, sentinel)
|
||||
|
||||
def test_passing_stdin_default(self):
|
||||
"""
|
||||
If stdin is not passed as an option, the default should be sys.stdin.
|
||||
"""
|
||||
class CustomCommand(BaseCommand):
|
||||
def handle(self, *args, **kwargs):
|
||||
return 'OK'
|
||||
|
||||
command = CustomCommand()
|
||||
command.execute(stdout=StringIO())
|
||||
self.assertIs(command.stdin, sys.stdin)
|
||||
|
||||
|
||||
class UtilsTests(SimpleTestCase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue