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()