From 9fbb5b5e16b44dff97a3caa0e288803a80fabdd3 Mon Sep 17 00:00:00 2001 From: Dhanush Date: Tue, 4 Oct 2022 12:20:38 +0530 Subject: [PATCH] Fixed #34068 -- Corrected output of runserver command for "0" IP address. Thanks David Sanders for the review. --- django/core/management/commands/runserver.py | 9 ++++++++- tests/admin_scripts/tests.py | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/django/core/management/commands/runserver.py b/django/core/management/commands/runserver.py index 3c39f57e4d..2b91feb375 100644 --- a/django/core/management/commands/runserver.py +++ b/django/core/management/commands/runserver.py @@ -129,6 +129,13 @@ class Command(BaseCommand): shutdown_message = options.get("shutdown_message", "") quit_command = "CTRL-BREAK" if sys.platform == "win32" else "CONTROL-C" + if self._raw_ipv6: + addr = f"[{self.addr}]" + elif self.addr == "0": + addr = "0.0.0.0" + else: + addr = self.addr + if not options["skip_checks"]: self.stdout.write("Performing system checks...\n\n") self.check(display_num_errors=True) @@ -147,7 +154,7 @@ class Command(BaseCommand): "version": self.get_version(), "settings": settings.SETTINGS_MODULE, "protocol": self.protocol, - "addr": "[%s]" % self.addr if self._raw_ipv6 else self.addr, + "addr": addr, "port": self.port, "quit_command": quit_command, } diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index 9d2ca839d5..0a44e8a538 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -1587,6 +1587,21 @@ class ManageRunserver(SimpleTestCase): call_command(self.cmd, addrport="7000") self.assertServerSettings("127.0.0.1", "7000") + @mock.patch("django.core.management.commands.runserver.run") + @mock.patch("django.core.management.base.BaseCommand.check_migrations") + def test_zero_ip_addr(self, *mocked_objects): + call_command( + "runserver", + addrport="0:8000", + use_reloader=False, + skip_checks=True, + stdout=self.output, + ) + self.assertIn( + "Starting development server at http://0.0.0.0:8000/", + self.output.getvalue(), + ) + @unittest.skipUnless(socket.has_ipv6, "platform doesn't support IPv6") def test_runner_addrport_ipv6(self): call_command(self.cmd, addrport="", use_ipv6=True)