7c084b6649
Introduce `robot` command for running Robot Framework test suites. Initial implementation consists of one runner dedicated for renode-test, which is a Renode wrapper for running Robot tests. Signed-off-by: Michał Szprejda <mszprejda@antmicro.com>
76 lines
1.9 KiB
Python
76 lines
1.9 KiB
Python
# Copyright (c) 2017 Linaro Limited.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import importlib
|
|
import logging
|
|
|
|
from runners.core import ZephyrBinaryRunner, MissingProgram
|
|
|
|
_logger = logging.getLogger('runners')
|
|
|
|
def _import_runner_module(runner_name):
|
|
try:
|
|
importlib.import_module(f'runners.{runner_name}')
|
|
except ImportError as ie:
|
|
# Runners are supposed to gracefully handle failures when they
|
|
# import anything outside of stdlib, but they sometimes do
|
|
# not. Catch ImportError to handle this.
|
|
_logger.warning(f'The module for runner "{runner_name}" '
|
|
f'could not be imported ({ie}). This most likely '
|
|
'means it is not handling its dependencies properly. '
|
|
'Please report this to the zephyr developers.')
|
|
|
|
# We import these here to ensure the ZephyrBinaryRunner subclasses are
|
|
# defined; otherwise, ZephyrBinaryRunner.get_runners() won't work.
|
|
|
|
_names = [
|
|
'blackmagicprobe',
|
|
'bossac',
|
|
'canopen_program',
|
|
'dediprog',
|
|
'dfu',
|
|
'esp32',
|
|
'ezflashcli',
|
|
'gd32isp',
|
|
'hifive1',
|
|
'intel_adsp',
|
|
'intel_cyclonev',
|
|
'jlink',
|
|
'linkserver',
|
|
'mdb',
|
|
'misc',
|
|
'native',
|
|
'nios2',
|
|
'nrfjprog',
|
|
'nrfutil',
|
|
'nsim',
|
|
'nxp_s32dbg',
|
|
'openocd',
|
|
'pyocd',
|
|
'renode',
|
|
'renode-robot',
|
|
'qemu',
|
|
'silabs_commander',
|
|
'spi_burn',
|
|
'stm32cubeprogrammer',
|
|
'stm32flash',
|
|
'teensy',
|
|
'trace32',
|
|
'uf2',
|
|
'xtensa',
|
|
# Keep this list sorted by runner name; don't add to the end.
|
|
]
|
|
|
|
for _name in _names:
|
|
_import_runner_module(_name)
|
|
|
|
def get_runner_cls(runner):
|
|
'''Get a runner's class object, given its name.'''
|
|
for cls in ZephyrBinaryRunner.get_runners():
|
|
if cls.name() == runner:
|
|
return cls
|
|
raise ValueError('unknown runner "{}"'.format(runner))
|
|
|
|
__all__ = ['ZephyrBinaryRunner', 'get_runner_cls']
|