84 lines
4.2 KiB
Plaintext
84 lines
4.2 KiB
Plaintext
*** Test Cases ***
|
|
Should Fail On Loading Nonexisting Script
|
|
${msg}= Run Keyword And Expect Error * Execute Script nonexistingscript.resc
|
|
Should Contain ${msg} Could not find file
|
|
|
|
Should Fail On Builtin With Invalid Parameters
|
|
${msg}= Run Keyword And Expect Error * Execute Command log invalid_commmand
|
|
Should Contain ${msg} Bad parameters for command
|
|
|
|
Should Fail On Peripheral Method With Invalid Parameters
|
|
${msg}= Run Keyword And Expect Error * Execute Command Save invalid_value
|
|
Should Contain ${msg} Parameters did not match the signature
|
|
|
|
Should Fail On Python Command With Invalid Parameters
|
|
${msg}= Run Keyword And Expect Error * Execute Command next_value "invalid_value"
|
|
Should Contain ${msg} unsupported operand type
|
|
|
|
Should Fail On Command Error
|
|
${msg}= Run Keyword And Expect Error * Execute Command include @nonexistingfile
|
|
Should Contain ${msg} File does not exist
|
|
|
|
Should Allow Passing Python Float As Float Argument
|
|
${flt}= Evaluate float(1)
|
|
Create Log Tester ${flt}
|
|
|
|
Should Allow Passing Python Int As Float Argument
|
|
${flt}= Evaluate int(1)
|
|
Create Log Tester ${flt}
|
|
|
|
Should Allow Passing Python String As Argument
|
|
# This is also what happens when for example `Create Log Tester 1` is used
|
|
# (so in the typical case)
|
|
${str}= Evaluate str(1)
|
|
Create Log Tester ${str}
|
|
|
|
Should Return Python Int
|
|
${res}= Execute Python 1 + 2
|
|
# This doesn't really get the type of the returned value, but rather the type of the
|
|
# result of evaluating `type(<returned value as a string>)`. There doesn't seem to be
|
|
# a way to get the type of a variable itself without this stringifying and evaluation
|
|
${type}= Evaluate type(${res}).__name__
|
|
Should Be Equal ${type} int
|
|
Should Be Equal ${res} ${3}
|
|
|
|
Should Return Python String
|
|
${res}= Execute Python "{}bcd".format("a")
|
|
${type}= Evaluate type("${res}").__name__
|
|
Should Be Equal ${type} str
|
|
Should Be Equal ${res} abcd
|
|
|
|
Should Return Python List
|
|
${expected}= Create List ${0} ${1} ${2} ${3} ${4}
|
|
${res}= Execute Python list(range(5))
|
|
Lists Should Be Equal ${res} ${expected}
|
|
|
|
Should Propagate Python Exception
|
|
Run Keyword And Expect Error ValueErrorException* Execute Python raise ValueError()
|
|
|
|
Should Fail On Python Syntax Error
|
|
Run Keyword And Expect Error SyntaxErrorException* Execute Python "a
|
|
|
|
Should Trigger Timeout Handling
|
|
[Tags] timeout_expected skip_windows
|
|
[Timeout] 3 seconds
|
|
Create Log Tester 0
|
|
Execute Command using sysbus
|
|
Execute Command mach create
|
|
Execute Command machine LoadPlatformDescriptionFromString "cpu: CPU.ARMv7A @ sysbus { cpuType: \\"cortex-a9\\"}"
|
|
Execute Command machine LoadPlatformDescriptionFromString "mem: Memory.MappedMemory @ sysbus 0x0 { size: 0x1000 }"
|
|
|
|
# Let's set a Python variable to check in the next test that Renode was restarted when handling the timeout.
|
|
Execute Command python 'timeout_test_executed = True'
|
|
|
|
# 0x0 opcode is NOP in A32 so everything's fine as long as PC doesn't leave `mem`.
|
|
Execute Command cpu AddHook 0xFFC "import time; time.sleep(10)"
|
|
Execute Command emulation RunFor '0.1'
|
|
|
|
# This shouldn't be available because it's only set in the test which times out.
|
|
# Timeout handling should restart Renode so this variable shouldn't be available.
|
|
Should Run On Renode Restarted By Timeout Handling
|
|
[Tags] skip_windows
|
|
Run Keyword And Expect Error *'timeout_test_executed' is not defined*
|
|
... Execute Command python 'print timeout_test_executed'
|