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


Reply via email to