Revision: 2280
Author: laukpe
Date: Fri Sep 18 11:37:07 2009
Log: Support for internal variables with Set Test/Suite/Global Variable (issue 397)
http://code.google.com/p/robotframework/source/detail?r=2280

Modified:
 /trunk/src/robot/libraries/BuiltIn.py

=======================================
--- /trunk/src/robot/libraries/BuiltIn.py       Wed Aug 12 04:50:13 2009
+++ /trunk/src/robot/libraries/BuiltIn.py       Fri Sep 18 11:37:07 2009
@@ -696,26 +696,30 @@
         name = self._resolve_possible_variable(orig)
         try:
             return self._unescape_variable_if_needed(name)
-        except DataError:
+        except ValueError:
             raise DataError("Invalid variable syntax '%s'" % orig)

     def _resolve_possible_variable(self, name):
         try:
             resolved = self._get_variables()[name]
             return self._unescape_variable_if_needed(resolved)
-        except (KeyError, DataError):
+        except (KeyError, ValueError, DataError):
             return name

     def _unescape_variable_if_needed(self, name):
-        if not (utils.is_str(name) and name):
-            raise DataError
+        if not (utils.is_str(name) and len(name) > 1):
+            raise ValueError
         if name.startswith('\\'):
             name = name[1:]
-        elif name[0] in ['$','@'] and '{' not in name:
-            name = name[0] + '{' + name[1:] + '}'
-        if not is_var(name):
-            raise DataError
-        return name
+        elif name[0] in ['$','@'] and name[1] != '{':
+            name = '%s{%s}' % (name[0], name[1:])
+        if is_var(name):
+            return name
+        # Support for possible internal variables (issue 397)
+        name = '%s{%s}' % (name[0], self.replace_variables(name[2:-1]))
+        if is_var(name):
+            return name
+        raise ValueError

     def _get_var_value(self, name, values):
         variables = self._get_variables()

Reply via email to