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