1*** Settings ***
2Suite Setup                   Get Test Cases
3
4*** Variables ***
5${platforms_path}=            ${CURDIR}${/}..${/}..${/}platforms
6@{pattern}=                   *.repl
7# Some repls are not standalone and need to be included by other repls with "using" syntax
8# or added dynamically to the existing platform with "machine LoadPlatformDescription" command.
9# We maintain the known list of such repls to exclude from a standalone testing.
10# These repls are either tested indirectly as the part of other repls or by dedicated scripts.
11@{blacklist}=                 ${platforms_path}${/}boards${/}stm32f4_discovery-additional_gpios.repl
12...                           ${platforms_path}${/}boards${/}mars_zx3-externals.repl
13...                           ${platforms_path}${/}boards${/}leon3-externals.repl
14...                           ${platforms_path}${/}boards${/}tegra_externals.repl
15...                           ${platforms_path}${/}boards${/}stm32f4_discovery-bb.repl
16...                           ${platforms_path}${/}boards${/}zedboard-externals.repl
17...                           ${platforms_path}${/}boards${/}vexpress-externals.repl
18
19*** Keywords ***
20Get Test Cases
21    Setup
22    # This line must use the "path" notation to handle paths with spaces
23    @{platforms}=             List Files In Directory Recursively  ${platforms_path}  @{pattern}
24    Remove Values From List   ${platforms}  @{blacklist}
25    ${list_length}=           Get Length  ${platforms}
26    Should Not Be True        ${list_length} == 0
27    Set Suite Variable        ${platforms}
28
29Try Load Platform
30    [Arguments]               ${repl}
31    Execute Command           mach create
32    Execute Command           machine LoadPlatformDescription "${repl}"
33    Reset Emulation
34
35*** Test Cases ***
36Should Load Repls
37    # This tests uses templates as it tests every item on the list, even if a prior one failed, and produces aggregated fails summary
38    [Template]  Try Load Platform
39    FOR  ${test}  IN  @{platforms}
40        ${test}
41    END
42