Skip to content

Commit

Permalink
tests: Add rust-as-a-module test
Browse files Browse the repository at this point in the history
Taken and simplified from shell test.
  • Loading branch information
chrysn committed Jan 12, 2022
1 parent 572375c commit d1338f8
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 0 deletions.
13 changes: 13 additions & 0 deletions tests/rust_libs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
include ../Makefile.tests_common

USEMODULE += shell
USEMODULE += shell_commands
USEMODULE += rust_module_examples_shell_commands

FEATURES_REQUIRED += rust_target

# Currently unknown, something related to the LED_PORT definition that doesn't
# pass C2Rust's transpilation
BOARD_BLACKLIST := ek-lm4f120xl

include $(RIOTBASE)/Makefile.include
1 change: 1 addition & 0 deletions tests/rust_libs/main.c
68 changes: 68 additions & 0 deletions tests/rust_libs/tests/01-run.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/usr/bin/env python3

# Copyright (C) 2017 Alexandre Abadie <[email protected]>
# 2022 Christian Amsüss <[email protected]>
#
# 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 sys
import os
from testrunner import run


EXPECTED_HELP = (
'Command Description',
'---------------------------------------',
'bufsize Get the shell\'s buffer size',
'start_test starts a test',
'end_test ends a test',
'echo prints the input command',
'empty print nothing on command',
'reboot Reboot the node',
'version Prints current RIOT_VERSION',
'pm interact with layered PM subsystem',
# That's what we're here for, the rest is what happens to be configured in
# the shell test this is derived from
'ps.rs List the processes',
'xfa_test1 xfa test command 1',
'xfa_test2 xfa test command 2',
)

EXPECTED_PSRS = (
'pri 7.*Running',
)

PROMPT = '> '

CMDS = (
('start_test', '[TEST_START]'),

# test default commands
('help', EXPECTED_HELP),
('ps.rs', EXPECTED_PSRS),

('end_test', '[TEST_END]'),
)

CMDS_REGEX = {'ps.rs'}

def check_cmd(child, cmd, expected):
regex = cmd in CMDS_REGEX
child.expect(PROMPT)
child.sendline(cmd)
for line in expected:
if regex:
child.expect(line)
else:
child.expect_exact(line)

def testfunc(child):
# loop other defined commands and expected output
for cmd, expected in CMDS:
check_cmd(child, cmd, expected)


if __name__ == "__main__":
sys.exit(run(testfunc))

0 comments on commit d1338f8

Please sign in to comment.