5 new revisions:
Revision: 36b034734aec
Author: Pekka Klärck
Date: Wed Nov 9 06:25:27 2011
Log: Model: Moved Metadata from robot.result.model to
robot.model.metadata....
http://code.google.com/p/robotframework/source/detail?r=36b034734aec
Revision: 116c67b99d5e
Author: Pekka Klärck
Date: Wed Nov 9 06:30:42 2011
Log: cleanup
http://code.google.com/p/robotframework/source/detail?r=116c67b99d5e
Revision: ba65ca325814
Author: Pekka Klärck
Date: Wed Nov 9 06:57:01 2011
Log: setter with __slots__: Passing method name to setter mainly added
comp...
http://code.google.com/p/robotframework/source/detail?r=ba65ca325814
Revision: 10d5437cb2b4
Author: Pekka Klärck
Date: Wed Nov 9 06:59:00 2011
Log: 1) rm unused attribute, 2) better default
http://code.google.com/p/robotframework/source/detail?r=10d5437cb2b4
Revision: aac366af31ed
Author: Pekka Klärck
Date: Wed Nov 9 07:02:38 2011
Log: Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=aac366af31ed
==============================================================================
Revision: 36b034734aec
Author: Pekka Klärck
Date: Wed Nov 9 06:25:27 2011
Log: Model: Moved Metadata from robot.result.model to
robot.model.metadata. Also changed __str__ to always return ASCII.
http://code.google.com/p/robotframework/source/detail?r=36b034734aec
Added:
/src/robot/model/metadata.py
/utest/model/test_metadata.py
Modified:
/src/robot/result/model.py
/utest/result/test_resultmodel.py
=======================================
--- /dev/null
+++ /src/robot/model/metadata.py Wed Nov 9 06:25:27 2011
@@ -0,0 +1,27 @@
+# Copyright 2008-2011 Nokia Siemens Networks Oyj
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from robot.utils import NormalizedDict
+
+
+class Metadata(NormalizedDict):
+
+ def __init__(self, initial=None):
+ NormalizedDict.__init__(self, initial, ignore=['_'])
+
+ def __unicode__(self):
+ return u'{%s}' % ', '.join('%s: %s' % (k, self[k]) for k in self)
+
+ def __str__(self):
+ return unicode(self).encode('ASCII', 'replace')
=======================================
--- /dev/null
+++ /utest/model/test_metadata.py Wed Nov 9 06:25:27 2011
@@ -0,0 +1,25 @@
+import unittest
+
+from robot.utils.asserts import assert_equal
+from robot.model.metadata import Metadata
+
+
+class TestMetadata(unittest.TestCase):
+
+ def test_normalizetion(self):
+ md = Metadata([('m1', 1), ('M2', 1), ('m_3', 1), ('M1', 2), ('M
3', 2)])
+ assert_equal(dict(md), {'m1': 2, 'M2': 1, 'm_3': 2})
+
+ def test_unicode(self):
+ assert_equal(unicode(Metadata()), u'{}')
+ d = {'a': 1, 'B': 'two', u'\xe4': u'nelj\xe4'}
+ assert_equal(unicode(Metadata(d)), u'{a: 1, B: two, \xe4:
nelj\xe4}')
+
+ def test_str(self):
+ assert_equal(str(Metadata()), '{}')
+ d = {'a': 1, 'B': 'two', u'\xe4': u'nelj\xe4'}
+ assert_equal(str(Metadata(d)), '{a: 1, B: two, ?: nelj?}')
+
+
+if __name__ == '__main__':
+ unittest.main()
=======================================
--- /src/robot/result/model.py Wed Nov 9 05:17:29 2011
+++ /src/robot/result/model.py Wed Nov 9 06:25:27 2011
@@ -16,6 +16,7 @@
from robot.output.loggerhelper import Message as BaseMessage
from robot import utils
from robot.model import Tags, Critical
+from robot.model.metadata import Metadata # TODO: Shouldn't be needed in
the long run
from tagsetter import TagSetter
from filter import Filter, MessageFilter
@@ -442,15 +443,3 @@
for kw in self:
if kw.type in ('kw', 'for', 'foritem'):
yield kw
-
-
-class Metadata(utils.NormalizedDict):
-
- def __init__(self, initial=None):
- utils.NormalizedDict.__init__(self, initial, ignore=['_'])
-
- def __unicode__(self):
- return u'{%s}' % ', '.join('%s: %s' % (k, self[k]) for k in self)
-
- def __str__(self):
- return unicode(self).encode('UTF-8')
=======================================
--- /utest/result/test_resultmodel.py Wed Nov 9 05:17:22 2011
+++ /utest/result/test_resultmodel.py Wed Nov 9 06:25:27 2011
@@ -309,17 +309,5 @@
assert_equal(list(Keywords(kws).normal), kws[1:-1])
-class TestMetadata(unittest.TestCase):
-
- def test_normalizetion(self):
- md = Metadata([('m1', 1), ('M2', 1), ('m_3', 1), ('M1', 2), ('M
3', 2)])
- assert_equal(dict(md), {'m1': 2, 'M2': 1, 'm_3': 2})
-
- def test_unicode(self):
- assert_equal(unicode(Metadata()), '{}')
- d = {'a': 1, 'B': 'two', u'\xe4': u'nelj\xe4'}
- assert_equal(unicode(Metadata(d)), u'{a: 1, B: two, \xe4:
nelj\xe4}')
-
-
if __name__ == '__main__':
unittest.main()
==============================================================================
Revision: 116c67b99d5e
Author: Pekka Klärck
Date: Wed Nov 9 06:30:42 2011
Log: cleanup
http://code.google.com/p/robotframework/source/detail?r=116c67b99d5e
Modified:
/src/robot/result/model.py
=======================================
--- /src/robot/result/model.py Wed Nov 9 06:25:27 2011
+++ /src/robot/result/model.py Wed Nov 9 06:30:42 2011
@@ -47,7 +47,8 @@
self.should_return_status_rc = status_rc
SuiteConfigurer(**suite_opts).configure(self.suite)
- def configure_statistics(self, *stat_opts): #TODO: use **kwargs
+ # TODO: 1) Use **kwargs. 2) Combine with configure?
+ def configure_statistics(self, *stat_opts):
self._stat_opts = stat_opts
def visit(self, visitor):
@@ -82,11 +83,8 @@
class TestSuite(object):
- __slots__ = ['parent', 'source', '_name', 'doc',
- 'message', 'starttime', 'endtime', '_critical',
- '_metadata',
- '_keywords',
- '_suites',
+ __slots__ =
['parent', 'source', '_name', 'doc', 'message', 'starttime',
+ 'endtime', '_critical', '_metadata', '_keywords', '_suites',
'_tests']
def __init__(self, source='', name='', doc='', metadata=None):
@@ -226,9 +224,7 @@
class TestCase(object):
__slots__ = ['parent', 'name', 'doc', 'status', 'message', 'timeout',
- 'starttime', 'endtime', '_critical',
- '_tags',
- '_keywords']
+ 'starttime', 'endtime', '_critical', '_tags', '_keywords']
def __init__(self, name='', doc='', tags=None, status='UNDEFINED',
timeout='', starttime='N/A', endtime='N/A'):
@@ -295,12 +291,9 @@
class Keyword(object):
__slots__ = ['parent', 'name', 'doc', 'args', 'type', 'status',
- 'starttime', 'endtime', 'timeout',
- '_messages',
- '_keywords']
-
-
- def __init__(self, name='', doc='', type='kw', status='UNDEFINED',
timeout=''):
+ 'starttime', 'endtime', 'timeout', '_messages', '_keywords']
+
+ def __init__(self, name='', doc='', type='kw', status='FAIL',
timeout=''):
self.parent = None
self.name = name
self.doc = doc
==============================================================================
Revision: ba65ca325814
Author: Pekka Klärck
Date: Wed Nov 9 06:57:01 2011
Log: setter with __slots__: Passing method name to setter mainly added
complexity in both sides. Now setter always stores attribute in
obj._setter__methodname attribute. If slots are used, this 'secret'
attribute needs to be included in it. Adding secret attributes
automatically to slots using a metaclass would be possible, though.
http://code.google.com/p/robotframework/source/detail?r=ba65ca325814
Modified:
/src/robot/output/loggerhelper.py
/src/robot/result/model.py
/src/robot/utils/setter.py
=======================================
--- /src/robot/output/loggerhelper.py Wed Nov 9 03:03:39 2011
+++ /src/robot/output/loggerhelper.py Wed Nov 9 06:57:01 2011
@@ -62,8 +62,7 @@
class Message(object):
- __slots__ = ['level', 'html', 'timestamp', 'linkable',
- '_message']
+ __slots__ =
['level', 'html', 'timestamp', 'linkable', '_setter__message']
def __init__(self, message, level='INFO', html=False, timestamp=None,
linkable=False):
@@ -72,7 +71,7 @@
self.timestamp = self._get_timestamp(timestamp)
self.linkable = linkable
- @utils.setter('_message')
+ @utils.setter
def message(self, msg):
if not isinstance(msg, basestring):
msg = utils.unic(msg)
=======================================
--- /src/robot/result/model.py Wed Nov 9 06:30:42 2011
+++ /src/robot/result/model.py Wed Nov 9 06:57:01 2011
@@ -84,8 +84,8 @@
class TestSuite(object):
__slots__ =
['parent', 'source', '_name', 'doc', 'message', 'starttime',
- 'endtime', '_critical', '_metadata', '_keywords', '_suites',
- '_tests']
+ 'endtime', '_critical', '_setter__metadata',
'_setter__suites',
+ '_setter__tests', '_setter__keywords']
def __init__(self, source='', name='', doc='', metadata=None):
self.parent = None
@@ -125,19 +125,19 @@
self._critical = Critical()
return self._critical
- @utils.setter('_metadata')
+ @utils.setter
def metadata(self, metadata):
return Metadata(metadata)
- @utils.setter('_suites')
+ @utils.setter
def suites(self, suites):
return ItemList(TestSuite, suites, parent=self)
- @utils.setter('_tests')
+ @utils.setter
def tests(self, tests):
return ItemList(TestCase, tests, parent=self)
- @utils.setter('_keywords')
+ @utils.setter
def keywords(self, keywords):
return Keywords(keywords, parent=self)
@@ -224,7 +224,8 @@
class TestCase(object):
__slots__ = ['parent', 'name', 'doc', 'status', 'message', 'timeout',
- 'starttime', 'endtime', '_critical', '_tags', '_keywords']
+ 'starttime', 'endtime', '_critical', '_setter__tags',
+ '_setter__keywords']
def __init__(self, name='', doc='', tags=None, status='UNDEFINED',
timeout='', starttime='N/A', endtime='N/A'):
@@ -240,11 +241,11 @@
self.endtime = endtime
self._critical = 'yes'
- @utils.setter('_tags')
+ @utils.setter
def tags(self, tags):
return Tags(tags)
- @utils.setter('_keywords')
+ @utils.setter
def keywords(self, keywords):
return Keywords(keywords, parent=self)
@@ -290,8 +291,8 @@
class Keyword(object):
- __slots__ = ['parent', 'name', 'doc', 'args', 'type', 'status',
- 'starttime', 'endtime', 'timeout', '_messages', '_keywords']
+ __slots__ =
['parent', 'name', 'doc', 'args', 'type', 'status', 'starttime',
+ 'endtime', 'timeout', '_setter__messages',
'_setter__keywords']
def __init__(self, name='', doc='', type='kw', status='FAIL',
timeout=''):
self.parent = None
@@ -306,11 +307,11 @@
self.endtime = ''
self.timeout = timeout
- @utils.setter('_keywords')
+ @utils.setter
def keywords(self, keywords):
return Keywords(keywords, parent=self)
- @utils.setter('_messages')
+ @utils.setter
def messages(self, messages):
return ItemList(Message, messages)
=======================================
--- /src/robot/utils/setter.py Wed Nov 9 03:03:39 2011
+++ /src/robot/utils/setter.py Wed Nov 9 06:57:01 2011
@@ -15,17 +15,9 @@
class setter(object):
- def __init__(self, method_or_attr):
- if isinstance(method_or_attr, basestring):
- self.attr_name = method_or_attr
- self.method = None
- else:
- self.attr_name = '___' + method_or_attr.__name__
- self.method = method_or_attr
-
- def __call__(self, method):
+ def __init__(self, method):
self.method = method
- return self
+ self.attr_name = '_setter__' + method.__name__
def __get__(self, instance, owner):
if instance is None:
==============================================================================
Revision: 10d5437cb2b4
Author: Pekka Klärck
Date: Wed Nov 9 06:59:00 2011
Log: 1) rm unused attribute, 2) better default
http://code.google.com/p/robotframework/source/detail?r=10d5437cb2b4
Modified:
/src/robot/result/model.py
=======================================
--- /src/robot/result/model.py Wed Nov 9 06:57:01 2011
+++ /src/robot/result/model.py Wed Nov 9 06:59:00 2011
@@ -224,10 +224,9 @@
class TestCase(object):
__slots__ = ['parent', 'name', 'doc', 'status', 'message', 'timeout',
- 'starttime', 'endtime', '_critical', '_setter__tags',
- '_setter__keywords']
-
- def __init__(self, name='', doc='', tags=None, status='UNDEFINED',
+ 'starttime', 'endtime', '_setter__tags', '_setter__keywords']
+
+ def __init__(self, name='', doc='', tags=None, status='FAIL',
timeout='', starttime='N/A', endtime='N/A'):
self.parent = None
self.name = name
@@ -239,7 +238,6 @@
self.keywords = []
self.starttime = starttime
self.endtime = endtime
- self._critical = 'yes'
@utils.setter
def tags(self, tags):
==============================================================================
Revision: aac366af31ed
Author: Pekka Klärck
Date: Wed Nov 9 07:02:38 2011
Log: Automated merge with https://code.google.com/p/robotframework/
http://code.google.com/p/robotframework/source/detail?r=aac366af31ed