|
@@ -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')
|