# Copyright (c) 2024 Antmicro # # SPDX-License-Identifier: Apache-2.0 '''Runner stub for renode-test.''' import subprocess from runners.core import RunnerCaps, ZephyrBinaryRunner class RenodeRobotRunner(ZephyrBinaryRunner): '''Place-holder for Renode runner customizations.''' def __init__(self, cfg, args): super().__init__(cfg) self.testsuite = args.testsuite self.renode_robot_arg = args.renode_robot_arg self.renode_robot_help = args.renode_robot_help @classmethod def name(cls): return 'renode-robot' @classmethod def capabilities(cls): return RunnerCaps(commands={'robot'}, hide_load_files=True) @classmethod def do_add_parser(cls, parser): parser.add_argument('--testsuite', metavar='SUITE', action='append', help='path to Robot test suite') parser.add_argument('--renode-robot-arg', metavar='ARG', action='append', help='additional argument passed to renode-test') parser.add_argument('--renode-robot-help', default=False, action='store_true', help='print all possible `renode-test` arguments') @classmethod def do_create(cls, cfg, args): return RenodeRobotRunner(cfg, args) def do_run(self, command, **kwargs): self.run_test(**kwargs) def run_test(self, **kwargs): cmd = ['renode-test'] if self.renode_robot_help is True: cmd.append('--help') else: if self.renode_robot_arg is not None: for arg in self.renode_robot_arg: cmd.append(arg) if self.testsuite is not None: for suite in self.testsuite: cmd.append(suite) else: self.logger.error("No Robot testsuite passed to renode-test! " "Use the `--testsuite` argument to provide one.") subprocess.run(cmd, check=True)