74 lines
3.8 KiB
Plaintext
74 lines
3.8 KiB
Plaintext
*** Settings ***
|
|
Suite Setup Get Test Cases
|
|
|
|
*** Variables ***
|
|
${platforms_path}= ${CURDIR}${/}..${/}..${/}platforms
|
|
@{pattern}= *.repl
|
|
${invalid_using_error}= REGEXP: (?s:.)* Using 'invalid' does not exist(?s:.)*
|
|
${abstract_type_error}= REGEXP: (?s:.)* Antmicro.Renode.Peripherals.CPU.TranslationCPU is an abstract type. Try constructing one of the following concrete types: (?s:.)*
|
|
${eq}= ==
|
|
# Some repls are not standalone and need to be included by other repls with "using" syntax
|
|
# or added dynamically to the existing platform with "machine LoadPlatformDescription" command.
|
|
# We maintain the known list of such repls to exclude from a standalone testing.
|
|
# These repls are either tested indirectly as the part of other repls or by dedicated scripts.
|
|
@{blacklist}= ${platforms_path}${/}boards${/}stm32f4_discovery-additional_gpios.repl
|
|
... ${platforms_path}${/}boards${/}mars_zx3-externals.repl
|
|
... ${platforms_path}${/}boards${/}leon3-externals.repl
|
|
... ${platforms_path}${/}boards${/}tegra_externals.repl
|
|
... ${platforms_path}${/}boards${/}stm32f4_discovery-bb.repl
|
|
... ${platforms_path}${/}boards${/}zedboard-externals.repl
|
|
... ${platforms_path}${/}boards${/}vexpress-externals.repl
|
|
|
|
*** Keywords ***
|
|
Get Test Cases
|
|
Setup
|
|
|
|
&{conditional_blacklist}= Create Dictionary
|
|
... ${platforms_path}${/}cpus${/}x86-kvm.repl '{system}' ${eq} 'Linux' and '{arch}' ${eq} 'x64'
|
|
... ${platforms_path}${/}cpus${/}x86_64-kvm.repl '{system}' ${eq} 'Linux' and '{arch}' ${eq} 'x64'
|
|
... ${platforms_path}${/}cpus${/}x86_64-kvm-virtio.repl '{system}' ${eq} 'Linux' and '{arch}' ${eq} 'x64'
|
|
|
|
${system}= Evaluate platform.system() modules=platform
|
|
${arch}= Evaluate 'arm' if platform.machine() in ['aarch64', 'arm64'] else 'x64' modules=platform
|
|
# This line must use the "path" notation to handle paths with spaces
|
|
@{platforms}= List Files In Directory Recursively ${platforms_path} @{pattern}
|
|
Remove Values From List ${platforms} @{blacklist}
|
|
|
|
FOR ${platform} ${condition} IN &{conditional_blacklist}
|
|
${condition}= Replace String ${condition} {system} ${system}
|
|
${condition}= Replace String ${condition} {arch} ${arch}
|
|
IF not (${condition})
|
|
Remove Values From List ${platforms} ${platform}
|
|
END
|
|
END
|
|
|
|
${list_length}= Get Length ${platforms}
|
|
Should Not Be True ${list_length} == 0
|
|
Set Suite Variable ${platforms}
|
|
|
|
Try Load Platform
|
|
[Arguments] ${repl}
|
|
Execute Command mach create
|
|
Execute Command machine LoadPlatformDescription "${repl}"
|
|
Reset Emulation
|
|
|
|
*** Test Cases ***
|
|
Should Load Repls
|
|
# This tests uses templates as it tests every item on the list, even if a prior one failed, and produces aggregated fails summary
|
|
[Template] Try Load Platform
|
|
FOR ${test} IN @{platforms}
|
|
${test}
|
|
END
|
|
|
|
Should Gracefully Fail At Invalid Using
|
|
Execute Command mach create
|
|
Run Keyword And Expect Error ${invalid_using_error} Execute Command machine LoadPlatformDescriptionFromString "using \\"invalid\\""
|
|
|
|
Should Not Crash On Empty Platform String
|
|
Execute Command mach create
|
|
Execute Command machine LoadPlatformDescriptionFromString ""
|
|
|
|
Should Gracefully Fail At Abstract Class Construction
|
|
Execute Command mach create
|
|
Run Keyword And Expect Error ${abstract_type_error} Execute Command machine LoadPlatformDescriptionFromString "cpu: CPU.TranslationCPU {}"
|