Finalization of tests. Conditions rewritten again.

This commit is contained in:
Miroslav 2018-03-02 23:40:58 +02:00
parent d151c6c322
commit 0dcdb6c3cc
3 changed files with 35 additions and 27 deletions

View File

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

View File

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

View File

@ -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)")]