9 new revisions:

Revision: af732246a97a
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 03:03:39 2011
Log:      utils.setter with attribute name
http://code.google.com/p/robotframework/source/detail?r=af732246a97a

Revision: 88dd69093419
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 03:50:22 2011
Log:      TestCase status message
http://code.google.com/p/robotframework/source/detail?r=88dd69093419

Revision: bd6401754143
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 03:55:53 2011
Log:      Suite status message
http://code.google.com/p/robotframework/source/detail?r=bd6401754143

Revision: 1bf42dfe3ed2
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:20:44 2011
Log:      Fix suite stat
http://code.google.com/p/robotframework/source/detail?r=1bf42dfe3ed2

Revision: e841faa8c75f
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:21:43 2011
Log:      Integrate new json to rebot
http://code.google.com/p/robotframework/source/detail?r=e841faa8c75f

Revision: d5692cec328e
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:47:10 2011
Log:      DatamodelVisitor: Enable split_log option setting
http://code.google.com/p/robotframework/source/detail?r=d5692cec328e

Revision: 4120f8d555d7
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:49:34 2011
Log:      Support split log and log rename
http://code.google.com/p/robotframework/source/detail?r=4120f8d555d7

Revision: 8696df6e5837
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:59:48 2011
Log:      Use new rebot model
http://code.google.com/p/robotframework/source/detail?r=8696df6e5837

Revision: b5e739db16ad
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 05:02:34 2011
Log:      merge
http://code.google.com/p/robotframework/source/detail?r=b5e739db16ad

==============================================================================
Revision: af732246a97a
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 03:03:39 2011
Log:      utils.setter with attribute name
http://code.google.com/p/robotframework/source/detail?r=af732246a97a

Modified:
 /src/robot/output/loggerhelper.py
 /src/robot/result/model.py
 /src/robot/utils/setter.py

=======================================
--- /src/robot/output/loggerhelper.py   Wed Nov  9 01:16:33 2011
+++ /src/robot/output/loggerhelper.py   Wed Nov  9 03:03:39 2011
@@ -63,7 +63,7 @@

 class Message(object):
     __slots__ = ['level', 'html', 'timestamp', 'linkable',
-                 '_setter_message_value']
+                 '_message']

     def __init__(self, message, level='INFO', html=False, timestamp=None,
                  linkable=False):
@@ -72,7 +72,7 @@
         self.timestamp = self._get_timestamp(timestamp)
         self.linkable = linkable

-    @utils.setter
+    @utils.setter('_message')
     def message(self, msg):
         if not isinstance(msg, basestring):
             msg = utils.unic(msg)
=======================================
--- /src/robot/result/model.py  Wed Nov  9 01:30:24 2011
+++ /src/robot/result/model.py  Wed Nov  9 03:03:39 2011
@@ -83,10 +83,10 @@
 class TestSuite(object):
     __slots__ = ['parent', 'source', '_name', 'doc',
                  'message', 'starttime', 'endtime', '_critical',
-                 '_setter_metadata_value',
-                 '_setter_keywords_value',
-                 '_setter_suites_value',
-                 '_setter_tests_value']
+                 '_metadata',
+                 '_keywords',
+                 '_suites',
+                 '_tests']

     def __init__(self, source='', name='', doc='', metadata=None):
         self.parent = None
@@ -126,19 +126,19 @@
             self._critical = Critical()
         return self._critical

-    @utils.setter
+    @utils.setter('_metadata')
     def metadata(self, metadata):
         return Metadata(metadata)

-    @utils.setter
+    @utils.setter('_suites')
     def suites(self, suites):
         return ItemList(TestSuite, suites, parent=self)

-    @utils.setter
+    @utils.setter('_tests')
     def tests(self, tests):
         return ItemList(TestCase, tests, parent=self)

-    @utils.setter
+    @utils.setter('_keywords')
     def keywords(self, keywords):
         return Keywords(keywords, parent=self)

@@ -226,8 +226,8 @@
 class TestCase(object):
     __slots__ = ['parent', 'name', 'doc', 'status', 'message', 'timeout',
                  'starttime', 'endtime', '_critical',
-                 '_setter_tags_value',
-                 '_setter_keywords_value']
+                 '_tags',
+                 '_keywords']

     def __init__(self, name='', doc='', tags=None, status='UNDEFINED',
                 timeout='', starttime='N/A', endtime='N/A'):
@@ -243,11 +243,11 @@
         self.endtime = endtime
         self._critical = 'yes'

-    @utils.setter
+    @utils.setter('_tags')
     def tags(self, tags):
         return Tags(tags)

-    @utils.setter
+    @utils.setter('_keywords')
     def keywords(self, keywords):
         return Keywords(keywords, parent=self)

@@ -289,8 +289,8 @@
 class Keyword(object):
     __slots__ = ['parent', 'name', 'doc', 'args', 'type', 'status',
                  'starttime', 'endtime', 'timeout',
-                 '_setter_messages_value',
-                 '_setter_keywords_value']
+                 '_messages',
+                 '_keywords']


def __init__(self, name='', doc='', type='kw', status='UNDEFINED', timeout=''):
@@ -306,11 +306,11 @@
         self.endtime = ''
         self.timeout = timeout

-    @utils.setter
+    @utils.setter('_keywords')
     def keywords(self, keywords):
         return Keywords(keywords, parent=self)

-    @utils.setter
+    @utils.setter('_messages')
     def messages(self, messages):
         return ItemList(Message, messages)

=======================================
--- /src/robot/utils/setter.py  Wed Nov  9 01:15:04 2011
+++ /src/robot/utils/setter.py  Wed Nov  9 03:03:39 2011
@@ -15,19 +15,28 @@

 class setter(object):

-    def __init__(self, method):
+    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):
         self.method = method
-        self._method_value_name = '_setter_%s_value' % self.method.__name__
+        return self

     def __get__(self, instance, owner):
         if instance is None:
             return self
         try:
-            return getattr(instance, self._method_value_name)
-        except KeyError:
+            return getattr(instance, self.attr_name)
+        except AttributeError:
             raise AttributeError(self.method.__name__)

     def __set__(self, instance, value):
         if instance is None:
             return
- setattr(instance, self._method_value_name, self.method(instance, value))
+        setattr(instance, self.attr_name, self.method(instance, value))
+

==============================================================================
Revision: 88dd69093419
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 03:50:22 2011
Log:      TestCase status message
http://code.google.com/p/robotframework/source/detail?r=88dd69093419

Modified:
 /src/robot/result/jsondatamodelhandlers.py

=======================================
--- /src/robot/result/jsondatamodelhandlers.py  Tue Nov  8 05:42:29 2011
+++ /src/robot/result/jsondatamodelhandlers.py  Wed Nov  9 03:50:22 2011
@@ -161,6 +161,8 @@
         self._doc = self._get_id(utils.html_format(test.doc))
         self._data_from_children.append(self._doc)
         self._status = _StatusHandler(self._context, test).end_element('')
+        if test.message != '':
+            self._status.append(self._get_id(test.message))

     def add_child_data(self, data):
         self._current_children.append(data)

==============================================================================
Revision: bd6401754143
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 03:55:53 2011
Log:      Suite status message
http://code.google.com/p/robotframework/source/detail?r=bd6401754143

Modified:
 /src/robot/result/jsondatamodelhandlers.py

=======================================
--- /src/robot/result/jsondatamodelhandlers.py  Wed Nov  9 03:50:22 2011
+++ /src/robot/result/jsondatamodelhandlers.py  Wed Nov  9 03:55:53 2011
@@ -142,7 +142,10 @@

     def end_element(self, suite):
         stats = self._context.end_suite()
- self._data_from_children.append(_StatusHandler(self._context, suite).end_element(''))
+        status = _StatusHandler(self._context, suite).end_element('')
+        if suite.message != '':
+            status.append(self._get_id(suite.message))
+        self._data_from_children.append(status)
         return self._get_name_and_sources() + self._data_from_children + \
                  [self._suites, self._tests, self._keywords,
                   int(self._teardown_failed), stats]

==============================================================================
Revision: 1bf42dfe3ed2
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:20:44 2011
Log:      Fix suite stat
http://code.google.com/p/robotframework/source/detail?r=1bf42dfe3ed2

Modified:
 /src/robot/result/jsondatamodelhandlers.py

=======================================
--- /src/robot/result/jsondatamodelhandlers.py  Wed Nov  9 03:55:53 2011
+++ /src/robot/result/jsondatamodelhandlers.py  Wed Nov  9 04:20:44 2011
@@ -97,10 +97,19 @@
         return [self._create_stat(tag) for tag in tags.stats.values()]

     def _parse_suite(self, suite):
-        all_stat = self._create_stat(suite.all)
-        all_stat['id'] = suite.all.id
-        all_stat['name'] = suite.all.longname
-        return [all_stat]
+        class SuiteStatVisitor(object):
+            def __init__(self, collection):
+                self.collection = collection
+            start_suite_stats = end_suite_stats = lambda *args:0
+            def suite_stat(s, stats):
+                stat = self._create_stat(stats)
+                stat['id'] = stats.id
+                stat['name'] = stats.name
+                stat['label'] = stats.longname
+                s.collection += [stat]
+        stats = []
+        suite.serialize(SuiteStatVisitor(stats))
+        return stats

     def _create_stat(self, stat_elem):
         return {'pass':stat_elem.passed,

==============================================================================
Revision: e841faa8c75f
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:21:43 2011
Log:      Integrate new json to rebot
http://code.google.com/p/robotframework/source/detail?r=e841faa8c75f

Modified:
 /src/robot/reporting/resultwriter.py

=======================================
--- /src/robot/reporting/resultwriter.py        Sat Nov  5 04:54:17 2011
+++ /src/robot/reporting/resultwriter.py        Wed Nov  9 04:21:43 2011
@@ -15,7 +15,9 @@
 from robot.common import Statistics
 from robot.errors import DataError
 from robot.output import LOGGER
+from robot.reporting.jsondatamodel import DataModelWriter
 from robot.result.builders import ResultFromXML as RFX
+from robot.result.datamodel import DatamodelVisitor
 from robot.result.serializer import RebotXMLWriter
 from robot import utils

@@ -74,9 +76,10 @@

     def write_rebot_results(self, *data_sources):
         self._data_sources = data_sources
-        builder = OutputBuilder(self)
-        self.write_robot_results(builder.build())
-        builder.finalize()
+        self.result_from_xml
+        visitor = DatamodelVisitor(self._execution_result)
+        self._data_model = DataModelWriter(visitor.datamodel)
+        self.write_robot_results(None)
         return self._execution_result



==============================================================================
Revision: d5692cec328e
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:47:10 2011
Log:      DatamodelVisitor: Enable split_log option setting
http://code.google.com/p/robotframework/source/detail?r=d5692cec328e

Modified:
 /src/robot/result/datamodel.py

=======================================
--- /src/robot/result/datamodel.py      Tue Nov  8 03:38:18 2011
+++ /src/robot/result/datamodel.py      Wed Nov  9 04:47:10 2011
@@ -19,9 +19,9 @@

 class DatamodelVisitor(ResultVisitor):

-    def __init__(self, result):
+    def __init__(self, result, split_log=False):
         self._elements = []
-        self._context = Context()
+        self._context = Context(split_log=split_log)
self._elements.append(ExecutionResultHandler(self._context, result))
         result.visit(self)


==============================================================================
Revision: 4120f8d555d7
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:49:34 2011
Log:      Support split log and log rename
http://code.google.com/p/robotframework/source/detail?r=4120f8d555d7

Modified:
 /src/robot/reporting/resultwriter.py
 /src/robot/result/datamodel.py

=======================================
--- /src/robot/reporting/resultwriter.py        Wed Nov  9 04:21:43 2011
+++ /src/robot/reporting/resultwriter.py        Wed Nov  9 04:49:34 2011
@@ -77,7 +77,9 @@
     def write_rebot_results(self, *data_sources):
         self._data_sources = data_sources
         self.result_from_xml
-        visitor = DatamodelVisitor(self._execution_result)
+        visitor = DatamodelVisitor(self._execution_result,
+                                   log_path=self.settings['Log'],
+                                   split_log=self.settings['SplitLog'])
         self._data_model = DataModelWriter(visitor.datamodel)
         self.write_robot_results(None)
         return self._execution_result
=======================================
--- /src/robot/result/datamodel.py      Wed Nov  9 04:47:10 2011
+++ /src/robot/result/datamodel.py      Wed Nov  9 04:49:34 2011
@@ -19,9 +19,9 @@

 class DatamodelVisitor(ResultVisitor):

-    def __init__(self, result, split_log=False):
+    def __init__(self, result, log_path='NONE', split_log=False):
         self._elements = []
-        self._context = Context(split_log=split_log)
+        self._context = Context(log_path=log_path, split_log=split_log)
self._elements.append(ExecutionResultHandler(self._context, result))
         result.visit(self)


==============================================================================
Revision: 8696df6e5837
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 04:59:48 2011
Log:      Use new rebot model
http://code.google.com/p/robotframework/source/detail?r=8696df6e5837

Modified:
 /utest/webcontent/spec/data/create_jsdata_for_specs.py

=======================================
--- /utest/webcontent/spec/data/create_jsdata_for_specs.py Mon Oct 24 03:12:31 2011 +++ /utest/webcontent/spec/data/create_jsdata_for_specs.py Wed Nov 9 04:59:48 2011
@@ -4,6 +4,8 @@
 from os.path import join, dirname, abspath
 import sys
 import os
+from robot.result.datamodel import DatamodelVisitor
+

 BASEDIR = dirname(abspath(__file__))
 OUTPUT = join(BASEDIR, 'output.xml')
@@ -12,7 +14,7 @@

 import robot
 from robot.reporting.outputparser import OutputParser
-from robot.reporting.jsondatamodel import SeparatingWriter
+from robot.reporting.jsondatamodel import SeparatingWriter, DataModelWriter


 def run_robot(testdata, loglevel='INFO'):
@@ -26,7 +28,9 @@


 def create_jsdata(outxml, target, split_log):
-    model = OutputParser(split_log=split_log).parse(outxml)
+    result = robot.result.builders.ResultFromXML(outxml)
+    visitor = DatamodelVisitor(result, split_log=split_log)
+ model = DataModelWriter(visitor.datamodel, visitor._context.split_results)
     model.set_settings({'logURL': 'log.html',
                         'reportURL': 'report.html',
                         'background': {'fail': 'DeepPink'}})

==============================================================================
Revision: b5e739db16ad
Author:   Mikko Korpela <[email protected]>
Date:     Wed Nov  9 05:02:34 2011
Log:      merge
http://code.google.com/p/robotframework/source/detail?r=b5e739db16ad


Reply via email to