mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-02 00:05:27 +00:00
Finalization of tests. Conditions rewritten again.
This commit is contained in:
parent
d151c6c322
commit
0dcdb6c3cc
@ -94,8 +94,9 @@ class ConsoleMaster(master.Master):
|
||||
self.start_err = entry
|
||||
else:
|
||||
signals.status_message.send(
|
||||
message=(entry.level, "{}: {}".format(entry.level.title(),
|
||||
entry.msg.lstrip())),
|
||||
message=(entry.level,
|
||||
"{}: {}".format(entry.level.title(),
|
||||
str(entry.msg).lstrip())),
|
||||
expire=5
|
||||
)
|
||||
|
||||
|
@ -72,15 +72,18 @@ class ActionBar(urwid.WidgetWrap):
|
||||
|
||||
msg_lines = msg_text.split("\n")
|
||||
first_line = msg_lines[0]
|
||||
if len(msg_lines) > 1:
|
||||
# Messages with a few lines must end with prompt.
|
||||
line_length = len(first_line) + len(prompt)
|
||||
else:
|
||||
line_length = len(first_line)
|
||||
|
||||
oneline_fits = len(first_line) > cols and len(msg_lines) == 1
|
||||
manylines_first_fits = (len(first_line) + len(prompt) > cols and
|
||||
len(msg_lines) > 1)
|
||||
if oneline_fits or manylines_first_fits:
|
||||
if line_length > cols:
|
||||
shortening_index = max(0, cols - len(prompt) - 3)
|
||||
first_line = first_line[:shortening_index] + "..."
|
||||
elif len(msg_lines) == 1 and len(first_line) <= cols:
|
||||
prompt = ""
|
||||
else:
|
||||
if len(msg_lines) == 1:
|
||||
prompt = ""
|
||||
|
||||
return [(disp_attr, first_line), ("warn", prompt)]
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
|
||||
from mitmproxy import options
|
||||
from mitmproxy.tools.console import statusbar, master
|
||||
|
||||
from unittest import mock
|
||||
|
||||
|
||||
@ -35,24 +36,27 @@ def test_statusbar(monkeypatch):
|
||||
assert bar.ib._w
|
||||
|
||||
|
||||
def test_prep_message():
|
||||
o = options.Options()
|
||||
m = master.ConsoleMaster(o)
|
||||
m.ui = mock.MagicMock()
|
||||
m.ui.get_cols_rows = mock.MagicMock(return_value=(50, 50))
|
||||
@pytest.mark.parametrize("message,ready_message", [
|
||||
("", [(None, ""), ("warn", "")]),
|
||||
(("info", "Line fits into statusbar"), [("info", "Line fits into statusbar"),
|
||||
("warn", "")]),
|
||||
("Line doesn't fit into statusbar", [(None, "Line does..."),
|
||||
("warn", "(more in eventlog)")]),
|
||||
(("alert", "Two lines.\nFirst fits"), [("alert", "Two lines."),
|
||||
("warn", "(more in eventlog)")]),
|
||||
("Two long lines\nFirst doesn't fit", [(None, "Two long ..."),
|
||||
("warn", "(more in eventlog)")])
|
||||
])
|
||||
def test_prep_message(message, ready_message):
|
||||
m = mock.Mock()
|
||||
m.ui.get_cols_rows.return_value = (30, 30)
|
||||
ab = statusbar.ActionBar(m)
|
||||
assert ab.prep_message(message) == ready_message
|
||||
|
||||
prep_msg = ab.prep_message("Error: Fits into statusbar")
|
||||
assert prep_msg == [(None, "Error: Fits into statusbar"), ("warn", "")]
|
||||
|
||||
prep_msg = ab.prep_message("Error: Doesn't fit into statusbar"*2)
|
||||
assert prep_msg == [(None, "Error: Doesn't fit into statu..."),
|
||||
("warn", "(more in eventlog)")]
|
||||
|
||||
prep_msg = ab.prep_message("Error: Two lines.\nFirst fits")
|
||||
assert prep_msg == [(None, "Error: Two lines."),
|
||||
("warn", "(more in eventlog)")]
|
||||
|
||||
prep_msg = ab.prep_message("Error: Two lines"*4 + "\nFirst doensn't fit")
|
||||
assert prep_msg == [(None, "Error: Two linesError: Two li..."),
|
||||
("warn", "(more in eventlog)")]
|
||||
def test_prep_message_narrow():
|
||||
m = mock.Mock()
|
||||
m.ui.get_cols_rows.return_value = (4, 4)
|
||||
ab = statusbar.ActionBar(m)
|
||||
prep_msg = ab.prep_message("error")
|
||||
assert prep_msg == [(None, "..."), ("warn", "(more in eventlog)")]
|
||||
|
Loading…
Reference in New Issue
Block a user