diff options
| author | Charles Brunet <charles.brunet@optelgroup.com> | 2024-02-23 11:40:15 -0500 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-02-24 09:08:20 -0800 |
| commit | 11f2e07071d062f31a69de531faa0a5d68b1f5bc (patch) | |
| tree | 0361645f1bed81d4a76ff3cbbda9399168221706 /mesonbuild/interpreter | |
| parent | 8ba0ea68017b489b0a461abbd375f319dc7a48f3 (diff) | |
| download | meson-11f2e07071d062f31a69de531faa0a5d68b1f5bc.tar.gz | |
Allow using CustomTarget as test executable
Fixes #6567
Diffstat (limited to 'mesonbuild/interpreter')
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 17 | ||||
| -rw-r--r-- | mesonbuild/interpreter/interpreterobjects.py | 4 |
2 files changed, 14 insertions, 7 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 5603b9937..aaffec0b9 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -2151,17 +2151,17 @@ class Interpreter(InterpreterBase, HoldableObject): self.generators.append(gen) return gen - @typed_pos_args('benchmark', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File)) + @typed_pos_args('benchmark', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex)) @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]], kwargs: 'kwtypes.FuncBenchmark') -> None: self.add_test(node, args, kwargs, False) - @typed_pos_args('test', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File)) + @typed_pos_args('test', str, (build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex)) @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]], + args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex]], kwargs: 'kwtypes.FuncTest') -> None: self.add_test(node, args, kwargs, True) @@ -2175,7 +2175,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]], + args: T.Tuple[str, T.Union[build.Executable, build.Jar, ExternalProgram, mesonlib.File, build.CustomTarget, build.CustomTargetIndex]], kwargs: 'kwtypes.BaseTest') -> Test: name = args[0] if ':' in name: @@ -2188,6 +2188,10 @@ class Interpreter(InterpreterBase, HoldableObject): 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) + elif isinstance(exe, build.CustomTargetIndex): + kwargs.setdefault('depends', []).append(exe.target) env = self.unpack_env_kwarg(kwargs) @@ -2218,8 +2222,11 @@ class Interpreter(InterpreterBase, HoldableObject): kwargs['verbose']) def add_test(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.CustomTarget, build.CustomTargetIndex]], kwargs: T.Dict[str, T.Any], is_base_test: bool): + if isinstance(args[1], (build.CustomTarget, build.CustomTargetIndex)): + FeatureNew.single_use('test with CustomTarget as command', '1.4.0', self.subproject) + t = self.make_test(node, args, kwargs) if is_base_test: self.build.tests.append(t) diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py index 9aefc2f97..28e7170c9 100644 --- a/mesonbuild/interpreter/interpreterobjects.py +++ b/mesonbuild/interpreter/interpreterobjects.py @@ -742,7 +742,7 @@ class GeneratedObjectsHolder(ObjectHolder[build.ExtractedObjects]): class Test(MesonInterpreterObject): def __init__(self, name: str, project: str, suite: T.List[str], - exe: T.Union[ExternalProgram, build.Executable, build.CustomTarget], + exe: T.Union[ExternalProgram, build.Executable, build.CustomTarget, build.CustomTargetIndex], depends: T.List[T.Union[build.CustomTarget, build.BuildTarget]], is_parallel: bool, cmd_args: T.List[T.Union[str, mesonlib.File, build.Target]], @@ -765,7 +765,7 @@ class Test(MesonInterpreterObject): self.priority = priority self.verbose = verbose - def get_exe(self) -> T.Union[ExternalProgram, build.Executable, build.CustomTarget]: + def get_exe(self) -> T.Union[ExternalProgram, build.Executable, build.CustomTarget, build.CustomTargetIndex]: return self.exe def get_name(self) -> str: |
