mirror of
https://github.com/django/django.git
synced 2025-10-17 22:07:29 +00:00
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
2 changed files with 28 additions and 0 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue