aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiroslav <ttahabatt@gmail.com>2018-03-02 23:40:58 +0200
committerMiroslav <ttahabatt@gmail.com>2018-03-02 23:40:58 +0200
commit0dcdb6c3cc54eb11d8af55157c1910acddfa7d00 (patch)
treedb6f422c93d6a538caac4b611502afe9191afb26
parentd151c6c32230f71146b3b1215fc2b41a4e9e880d (diff)
downloadmitmproxy-0dcdb6c3cc54eb11d8af55157c1910acddfa7d00.tar.gz
mitmproxy-0dcdb6c3cc54eb11d8af55157c1910acddfa7d00.tar.bz2
mitmproxy-0dcdb6c3cc54eb11d8af55157c1910acddfa7d00.zip
Finalization of tests. Conditions rewritten again.
-rw-r--r--mitmproxy/tools/console/master.py5
-rw-r--r--mitmproxy/tools/console/statusbar.py15
-rw-r--r--test/mitmproxy/tools/console/test_statusbar.py42
3 files changed, 35 insertions, 27 deletions
diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py
index 397fc8e8..5cc1cf43 100644
--- a/mitmproxy/tools/console/master.py
+++ b/mitmproxy/tools/console/master.py
@@ -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
)
diff --git a/mitmproxy/tools/console/statusbar.py b/mitmproxy/tools/console/statusbar.py
index a8806b30..caffe4e6 100644
--- a/mitmproxy/tools/console/statusbar.py
+++ b/mitmproxy/tools/console/statusbar.py
@@ -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)]
diff --git a/test/mitmproxy/tools/console/test_statusbar.py b/test/mitmproxy/tools/console/test_statusbar.py
index 22bb761f..7b991890 100644
--- a/test/mitmproxy/tools/console/test_statusbar.py
+++ b/test/mitmproxy/tools/console/test_statusbar.py
@@ -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)")]