aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2021-01-06 00:05:48 +0000
committerGitHub <noreply@github.com>2021-01-06 00:05:48 +0000
commitc9d9dacdbc9fad31f00f871b24ec6b99a611ff5e (patch)
tree07ea0773d50c41e3e87081e1be6095a7788da9df /mesonbuild/interpreter.py
parentf9dd75f213b1c3a7ab397133b6a157ddba511d90 (diff)
parent827fa95de1c619b51457c5a04297b6ce9adc2177 (diff)
downloadmeson-c9d9dacdbc9fad31f00f871b24ec6b99a611ff5e.zip
meson-c9d9dacdbc9fad31f00f871b24ec6b99a611ff5e.tar.gz
meson-c9d9dacdbc9fad31f00f871b24ec6b99a611ff5e.tar.bz2
Merge pull request #7860 from dcbaker/wip/2020-10/rust-module
Add a rust module
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index c20c205..6e04235 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2593,6 +2593,8 @@ class Interpreter(InterpreterBase):
self.process_new_values(v.sources[0])
elif isinstance(v, InstallDir):
self.build.install_dirs.append(v)
+ elif isinstance(v, Test):
+ self.build.tests.append(v)
elif hasattr(v, 'held_object'):
pass
elif isinstance(v, (int, str, bool, Disabler)):
@@ -4120,7 +4122,7 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
env = env.held_object
return env
- def add_test(self, node, args, kwargs, is_base_test):
+ def make_test(self, node: mparser.BaseNode, args: T.List, kwargs: T.Dict[str, T.Any]):
if len(args) != 2:
raise InterpreterException('test expects 2 arguments, {} given'.format(len(args)))
name = args[0]
@@ -4159,8 +4161,8 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
if not isinstance(timeout, int):
raise InterpreterException('Timeout must be an integer.')
protocol = kwargs.get('protocol', 'exitcode')
- if protocol not in {'exitcode', 'tap', 'gtest'}:
- raise InterpreterException('Protocol must be "exitcode", "tap", or "gtest".')
+ if protocol not in {'exitcode', 'tap', 'gtest', 'rust'}:
+ raise InterpreterException('Protocol must be one of "exitcode", "tap", "gtest", or "rust".')
suite = []
prj = self.subproject if self.is_subproject() else self.build.project_name
for s in mesonlib.stringlistify(kwargs.get('suite', '')):
@@ -4174,14 +4176,17 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
priority = kwargs.get('priority', 0)
if not isinstance(priority, int):
raise InterpreterException('Keyword argument priority must be an integer.')
- t = Test(name, prj, suite, exe.held_object, depends, par, cmd_args,
- env, should_fail, timeout, workdir, protocol, priority)
+ return Test(name, prj, suite, exe.held_object, depends, par, cmd_args,
+ env, should_fail, timeout, workdir, protocol, priority)
+
+ def add_test(self, node: mparser.BaseNode, args: T.List, kwargs: T.Dict[str, T.Any], is_base_test: bool):
+ t = self.make_test(node, args, kwargs)
if is_base_test:
self.build.tests.append(t)
- mlog.debug('Adding test', mlog.bold(name, True))
+ mlog.debug('Adding test', mlog.bold(t.name, True))
else:
self.build.benchmarks.append(t)
- mlog.debug('Adding benchmark', mlog.bold(name, True))
+ mlog.debug('Adding benchmark', mlog.bold(t.name, True))
@FeatureNewKwargs('install_headers', '0.47.0', ['install_mode'])
@permittedKwargs(permitted_kwargs['install_headers'])