aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-07-21 09:28:25 -0400
committerNirbheek Chauhan <nirbheek@centricular.com>2021-08-10 16:06:45 +0530
commit252246cfc21d7cbe0c99faed059bd2a8311e65ae (patch)
treee5a2208078d10fbbda9c28a04412fc40a6ece566
parentb426d7d39c9db4dc8125b7d2ef2f1213503d136a (diff)
downloadmeson-252246cfc21d7cbe0c99faed059bd2a8311e65ae.zip
meson-252246cfc21d7cbe0c99faed059bd2a8311e65ae.tar.gz
meson-252246cfc21d7cbe0c99faed059bd2a8311e65ae.tar.bz2
modules: Add API to add test
This fix kwargs not going through typed_kwargs() decorator that sets defaults. Fixes: #9009
-rw-r--r--mesonbuild/modules/__init__.py13
-rw-r--r--mesonbuild/modules/gnome.py6
2 files changed, 14 insertions, 5 deletions
diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py
index 19de1bd..12bb73a 100644
--- a/mesonbuild/modules/__init__.py
+++ b/mesonbuild/modules/__init__.py
@@ -18,7 +18,7 @@
import os
import typing as T
-from .. import build
+from .. import build, mesonlib
from ..mesonlib import relpath, HoldableObject
from ..interpreterbase.decorators import noKwargs, noPosargs
@@ -92,6 +92,17 @@ class ModuleState:
wanted: T.Optional[str] = None) -> 'ExternalProgram':
return self._interpreter.find_program_impl(prog, required=required, version_func=version_func, wanted=wanted)
+ def test(self, args: T.Tuple[str, T.Union[build.Executable, build.Jar, 'ExternalProgram', mesonlib.File]],
+ workdir: T.Optional[str] = None,
+ env: T.Union[T.List[str], T.Dict[str, str], str] = None,
+ depends: T.List[T.Union[build.CustomTarget, build.BuildTarget]] = None) -> None:
+ kwargs = {'workdir': workdir,
+ 'env': env,
+ 'depends': depends,
+ }
+ # TODO: Use interpreter internal API, but we need to go through @typed_kwargs
+ self._interpreter.func_test(self.node, args, kwargs)
+
class ModuleObject(HoldableObject):
"""Base class for all objects returned by modules
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index 3cc8ebd..b138f55 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -1136,10 +1136,8 @@ class GnomeModule(ExtensionModule):
check_env = ['DOC_MODULE=' + modulename,
'DOC_MAIN_SGML_FILE=' + main_file]
check_args = [targetname + '-check', check_cmd]
- check_kwargs = {'env': check_env,
- 'workdir': os.path.join(state.environment.get_build_dir(), state.subdir),
- 'depends': custom_target}
- self.interpreter.add_test(state.current_node, check_args, check_kwargs, True)
+ check_workdir = os.path.join(state.environment.get_build_dir(), state.subdir)
+ state.test(check_args, env=check_env, workdir=check_workdir, depends=custom_target)
res = [custom_target, alias_target]
if kwargs.get('install', True):
res.append(state.backend.get_executable_serialisation(command + args))