@ -26,6 +26,7 @@ from io import StringIO
from enum import Enum
from enum import Enum
from glob import glob
from glob import glob
from pathlib import Path
from pathlib import Path
from unittest import mock
from mesonbuild import compilers
from mesonbuild import compilers
from mesonbuild import dependencies
from mesonbuild import dependencies
from mesonbuild import mesonlib
from mesonbuild import mesonlib
@ -255,16 +256,11 @@ def ensure_backend_detects_changes(backend):
time . sleep ( 1 )
time . sleep ( 1 )
def run_mtest_inprocess ( commandlist ) :
def run_mtest_inprocess ( commandlist ) :
old_stdout = sys . stdout
stderr = StringIO ( )
sys . stdout = mystdout = StringIO ( )
stdout = StringIO ( )
old_stderr = sys . stderr
with mock . patch . object ( sys , ' stdout ' , stdout ) , mock . patch . object ( sys , ' stderr ' , stderr ) :
sys . stderr = mystderr = StringIO ( )
try :
returncode = mtest . run_with_args ( commandlist )
returncode = mtest . run_with_args ( commandlist )
finally :
return returncode , stdout . getvalue ( ) , stderr . getvalue ( )
sys . stdout = old_stdout
sys . stderr = old_stderr
return returncode , mystdout . getvalue ( ) , mystderr . getvalue ( )
def clear_meson_configure_class_caches ( ) :
def clear_meson_configure_class_caches ( ) :
compilers . CCompiler . library_dirs_cache = { }
compilers . CCompiler . library_dirs_cache = { }
@ -275,22 +271,14 @@ def clear_meson_configure_class_caches():
dependencies . PkgConfigDependency . class_pkgbin = mesonlib . PerMachine ( None , None )
dependencies . PkgConfigDependency . class_pkgbin = mesonlib . PerMachine ( None , None )
def run_configure_inprocess ( commandlist , env = None ) :
def run_configure_inprocess ( commandlist , env = None ) :
old_stdout = sys . stdout
stderr = StringIO ( )
sys . stdout = mystdout = StringIO ( )
stdout = StringIO ( )
old_stderr = sys . stderr
with mock . patch . dict ( os . environ , env or { } ) , mock . patch . object ( sys , ' stdout ' , stdout ) , mock . patch . object ( sys , ' stderr ' , stderr ) :
sys . stderr = mystderr = StringIO ( )
try :
old_environ = os . environ . copy ( )
returncode = mesonmain . run ( commandlist , get_meson_script ( ) )
if env is not None :
finally :
os . environ . update ( env )
clear_meson_configure_class_caches ( )
try :
return returncode , stdout . getvalue ( ) , stderr . getvalue ( )
returncode = mesonmain . run ( commandlist , get_meson_script ( ) )
finally :
sys . stdout = old_stdout
sys . stderr = old_stderr
clear_meson_configure_class_caches ( )
os . environ . clear ( )
os . environ . update ( old_environ )
return returncode , mystdout . getvalue ( ) , mystderr . getvalue ( )
def run_configure_external ( full_command , env = None ) :
def run_configure_external ( full_command , env = None ) :
pc , o , e = mesonlib . Popen_safe ( full_command , env = env )
pc , o , e = mesonlib . Popen_safe ( full_command , env = env )