def test_is_list_variable(self): for ok in LISTS: assert is_list_variable(ok) assert not is_list_variable(ok + '[item]') assert not is_list_variable(' ' + ok) assert not is_list_variable(ok + '=') for nok in NOKS + SCALARS + DICTS: assert not is_list_variable(nok)
def test_is_list_variable(self): for ok in LISTS: assert is_list_variable(ok) assert search_variable(ok).is_list_variable() assert is_list_variable(ok + '[item]') assert not is_list_variable(' ' + ok) assert not is_list_variable(ok + '=') for nok in NOKS + SCALARS + DICTS: assert not is_list_variable(nok) assert not search_variable(nok, ignore_errors=True).is_list_variable()
def validate(self, positional, named, dryrun=False): if dryrun and any(is_list_variable(arg) for arg in positional): return named = set(name for name, value in named) self._validate_no_multiple_values(positional, named, self._argspec) self._validate_positional_limits(positional, named, self._argspec) self._validate_no_mandatory_missing(positional, named, self._argspec) self._validate_no_named_only_missing(named, self._argspec) self._validate_no_extra_named(named, self._argspec)
def _split_run_kw_if_args(self, given_args, control_word, required_after): index = list(given_args).index(control_word) expr_and_call = given_args[:index] remaining = given_args[index + 1:] if not (self._validate_kw_call(expr_and_call) and self._validate_kw_call(remaining, required_after)): raise DataError("Invalid 'Run Keyword If' usage.") if is_list_variable(expr_and_call[0]): return (), remaining return expr_and_call[1:], remaining
def _get_run_kw_if_calls(self, given_args): while 'ELSE IF' in given_args: kw_call, given_args = self._split_run_kw_if_args(given_args, 'ELSE IF', 2) yield kw_call if 'ELSE' in given_args: kw_call, else_call = self._split_run_kw_if_args(given_args, 'ELSE', 1) yield kw_call yield else_call elif self._validate_kw_call(given_args): expr, kw_call = given_args[0], given_args[1:] if not is_list_variable(expr): yield kw_call
def _get_return_value(self, variables, return_): ret = self._handler.return_value if not return_ else return_.return_value if not ret: return None contains_list_var = any(is_list_variable(item) for item in ret) try: ret = variables.replace_list(ret) except DataError as err: raise VariableError('Replacing variables from keyword return ' 'value failed: %s' % err.message) if len(ret) != 1 or contains_list_var: return ret return ret[0]
def _validate_kw_call(self, kw_call, min_length=2): if len(kw_call) >= min_length: return True return any(is_list_variable(item) for item in kw_call)