1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-15 19:12:44 +01:00
RIOT/dist/pythonlibs/riotctrl_shell/tests/common.py
Martine S. Lenders 637c673e6a
riotctrl_shell.tests: rewrite Mock to detect missing check_term
`check_term` calls `run_term` of the `ctrl` if necessary.
2020-07-08 15:31:48 +02:00

62 lines
1.6 KiB
Python

# Copyright (C) 2020 Freie Universität Berlin
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
import contextlib
class MockSpawn():
def __init__(self, ctrl, *args, **kwargs):
self.ctrl = ctrl
self.last_command = None
# set some expected attributes
self.before = None
self.echo = False
def sendline(self, line, *args, **kwargs):
self.last_command = line
if self.ctrl.output is None:
# just echo last input for before (what replwrap is assembling
# output from)
self.before = line
else:
# use pre-configured output in case command expects a specific
# output
self.before = self.ctrl.output
def expect_exact(self, *args, **kwargs):
# always match on prompt with replwrap
return 0
class MockRIOTCtrl():
"""
Mock RIOT ctrl
"""
def __init__(self, *args, **kwargs):
self.term = None
self.output = None
self.last_command = None
@contextlib.contextmanager
def run_term(self, reset=True, **startkwargs):
try:
self.start_term(**startkwargs)
yield self.term
finally:
self.stop_term()
def start_term(self, **spawnkwargs):
self.term = MockSpawn(self)
def stop_term(self):
pass
def init_ctrl(output=None):
rc = MockRIOTCtrl("foobar", env={"BOARD": "native"})
rc.output = output
return rc