Fixed #32094 -- Fixed flush() calls on management command self.stdout/err proxies.
This commit is contained in:
parent
b7da588e88
commit
f1f24539d8
|
@ -140,6 +140,10 @@ class OutputWrapper(TextIOBase):
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
return getattr(self._out, name)
|
return getattr(self._out, name)
|
||||||
|
|
||||||
|
def flush(self):
|
||||||
|
if hasattr(self._out, 'flush'):
|
||||||
|
self._out.flush()
|
||||||
|
|
||||||
def isatty(self):
|
def isatty(self):
|
||||||
return hasattr(self._out, 'isatty') and self._out.isatty()
|
return hasattr(self._out, 'isatty') and self._out.isatty()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
def handle(self, **options):
|
||||||
|
self.stdout.write('Working...')
|
||||||
|
self.stdout.flush()
|
||||||
|
self.stdout.write('OK')
|
|
@ -341,6 +341,13 @@ class CommandTests(SimpleTestCase):
|
||||||
parser = BaseCommand().create_parser('prog_name', 'subcommand', epilog=epilog)
|
parser = BaseCommand().create_parser('prog_name', 'subcommand', epilog=epilog)
|
||||||
self.assertEqual(parser.epilog, epilog)
|
self.assertEqual(parser.epilog, epilog)
|
||||||
|
|
||||||
|
def test_outputwrapper_flush(self):
|
||||||
|
out = StringIO()
|
||||||
|
with mock.patch.object(out, 'flush') as mocked_flush:
|
||||||
|
management.call_command('outputwrapper', stdout=out)
|
||||||
|
self.assertIn('Working...', out.getvalue())
|
||||||
|
self.assertIs(mocked_flush.called, True)
|
||||||
|
|
||||||
|
|
||||||
class CommandRunTests(AdminScriptTestCase):
|
class CommandRunTests(AdminScriptTestCase):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue