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] != '$':

Reply via email to