35 lines
		
	
	
		
			868 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			868 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								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}"
							 |