コード例 #1
0
ファイル: test_isvar.py プロジェクト: zoeltea/robotframework
 def test_is_dict_variable(self):
     for ok in DICTS:
         assert is_dict_variable(ok)
         assert not is_dict_variable(ok + '[item]')
         assert not is_dict_variable(' ' + ok)
         assert not is_dict_variable(ok + '=')
     for nok in NOKS + SCALARS + LISTS:
         assert not is_dict_variable(nok)
コード例 #2
0
 def test_is_dict_variable(self):
     for ok in DICTS:
         assert is_dict_variable(ok)
         assert search_variable(ok).is_dict_variable()
         assert is_dict_variable(ok + '[item]')
         assert not is_dict_variable(' ' + ok)
         assert not is_dict_variable(ok + '=')
     for nok in NOKS + SCALARS + LISTS:
         assert not is_dict_variable(nok)
         assert not search_variable(nok, ignore_errors=True).is_dict_variable()
コード例 #3
0
 def _is_dict_iteration(self, values):
     for item in values:
         if is_dict_variable(item):
             return True
         if split_from_equals(item)[1] is None:
             return False
     return True
コード例 #4
0
 def validate(self, positional, named, dryrun=False):
     named = set(name for name, value in named)
     if dryrun and (any(is_list_variable(arg) for arg in positional)
                    or any(is_dict_variable(arg) for arg in named)):
         return
     self._validate_no_multiple_values(positional, named, self._argspec)
     self._validate_no_positional_only_as_named(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)
コード例 #5
0
 def resolve(self, arguments, variables=None):
     positional = []
     named = []
     for arg in arguments:
         if is_dict_variable(arg):
             named.append(arg)
         elif self._is_named(arg, named, variables):
             named.append(split_from_equals(arg))
         elif named:
             self._raise_positional_after_named()
         else:
             positional.append(arg)
     return positional, named
コード例 #6
0
 def _is_dict_iteration(self, values):
     all_name_value = True
     for item in values:
         if is_dict_variable(item):
             return True
         if split_from_equals(item)[1] is None:
             all_name_value = False
     if all_name_value:
         name, value = split_from_equals(values[0])
         logger.warn(
             "FOR loop iteration over values that are all in 'name=value' "
             "format like '%s' is deprecated. In the future this syntax "
             "will mean iterating over names and values separately like "
             "when iterating over '&{dict} variables. Escape at least one "
             "of the values like '%s\\=%s' to use normal FOR loop "
             "iteration and to disable this warning." %
             (values[0], name, value))
     return False
コード例 #7
0
 def _resolve_dict_values(self, values):
     result = OrderedDict()
     replace_scalar = self._context.variables.replace_scalar
     for item in values:
         if is_dict_variable(item):
             result.update(replace_scalar(item))
         else:
             key, value = split_from_equals(item)
             if value is None:
                 raise DataError(
                     "Invalid FOR loop value '%s'. When iterating over "
                     "dictionaries, values must be '&{dict}' variables "
                     "or use 'key=value' syntax." % item)
             try:
                 result[replace_scalar(key)] = replace_scalar(value)
             except TypeError:
                 raise DataError("Invalid dictionary item '%s': %s" %
                                 (item, get_error_message()))
     return result.items()
コード例 #8
0
 def _is_valid_dict_item(self, item):
     name, value = split_from_equals(item)
     return value is not None or is_dict_variable(item)