diff options
author | Hasan Ramezani <hasan.r67@gmail.com> | 2018-07-22 21:41:47 +0430 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2018-09-11 11:15:42 -0400 |
commit | 5195b99e2c3804ec5f9c98d29e0cf76bf44b0cec (patch) | |
tree | 308f211170a1180c40ce33adac835fe040825fcc /tests/admin_scripts | |
parent | de8eb07c7ae619e42781c9c0adecb521cdc3a353 (diff) | |
download | django-5195b99e2c3804ec5f9c98d29e0cf76bf44b0cec.tar.gz |
Fixed #29560 -- Added --force-color management command option.
Diffstat (limited to 'tests/admin_scripts')
-rw-r--r-- | tests/admin_scripts/tests.py | 103 |
1 files changed, 70 insertions, 33 deletions
diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index df0fcd6276..410652efbc 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -40,7 +40,7 @@ custom_templates_dir = os.path.join(os.path.dirname(__file__), 'custom_templates SYSTEM_CHECK_MSG = 'System check identified no issues' -class AdminScriptTestCase(unittest.TestCase): +class AdminScriptTestCase(SimpleTestCase): @classmethod def setUpClass(cls): @@ -970,9 +970,9 @@ class ManageAlternateSettings(AdminScriptTestCase): out, err = self.run_manage(args) self.assertOutput( out, - "EXECUTE: noargs_command options=[('no_color', False), " - "('pythonpath', None), ('settings', 'alternate_settings'), " - "('traceback', False), ('verbosity', 1)]" + "EXECUTE: noargs_command options=[('force_color', False), " + "('no_color', False), ('pythonpath', None), ('settings', " + "'alternate_settings'), ('traceback', False), ('verbosity', 1)]" ) self.assertNoOutput(err) @@ -982,9 +982,9 @@ class ManageAlternateSettings(AdminScriptTestCase): out, err = self.run_manage(args, 'alternate_settings') self.assertOutput( out, - "EXECUTE: noargs_command options=[('no_color', False), " - "('pythonpath', None), ('settings', None), ('traceback', False), " - "('verbosity', 1)]" + "EXECUTE: noargs_command options=[('force_color', False), " + "('no_color', False), ('pythonpath', None), ('settings', None), " + "('traceback', False), ('verbosity', 1)]" ) self.assertNoOutput(err) @@ -994,9 +994,9 @@ class ManageAlternateSettings(AdminScriptTestCase): out, err = self.run_manage(args) self.assertOutput( out, - "EXECUTE: noargs_command options=[('no_color', True), " - "('pythonpath', None), ('settings', 'alternate_settings'), " - "('traceback', False), ('verbosity', 1)]" + "EXECUTE: noargs_command options=[('force_color', False), " + "('no_color', True), ('pythonpath', None), ('settings', " + "'alternate_settings'), ('traceback', False), ('verbosity', 1)]" ) self.assertNoOutput(err) @@ -1425,7 +1425,7 @@ class ManageTestserver(AdminScriptTestCase): 'blah.json', stdout=out, settings=None, pythonpath=None, verbosity=1, traceback=False, addrport='', no_color=False, use_ipv6=False, - skip_checks=True, interactive=True, + skip_checks=True, interactive=True, force_color=False, ) @mock.patch('django.db.connection.creation.create_test_db', return_value='test_db') @@ -1436,6 +1436,7 @@ class ManageTestserver(AdminScriptTestCase): call_command('testserver', 'blah.json', stdout=out) mock_runserver_handle.assert_called_with( addrport='', + force_color=False, insecure_serving=False, no_color=False, pythonpath=None, @@ -1578,6 +1579,34 @@ class CommandTypes(AdminScriptTestCase): self.assertEqual(out.getvalue(), 'Hello, world!\n') self.assertEqual(err.getvalue(), 'Hello, world!\n') + def test_force_color_execute(self): + out = StringIO() + err = StringIO() + with mock.patch.object(sys.stdout, 'isatty', lambda: False): + command = ColorCommand(stdout=out, stderr=err) + call_command(command, force_color=True) + self.assertEqual(out.getvalue(), '\x1b[31;1mHello, world!\n\x1b[0m') + self.assertEqual(err.getvalue(), '\x1b[31;1mHello, world!\n\x1b[0m') + + def test_force_color_command_init(self): + out = StringIO() + err = StringIO() + with mock.patch.object(sys.stdout, 'isatty', lambda: False): + command = ColorCommand(stdout=out, stderr=err, force_color=True) + call_command(command) + self.assertEqual(out.getvalue(), '\x1b[31;1mHello, world!\n\x1b[0m') + self.assertEqual(err.getvalue(), '\x1b[31;1mHello, world!\n\x1b[0m') + + def test_no_color_force_color_mutually_exclusive_execute(self): + msg = "The --no-color and --force-color options can't be used together." + with self.assertRaisesMessage(CommandError, msg): + call_command(BaseCommand(), no_color=True, force_color=True) + + def test_no_color_force_color_mutually_exclusive_command_init(self): + msg = "'no_color' and 'force_color' can't be used together." + with self.assertRaisesMessage(CommandError, msg): + call_command(BaseCommand(no_color=True, force_color=True)) + def test_custom_stdout(self): class Command(BaseCommand): requires_system_checks = False @@ -1655,9 +1684,10 @@ class CommandTypes(AdminScriptTestCase): expected_out = ( "EXECUTE:BaseCommand labels=%s, " - "options=[('no_color', False), ('option_a', %s), ('option_b', %s), " - "('option_c', '3'), ('pythonpath', None), ('settings', None), " - "('traceback', False), ('verbosity', 1)]") % (labels, option_a, option_b) + "options=[('force_color', False), ('no_color', False), " + "('option_a', %s), ('option_b', %s), ('option_c', '3'), " + "('pythonpath', None), ('settings', None), ('traceback', False), " + "('verbosity', 1)]") % (labels, option_a, option_b) self.assertNoOutput(err) self.assertOutput(out, expected_out) @@ -1731,9 +1761,9 @@ class CommandTypes(AdminScriptTestCase): self.assertNoOutput(err) self.assertOutput( out, - "EXECUTE: noargs_command options=[('no_color', False), " - "('pythonpath', None), ('settings', None), ('traceback', False), " - "('verbosity', 1)]" + "EXECUTE: noargs_command options=[('force_color', False), " + "('no_color', False), ('pythonpath', None), ('settings', None), " + "('traceback', False), ('verbosity', 1)]" ) def test_noargs_with_args(self): @@ -1750,8 +1780,9 @@ class CommandTypes(AdminScriptTestCase): self.assertOutput(out, "EXECUTE:AppCommand name=django.contrib.auth, options=") self.assertOutput( out, - ", options=[('no_color', False), ('pythonpath', None), " - "('settings', None), ('traceback', False), ('verbosity', 1)]" + ", options=[('force_color', False), ('no_color', False), " + "('pythonpath', None), ('settings', None), ('traceback', False), " + "('verbosity', 1)]" ) def test_app_command_no_apps(self): @@ -1768,14 +1799,16 @@ class CommandTypes(AdminScriptTestCase): self.assertOutput(out, "EXECUTE:AppCommand name=django.contrib.auth, options=") self.assertOutput( out, - ", options=[('no_color', False), ('pythonpath', None), " - "('settings', None), ('traceback', False), ('verbosity', 1)]" + ", options=[('force_color', False), ('no_color', False), " + "('pythonpath', None), ('settings', None), ('traceback', False), " + "('verbosity', 1)]" ) self.assertOutput(out, "EXECUTE:AppCommand name=django.contrib.contenttypes, options=") self.assertOutput( out, - ", options=[('no_color', False), ('pythonpath', None), " - "('settings', None), ('traceback', False), ('verbosity', 1)]" + ", options=[('force_color', False), ('no_color', False), " + "('pythonpath', None), ('settings', None), ('traceback', False), " + "('verbosity', 1)]" ) def test_app_command_invalid_app_label(self): @@ -1797,8 +1830,9 @@ class CommandTypes(AdminScriptTestCase): self.assertNoOutput(err) self.assertOutput( out, - "EXECUTE:LabelCommand label=testlabel, options=[('no_color', False), " - "('pythonpath', None), ('settings', None), ('traceback', False), ('verbosity', 1)]" + "EXECUTE:LabelCommand label=testlabel, options=[('force_color', " + "False), ('no_color', False), ('pythonpath', None), ('settings', " + "None), ('traceback', False), ('verbosity', 1)]" ) def test_label_command_no_label(self): @@ -1814,13 +1848,15 @@ class CommandTypes(AdminScriptTestCase): self.assertNoOutput(err) self.assertOutput( out, - "EXECUTE:LabelCommand label=testlabel, options=[('no_color', False), " - "('pythonpath', None), ('settings', None), ('traceback', False), ('verbosity', 1)]" + "EXECUTE:LabelCommand label=testlabel, options=[('force_color', " + "False), ('no_color', False), ('pythonpath', None), " + "('settings', None), ('traceback', False), ('verbosity', 1)]" ) self.assertOutput( out, - "EXECUTE:LabelCommand label=anotherlabel, options=[('no_color', False), " - "('pythonpath', None), ('settings', None), ('traceback', False), ('verbosity', 1)]" + "EXECUTE:LabelCommand label=anotherlabel, options=[('force_color', " + "False), ('no_color', False), ('pythonpath', None), " + "('settings', None), ('traceback', False), ('verbosity', 1)]" ) @@ -1894,10 +1930,11 @@ class ArgumentOrder(AdminScriptTestCase): self.assertNoOutput(err) self.assertOutput( out, - "EXECUTE:BaseCommand labels=('testlabel',), options=[('no_color', False), " - "('option_a', 'x'), ('option_b', %s), ('option_c', '3'), " - "('pythonpath', None), ('settings', 'alternate_settings'), " - "('traceback', False), ('verbosity', 1)]" % option_b + "EXECUTE:BaseCommand labels=('testlabel',), options=[" + "('force_color', False), ('no_color', False), ('option_a', 'x'), " + "('option_b', %s), ('option_c', '3'), ('pythonpath', None), " + "('settings', 'alternate_settings'), ('traceback', False), " + "('verbosity', 1)]" % option_b ) |