Revision: 4268
Author: pekka.klarck
Date: Tue Oct 26 07:13:17 2010
Log: Better error message when using extended variable syntax and variable
not found (issue 686)
http://code.google.com/p/robotframework/source/detail?r=4268
Modified:
/trunk/atest/robot/variables/list_variable_as_scalar.txt
/trunk/atest/testdata/variables/extended_variables.txt
/trunk/atest/testdata/variables/list_variable_as_scalar.txt
/trunk/src/robot/variables/variables.py
=======================================
--- /trunk/atest/robot/variables/list_variable_as_scalar.txt Tue Oct 26
06:42:29 2010
+++ /trunk/atest/robot/variables/list_variable_as_scalar.txt Tue Oct 26
07:13:17 2010
@@ -9,6 +9,9 @@
List Variable As Scalar With Extended Syntax
Check Test Case ${TESTNAME}
+
+Non-alphanumeric characters in name
+ Check Test Case ${TESTNAME}
Access and Modify List Variable With Keywords From Collections Library
Check Test Case ${TESTNAME}
=======================================
--- /trunk/atest/testdata/variables/extended_variables.txt Tue Oct 26
06:43:10 2010
+++ /trunk/atest/testdata/variables/extended_variables.txt Tue Oct 26
07:13:17 2010
@@ -61,7 +61,7 @@
Should Be Equal ${list[1]} two
Failing When Base Name Does Not Exist
- [Documentation] FAIL Non-existing variable '\${nonex.whatever}'.
+ [Documentation] FAIL Resolving variable '\${nonex.whatever}' failed:
Non-existing variable '\${nonex}'.
Log ${nonex.whatever}
Failing When Base Name Starts With Existing Variable 1
=======================================
--- /trunk/atest/testdata/variables/list_variable_as_scalar.txt Tue Oct 26
06:42:29 2010
+++ /trunk/atest/testdata/variables/list_variable_as_scalar.txt Tue Oct 26
07:13:17 2010
@@ -16,6 +16,10 @@
Should Be Equal ${LIST[0]} and ${LIST[1]} spam and eggs
Should Be Equal ${list [2] * 2} ${42}
Should Be Equal ${LIST.__len__()} ${3}
+
+Non-alphanumeric characters in name
+ @{"special" c...@rs?!} = Create List spam eggs ${21}
+ Should Be Equal ${"special" c...@rs?!} ${LIST}
Access and Modify List Variable With Keywords From Collections Library
Lists Should Be Equal ${LIST} ${SCALAR}
=======================================
--- /trunk/src/robot/variables/variables.py Fri Sep 17 00:59:49 2010
+++ /trunk/src/robot/variables/variables.py Tue Oct 26 07:13:17 2010
@@ -81,9 +81,9 @@
except KeyError:
try: return self._get_number_var(name)
except ValueError:
- try: return self._get_extended_var(name)
+ try: return self._get_list_var_as_scalar(name)
except ValueError:
- try: return self._get_list_var_as_scalar(name)
+ try: return self._get_extended_var(name)
except ValueError:
raise DataError("Non-existing variable '%s'." %
name)
@@ -104,6 +104,7 @@
raise ValueError
def _get_extended_var(self, name):
+ err_pre = "Resolving variable '%s' failed: " % name
res = self._extended_var_re.search(name)
if res is None:
raise ValueError
@@ -111,13 +112,12 @@
expression = res.group(2)
try:
variable = self['${%s}' % base_name]
- except DataError:
- raise ValueError
+ except DataError, err:
+ raise DataError(err_pre + unicode(err))
try:
return eval('_BASE_VAR_' + expression, {'_BASE_VAR_':
variable})
except:
- raise DataError("Resolving variable '%s' failed: %s"
- % (name, utils.get_error_message()))
+ raise DataError(err_pre + utils.get_error_message())
def _get_number_var(self, name):
if name[0] != '$':