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: