Revision: 4003
Author: jprantan
Date: Tue Aug 31 04:06:38 2010
Log: Fixed showing multiple warnings from one deprecation, issue 636.
http://code.google.com/p/robotframework/source/detail?r=4003

Modified:
 /trunk/src/robot/running/namespace.py
 /trunk/src/robot/variables/variables.py

=======================================
--- /trunk/src/robot/running/namespace.py       Tue Aug 31 02:26:24 2010
+++ /trunk/src/robot/running/namespace.py       Tue Aug 31 04:06:38 2010
@@ -452,22 +452,22 @@
         self.current = self._uk_handlers.pop()

     def set_global(self, name, value):
-        GLOBAL_VARIABLES[name] = value
+        GLOBAL_VARIABLES.__setitem__(name, value, depr_warning=False)
         for ns in robot.running.NAMESPACES:
             ns.variables.set_suite(name, value)

     def set_suite(self, name, value):
-        self._suite[name] = value
+        self._suite.__setitem__(name, value, depr_warning=False)
         self.set_test(name, value, False)

     def set_test(self, name, value, fail_if_no_test=True):
         if self._test is not None:
-            self._test[name] = value
+            self._test.__setitem__(name, value, depr_warning=False)
         elif fail_if_no_test:
raise DataError("Cannot set test variable when no test is started")
         for varz in self._uk_handlers:
-            varz[name] = value
- self.current[name] = value # latest uk handler is not in self._uk_handlers
+            varz.__setitem__(name, value, depr_warning=False)
+        self.current.__setitem__(name, value, depr_warning=True)

     def keys(self):
         return self.current.keys()
=======================================
--- /trunk/src/robot/variables/variables.py     Tue Aug 31 02:27:07 2010
+++ /trunk/src/robot/variables/variables.py     Tue Aug 31 04:06:38 2010
@@ -46,16 +46,19 @@
         utils.NormalizedDict.__init__(self, ignore=['_'])
         self._identifiers = identifiers

-    def __setitem__(self, name, value, path=None):
+    def __setitem__(self, name, value, path=None, depr_warning=True):
         if not is_var(name):
             raise DataError("Invalid variable name '%s'." % name)
-        self._deprecation_warning_if_basename_already_used(name, path)
+        if depr_warning:
+            self._deprecation_warning_if_basename_already_used(name, path)
         utils.NormalizedDict.__setitem__(self, name, value)

     def _deprecation_warning_if_basename_already_used(self, name, path):
         other = ('@' if name[0] == '$' else '$') + name[1:]
-        if not utils.NormalizedDict.__contains__(self, other):
-            return
+        if utils.NormalizedDict.__contains__(self, other):
+            self._log_warning_when_basename_already_used(name, other, path)
+
+    def _log_warning_when_basename_already_used(self, name, other, path):
         msg = ("Using same base name with scalar and list variables is "
"deprecated. Please change either '%s' or '%s'") % (name, other)
         if path:

Reply via email to