Revision: 2945
Author: janne.t.harkonen
Date: Tue Apr 13 01:01:19 2010
Log: almost got it working...
http://code.google.com/p/robotframework/source/detail?r=2945

Modified:
 /trunk/src/robot/running/arguments.py

=======================================
--- /trunk/src/robot/running/arguments.py       Mon Apr 12 05:25:46 2010
+++ /trunk/src/robot/running/arguments.py       Tue Apr 13 01:01:19 2010
@@ -201,17 +201,11 @@

     def set_to(self, variables, arguments):
         template_with_defaults = self._template_for(variables)
- template, positional, named = self._fill(template_with_defaults, arguments) + template, positional, named = self._fill(template_with_defaults, arguments, variables)
         self._check_missing_args(template, len(arguments))
         self.check_arg_limits(template)
         self._set_variables(variables, template)
-        return self._resolve_variables(positional, named, variables)
-
-    def _resolve_variables(self, positional, named, variables):
-        posargs = variables.replace_list(positional)
-        for name, value in named.items():
-            named[name] = variables.replace_scalar(value)
-        return posargs, named
+        return template, named

     def _check_missing_args(self, template, arg_count):
         for a in template:
@@ -220,21 +214,23 @@

     def _template_for(self, variables):
return [ _MissingArg() for _ in range(len(self.names)-len(self.defaults)) ] \
-                + list(self.defaults)
+                + variables.replace_list(list(self.defaults))

     def _set_variables(self, variables, arg_values):
         if self._vararg:
- variables[self._vararg] = variables.replace_list(self._get_varargs(arg_values))
+            variables[self._vararg] = self._get_varargs(arg_values)
             arg_values = arg_values[:len(self.names)]
         for name, value in zip(self.names, arg_values):
-            variables[name] = variables.replace_scalar(value)
-
-    def _fill(self, template, arguments):
-        varargs = arguments[len(template):]
+            variables[name] = value
+
+    def _fill(self, template, arguments, variables):
         arg_resolver = UserKeywordArgumentResolver(self)
-        positional, named = arg_resolver.resolve(arguments[:len(template)])
+        positional, named = arg_resolver.resolve(arguments)
+        positional = variables.replace_list(positional)
+        varargs = positional[len(self.names):]
+        positional = positional[:len(self.names)]
         for name, value in named.items():
-            template[self.names.index(name)] = value
+ template[self.names.index(name)] = variables.replace_scalar(value)
         for index, value in enumerate(positional):
             template[index] = value
         return template + varargs, positional, named

Reply via email to