Commit d3b8b8d9 authored by Gerard Marull-Paretas's avatar Gerard Marull-Paretas Committed by Carles Cufi
Browse files

twister: improve diagnostics for 'any' set/list types



Since pykwalify does not support multi-type fields, we are forced to use
the 'any' type. This is used for fields that allow sets/lists written as
either YAML lists or space-separated strings. This patch checks for
str/list Python type, and raises a configuration error if not true so
that user obtains better error messages in case the configuration file
contains invalid format.

Signed-off-by: default avatarGerard Marull-Paretas <gerard.marull@nordicsemi.no>
parent 560a7217
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -106,23 +106,29 @@ class TwisterConfigParser:
        elif typestr == "bool":
            return value

        elif typestr.startswith("list") and isinstance(value, list):
        elif typestr.startswith("list"):
            if isinstance(value, list):
                return value
        elif typestr.startswith("list") and isinstance(value, str):
            elif isinstance(value, str):
                vs = v.split()
                if len(typestr) > 4 and typestr[4] == ":":
                    return [self._cast_value(vsi, typestr[5:]) for vsi in vs]
                else:
                    return vs
            else:
                raise ValueError

        elif typestr.startswith("set") and isinstance(value, list):
        elif typestr.startswith("set"):
            if isinstance(value, list):
                return set(value)
        elif typestr.startswith("set") and isinstance(value, str):
            elif isinstance(value, str):
                vs = v.split()
                if len(typestr) > 3 and typestr[3] == ":":
                    return {self._cast_value(vsi, typestr[4:]) for vsi in vs}
                else:
                    return set(vs)
            else:
                raise ValueError

        elif typestr.startswith("map"):
            return value