diff options
| author | Xavier Claessens <xclaessens@netflix.com> | 2025-10-11 17:48:52 -0400 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2025-10-15 12:15:39 -0400 |
| commit | 0fa4c9ee9512eb362d0e9ca869725175464462f7 (patch) | |
| tree | 5e4de60854abbf3e1ca61739b692d2c3b0b07540 /mesonbuild | |
| parent | 02f15f57481640d90fb311bf130f06b9a8302ee1 (diff) | |
| download | meson-0fa4c9ee9512eb362d0e9ca869725175464462f7.tar.gz | |
Add support for LocalProgram to test() and benchmark()
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 896981ea8..681fcd7c0 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -2262,17 +2262,17 @@ class Interpreter(InterpreterBase, HoldableObject): return build.Generator(args[0], **kwargs) - @typed_pos_args('benchmark', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex)) + @typed_pos_args('benchmark', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex, build.LocalProgram)) @typed_kwargs('benchmark', *TEST_KWS) def func_benchmark(self, node: mparser.BaseNode, - args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File]], + args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.LocalProgram]], kwargs: 'kwtypes.FuncBenchmark') -> None: self.add_test(node, args, kwargs, False) - @typed_pos_args('test', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex)) + @typed_pos_args('test', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex, build.LocalProgram)) @typed_kwargs('test', *TEST_KWS, KwargInfo('is_parallel', bool, default=True)) def func_test(self, node: mparser.BaseNode, - args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex]], + args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex, build.LocalProgram]], kwargs: 'kwtypes.FuncTest') -> None: self.add_test(node, args, kwargs, True) @@ -2286,7 +2286,7 @@ class Interpreter(InterpreterBase, HoldableObject): return ENV_KW.convertor(envlist) def make_test(self, node: mparser.BaseNode, - args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex]], + args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex, build.LocalProgram]], kwargs: 'kwtypes.BaseTest', klass: T.Type[TestClass] = Test) -> TestClass: name = args[0] @@ -2295,15 +2295,20 @@ class Interpreter(InterpreterBase, HoldableObject): location=node) name = name.replace(':', '_') exe = args[1] - if isinstance(exe, ExternalProgram): + depends = list(kwargs['depends'] or []) + if isinstance(exe, build.LocalProgram): + # FIXME: tests does not have depend_files? + depends.extend(exe.depends) + exe = exe.program + elif isinstance(exe, ExternalProgram): if not exe.found(): raise InvalidArguments('Tried to use not-found external program as test exe') elif isinstance(exe, mesonlib.File): exe = self.find_program_impl([exe]) elif isinstance(exe, build.CustomTarget): - kwargs.setdefault('depends', []).append(exe) + depends.append(exe) elif isinstance(exe, build.CustomTargetIndex): - kwargs.setdefault('depends', []).append(exe.target) + depends.append(exe.target) env = self.unpack_env_kwarg(kwargs) @@ -2322,7 +2327,7 @@ class Interpreter(InterpreterBase, HoldableObject): prj, suite, exe, - kwargs['depends'], + depends, kwargs.get('is_parallel', False), kwargs['args'], env, |
