aboutsummaryrefslogtreecommitdiff
path: root/run_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'run_tests.py')
-rwxr-xr-xrun_tests.py38
1 files changed, 13 insertions, 25 deletions
diff --git a/run_tests.py b/run_tests.py
index b3bcee2..6e9c6ce 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -26,6 +26,7 @@ from io import StringIO
from enum import Enum
from glob import glob
from pathlib import Path
+from unittest import mock
from mesonbuild import compilers
from mesonbuild import dependencies
from mesonbuild import mesonlib
@@ -255,16 +256,11 @@ def ensure_backend_detects_changes(backend):
time.sleep(1)
def run_mtest_inprocess(commandlist):
- old_stdout = sys.stdout
- sys.stdout = mystdout = StringIO()
- old_stderr = sys.stderr
- sys.stderr = mystderr = StringIO()
- try:
+ stderr = StringIO()
+ stdout = StringIO()
+ with mock.patch.object(sys, 'stdout', stdout), mock.patch.object(sys, 'stderr', stderr):
returncode = mtest.run_with_args(commandlist)
- finally:
- sys.stdout = old_stdout
- sys.stderr = old_stderr
- return returncode, mystdout.getvalue(), mystderr.getvalue()
+ return returncode, stdout.getvalue(), stderr.getvalue()
def clear_meson_configure_class_caches():
compilers.CCompiler.library_dirs_cache = {}
@@ -275,22 +271,14 @@ def clear_meson_configure_class_caches():
dependencies.PkgConfigDependency.class_pkgbin = mesonlib.PerMachine(None, None)
def run_configure_inprocess(commandlist, env=None):
- old_stdout = sys.stdout
- sys.stdout = mystdout = StringIO()
- old_stderr = sys.stderr
- sys.stderr = mystderr = StringIO()
- old_environ = os.environ.copy()
- if env is not None:
- os.environ.update(env)
- try:
- 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()
+ stderr = StringIO()
+ stdout = StringIO()
+ with mock.patch.dict(os.environ, env or {}), mock.patch.object(sys, 'stdout', stdout), mock.patch.object(sys, 'stderr', stderr):
+ try:
+ returncode = mesonmain.run(commandlist, get_meson_script())
+ finally:
+ clear_meson_configure_class_caches()
+ return returncode, stdout.getvalue(), stderr.getvalue()
def run_configure_external(full_command, env=None):
pc, o, e = mesonlib.Popen_safe(full_command, env=env)