From bf6392bb7565c21f01ed6f682b8558dcf1cc8070 Mon Sep 17 00:00:00 2001 From: jpic Date: Tue, 13 Dec 2016 01:36:08 +0100 Subject: Fixed #27600 -- Suppressed the REPL during shell's reading from stdin. Thanks Adam Chainz for review and guidance. --- tests/shell/tests.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'tests/shell') diff --git a/tests/shell/tests.py b/tests/shell/tests.py index 7285c968a2..11f1826d30 100644 --- a/tests/shell/tests.py +++ b/tests/shell/tests.py @@ -1,7 +1,10 @@ +import sys +import unittest + from django import __version__ from django.core.management import call_command -from django.test import SimpleTestCase -from django.test.utils import patch_logger +from django.test import SimpleTestCase, mock +from django.test.utils import captured_stdin, captured_stdout, patch_logger class ShellCommandTestCase(SimpleTestCase): @@ -17,3 +20,12 @@ class ShellCommandTestCase(SimpleTestCase): ) self.assertEqual(len(logger), 1) self.assertEqual(logger[0], __version__) + + @unittest.skipIf(sys.platform == 'win32', "Windows select() doesn't support file descriptors.") + @mock.patch('django.core.management.commands.shell.select') + def test_stdin_read(self, select): + with captured_stdin() as stdin, captured_stdout() as stdout: + stdin.write('print(100)\n') + stdin.seek(0) + call_command('shell') + self.assertEqual(stdout.getvalue().strip(), '100') -- cgit v1.3