You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
868 B
35 lines
868 B
import io
|
|
import re
|
|
from contextlib import redirect_stdout
|
|
|
|
import pytest
|
|
|
|
from numpy.distutils import log
|
|
|
|
|
|
def setup_module():
|
|
f = io.StringIO() # changing verbosity also logs here, capture that
|
|
with redirect_stdout(f):
|
|
log.set_verbosity(2, force=True) # i.e. DEBUG
|
|
|
|
|
|
def teardown_module():
|
|
log.set_verbosity(0, force=True) # the default
|
|
|
|
|
|
r_ansi = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
|
|
|
|
|
|
@pytest.mark.parametrize("func_name", ["error", "warn", "info", "debug"])
|
|
def test_log_prefix(func_name):
|
|
func = getattr(log, func_name)
|
|
msg = f"{func_name} message"
|
|
f = io.StringIO()
|
|
with redirect_stdout(f):
|
|
func(msg)
|
|
out = f.getvalue()
|
|
assert out # sanity check
|
|
clean_out = r_ansi.sub("", out)
|
|
line = next(line for line in clean_out.splitlines())
|
|
assert line == f"{func_name.upper()}: {msg}"
|