29 lines
		
	
	
		
			774 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			774 B
		
	
	
	
		
			Python
		
	
	
	
import re
 | 
						|
from io import StringIO
 | 
						|
 | 
						|
import pytest
 | 
						|
from _pytest._io import TerminalWriter
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "has_markup, expected",
 | 
						|
    [
 | 
						|
        pytest.param(
 | 
						|
            True, "{kw}assert{hl-reset} {number}0{hl-reset}\n", id="with markup"
 | 
						|
        ),
 | 
						|
        pytest.param(False, "assert 0\n", id="no markup"),
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_code_highlight(has_markup, expected, color_mapping):
 | 
						|
    f = StringIO()
 | 
						|
    tw = TerminalWriter(f)
 | 
						|
    tw.hasmarkup = has_markup
 | 
						|
    tw._write_source(["assert 0"])
 | 
						|
    assert f.getvalue().splitlines(keepends=True) == color_mapping.format([expected])
 | 
						|
 | 
						|
    with pytest.raises(
 | 
						|
        ValueError,
 | 
						|
        match=re.escape("indents size (2) should have same size as lines (1)"),
 | 
						|
    ):
 | 
						|
        tw._write_source(["assert 0"], [" ", " "])
 |