enhance support for precision bit in LEVELNAME_FMT_REGEX regex
This commit is contained in:
parent
4b6188b3b1
commit
1e3fcece6d
|
@ -0,0 +1 @@
|
||||||
|
Introduce fix to handle precision width in ``log-cli-format`` in turn to fix output coloring for certain formats.
|
|
@ -59,7 +59,7 @@ class ColoredLevelFormatter(logging.Formatter):
|
||||||
logging.DEBUG: {"purple"},
|
logging.DEBUG: {"purple"},
|
||||||
logging.NOTSET: set(),
|
logging.NOTSET: set(),
|
||||||
}
|
}
|
||||||
LEVELNAME_FMT_REGEX = re.compile(r"%\(levelname\)([+-.]?\d*[.]?\d*s)")
|
LEVELNAME_FMT_REGEX = re.compile(r"%\(levelname\)([+-.]?\d*(?:\.\d+)?s)")
|
||||||
|
|
||||||
def __init__(self, terminalwriter: TerminalWriter, *args, **kwargs) -> None:
|
def __init__(self, terminalwriter: TerminalWriter, *args, **kwargs) -> None:
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
|
@ -36,6 +36,37 @@ def test_coloredlogformatter() -> None:
|
||||||
assert output == ("dummypath 10 INFO Test Message")
|
assert output == ("dummypath 10 INFO Test Message")
|
||||||
|
|
||||||
|
|
||||||
|
def test_coloredlogformatter_with_width_precision() -> None:
|
||||||
|
logfmt = "%(filename)-25s %(lineno)4d %(levelname)-8.2s %(message)s"
|
||||||
|
|
||||||
|
record = logging.LogRecord(
|
||||||
|
name="dummy",
|
||||||
|
level=logging.INFO,
|
||||||
|
pathname="dummypath",
|
||||||
|
lineno=10,
|
||||||
|
msg="Test Message",
|
||||||
|
args=(),
|
||||||
|
exc_info=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
class ColorConfig:
|
||||||
|
class option:
|
||||||
|
pass
|
||||||
|
|
||||||
|
tw = TerminalWriter()
|
||||||
|
tw.hasmarkup = True
|
||||||
|
formatter = ColoredLevelFormatter(tw, logfmt)
|
||||||
|
output = formatter.format(record)
|
||||||
|
assert output == (
|
||||||
|
"dummypath 10 \x1b[32mINFO \x1b[0m Test Message"
|
||||||
|
)
|
||||||
|
|
||||||
|
tw.hasmarkup = False
|
||||||
|
formatter = ColoredLevelFormatter(tw, logfmt)
|
||||||
|
output = formatter.format(record)
|
||||||
|
assert output == ("dummypath 10 INFO Test Message")
|
||||||
|
|
||||||
|
|
||||||
def test_multiline_message() -> None:
|
def test_multiline_message() -> None:
|
||||||
from _pytest.logging import PercentStyleMultiline
|
from _pytest.logging import PercentStyleMultiline
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue