Skip to content

Commit 19c1eae

Browse files
committed
fix(main): print startup banner as single block instead of per-line logger calls
1 parent 3ba8821 commit 19c1eae

2 files changed

Lines changed: 21 additions & 25 deletions

File tree

Tools/WebServer/main.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -346,15 +346,15 @@ def main():
346346
max_val_len = max(len(v) for _, v in info_lines)
347347
inner_width = max(len(title) + 8, label_cols + max_val_len + 2)
348348

349-
logger.info("")
350-
logger.info(f" ╔{'═' * inner_width}╗")
351-
logger.info(f" ║{title:^{inner_width}s}║")
352-
logger.info(f" ╠{'═' * inner_width}╣")
349+
banner_lines = []
350+
banner_lines.append(f" ╔{'═' * inner_width}╗")
351+
banner_lines.append(f" ║{title:^{inner_width}s}║")
352+
banner_lines.append(f" ╠{'═' * inner_width}╣")
353353
val_width = inner_width - label_cols
354354
for label, value in info_lines:
355-
logger.info(f" ║ {label} {value:<{val_width}s}║")
356-
logger.info(f" ╚{'═' * inner_width}╝")
357-
logger.info("")
355+
banner_lines.append(f" ║ {label} {value:<{val_width}s}║")
356+
banner_lines.append(f" ╚{'═' * inner_width}╝")
357+
print("\n" + "\n".join(banner_lines) + "\n", flush=True)
358358

359359
if not args.no_browser:
360360
threading.Timer(1.0, webbrowser.open, args=[local_url]).start()

Tools/WebServer/tests/test_main.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -535,13 +535,12 @@ def test_startup_banner_logged(
535535
)
536536
mock_create.return_value = Mock()
537537

538-
with patch("main.logger") as mock_logger:
538+
with patch("builtins.print") as mock_print:
539539
main.main()
540540

541-
calls = [str(c) for c in mock_logger.info.call_args_list]
542-
log_output = "\n".join(calls)
543-
self.assertIn("FPBInject Web Server Started", log_output)
544-
self.assertIn("http://127.0.0.1:5500", log_output)
541+
printed = "\n".join(str(c) for c in mock_print.call_args_list)
542+
self.assertIn("FPBInject Web Server Started", printed)
543+
self.assertIn("http://127.0.0.1:5500", printed)
545544

546545
@patch("main.threading.Timer")
547546
@patch("main.create_app")
@@ -568,12 +567,11 @@ def test_startup_banner_with_custom_port(
568567
)
569568
mock_create.return_value = Mock()
570569

571-
with patch("main.logger") as mock_logger:
570+
with patch("builtins.print") as mock_print:
572571
main.main()
573572

574-
calls = [str(c) for c in mock_logger.info.call_args_list]
575-
log_output = "\n".join(calls)
576-
self.assertIn("http://127.0.0.1:8080", log_output)
573+
printed = "\n".join(str(c) for c in mock_print.call_args_list)
574+
self.assertIn("http://127.0.0.1:8080", printed)
577575

578576
@patch("main.threading.Timer")
579577
@patch("main.create_app")
@@ -601,15 +599,14 @@ def test_startup_banner_shows_lan_ip(
601599
mock_sock = Mock()
602600
mock_sock.getsockname.return_value = ("192.168.1.100", 0)
603601

604-
with patch("main.logger") as mock_logger, patch(
602+
with patch("builtins.print") as mock_print, patch(
605603
"main.socket.socket", return_value=mock_sock
606604
):
607605
main.main()
608606

609-
calls = [str(c) for c in mock_logger.info.call_args_list]
610-
log_output = "\n".join(calls)
611-
self.assertIn("http://192.168.1.100:5500", log_output)
612-
self.assertIn("Network", log_output)
607+
printed = "\n".join(str(c) for c in mock_print.call_args_list)
608+
self.assertIn("http://192.168.1.100:5500", printed)
609+
self.assertIn("Network", printed)
613610

614611
@patch("main.threading.Timer")
615612
@patch("main.create_app")
@@ -637,14 +634,13 @@ def test_startup_banner_lan_ip_unavailable(
637634
mock_sock = Mock()
638635
mock_sock.connect.side_effect = OSError("Network unreachable")
639636

640-
with patch("main.logger") as mock_logger, patch(
637+
with patch("builtins.print") as mock_print, patch(
641638
"main.socket.socket", return_value=mock_sock
642639
):
643640
main.main()
644641

645-
calls = [str(c) for c in mock_logger.info.call_args_list]
646-
log_output = "\n".join(calls)
647-
self.assertIn("unavailable", log_output)
642+
printed = "\n".join(str(c) for c in mock_print.call_args_list)
643+
self.assertIn("unavailable", printed)
648644

649645
@patch("main.threading.Timer")
650646
@patch("main.create_app")

0 commit comments

Comments
 (0)