1# Copyright (c) 2024 Antmicro <www.antmicro.com> 2# 3# SPDX-License-Identifier: Apache-2.0 4 5'''Runner stub for Renode.''' 6 7import subprocess 8 9from runners.core import RunnerCaps, ZephyrBinaryRunner 10 11 12class RenodeRunner(ZephyrBinaryRunner): 13 '''Place-holder for Renode runner customizations.''' 14 15 def __init__(self, cfg, args): 16 super().__init__(cfg) 17 self.renode_arg = args.renode_arg 18 self.renode_command = args.renode_command 19 self.renode_help = args.renode_help 20 21 @classmethod 22 def name(cls): 23 return 'renode' 24 25 @classmethod 26 def capabilities(cls): 27 return RunnerCaps(commands={'simulate'}, hide_load_files=True) 28 29 @classmethod 30 def do_add_parser(cls, parser): 31 parser.add_argument('--renode-arg', 32 metavar='ARG', 33 action='append', 34 help='''additional argument passed to Renode; 35 `--help` will print all possible arguments''') 36 parser.add_argument('--renode-command', 37 metavar='COMMAND', 38 action='append', 39 help='additional command passed to Renode\'s simulation') 40 parser.add_argument('--renode-help', 41 default=False, 42 action='store_true', 43 help='print all possible `Renode` arguments') 44 45 @classmethod 46 def do_create(cls, cfg, args): 47 return RenodeRunner(cfg, args) 48 49 def do_run(self, command, **kwargs): 50 self.run_test(**kwargs) 51 52 def run_test(self, **kwargs): 53 cmd = ['renode'] 54 if self.renode_help is True: 55 cmd.append('--help') 56 else: 57 if self.renode_arg is not None: 58 for arg in self.renode_arg: 59 cmd.append(arg) 60 if self.renode_command is not None: 61 for command in self.renode_command: 62 cmd.append('-e') 63 cmd.append(command) 64 subprocess.run(cmd, check=True) 65