simplify termlog outfile handling

This commit is contained in:
Thomas Kriechbaumer 2017-01-25 17:45:45 +01:00
parent ab45e4d183
commit 3028e06fd2
2 changed files with 28 additions and 22 deletions

View File

@ -7,24 +7,21 @@ from mitmproxy import log
class TermLog:
def __init__(self, outfile=None):
self.options = None
self.outfile = outfile or sys.stdout
self.outfile = outfile
def configure(self, options, updated):
self.options = options
def log(self, e):
def determine_outfile():
if log.log_tier(e.level) == log.log_tier("error"):
self.outfile = sys.stderr
else:
self.outfile = sys.stdout
determine_outfile()
if log.log_tier(e.level) == log.log_tier("error"):
outfile = self.outfile or sys.stderr
else:
outfile = self.outfile or sys.stdout
if self.options.verbosity >= log.log_tier(e.level):
click.secho(
e.msg,
file=self.outfile,
file=outfile,
fg=dict(error="red", warn="yellow").get(e.level),
dim=(e.level == "debug"),
err=(e.level == "error")

View File

@ -1,18 +1,27 @@
import sys
import pytest
from mitmproxy.addons import termlog
from mitmproxy import log
from mitmproxy.tools import dump
from mitmproxy.tools.dump import Options
from mitmproxy.test import taddons
class TestTermLog:
def test_simple(self, capsys):
t = termlog.TermLog()
t.configure(dump.Options(verbosity = 2), set([]))
t.log(log.LogEntry("one", "info"))
t.log(log.LogEntry("two", "debug"))
t.log(log.LogEntry("three", "warn"))
t.log(log.LogEntry("four", "error"))
out, err = capsys.readouterr()
assert "one" in out
assert "two" not in out
assert "three" in out
assert "four" in err
@pytest.mark.usefixtures('capfd')
@pytest.mark.parametrize('outfile, expected_out, expected_err', [
(None, 'one\nthree\n', 'four\n'),
(sys.stdout, 'one\nthree\nfour\n', ''),
(sys.stderr, '', 'one\nthree\nfour\n'),
])
def test_output(self, outfile, expected_out, expected_err, capfd):
t = termlog.TermLog(outfile=outfile)
with taddons.context(options=Options(verbosity=2)) as tctx:
tctx.configure(t)
t.log(log.LogEntry("one", "info"))
t.log(log.LogEntry("two", "debug"))
t.log(log.LogEntry("three", "warn"))
t.log(log.LogEntry("four", "error"))
out, err = capfd.readouterr()
assert out == expected_out
assert err == expected_err