3 new revisions:

Revision: bade668d10c8
Author:   Pekka Klärck
Date:     Thu Dec  1 12:42:16 2011
Log:      Default RootElement for ElementStack
http://code.google.com/p/robotframework/source/detail?r=bade668d10c8

Revision: 8225b836e3fc
Author:   Pekka Klärck
Date:     Thu Dec  1 12:45:56 2011
Log:      builders -> xmlelementhandlers
http://code.google.com/p/robotframework/source/detail?r=8225b836e3fc

Revision: 1eb43024eaf1
Author:   Pekka Klärck
Date:     Thu Dec  1 12:48:02 2011
Log:      oops, forgot to move __future__ import
http://code.google.com/p/robotframework/source/detail?r=1eb43024eaf1

==============================================================================
Revision: bade668d10c8
Author:   Pekka Klärck
Date:     Thu Dec  1 12:42:16 2011
Log:      Default RootElement for ElementStack
http://code.google.com/p/robotframework/source/detail?r=bade668d10c8

Modified:
 /src/robot/result/builders.py
 /src/robot/result/executionresult.py

=======================================
--- /src/robot/result/builders.py       Thu Dec  1 12:38:59 2011
+++ /src/robot/result/builders.py       Thu Dec  1 12:42:16 2011
@@ -19,9 +19,9 @@

 class ElementStack(object):

-    def __init__(self, result, root_element):
+    def __init__(self, result, root_element=None):
         self._results = [result]
-        self._elements = [root_element]
+        self._elements = [root_element or RootElement()]

     @property
     def _result(self):
=======================================
--- /src/robot/result/executionresult.py        Thu Dec  1 12:40:32 2011
+++ /src/robot/result/executionresult.py        Thu Dec  1 12:42:16 2011
@@ -16,7 +16,7 @@
 from robot.model.statistics import Statistics
 from robot.utils import ET, XmlSource

-from .builders import ElementStack, RootElement
+from .builders import ElementStack
 from .executionerrors import ExecutionErrors
 from .configurer import SuiteConfigurer
 from .suiteteardownfailed import SuiteTeardownFailureHandler
@@ -43,7 +43,7 @@
             if isinstance(source, XmlSource) else XmlSource(source)

     def build(self, result):
-        elements = ElementStack(result, RootElement())
+        elements = ElementStack(result)
         with self._source as source:
for action, elem in ET.iterparse(source, events=('start', 'end')):
                getattr(elements, action)(elem)

==============================================================================
Revision: 8225b836e3fc
Author:   Pekka Klärck
Date:     Thu Dec  1 12:45:56 2011
Log:      builders -> xmlelementhandlers
http://code.google.com/p/robotframework/source/detail?r=8225b836e3fc

Added:
 /src/robot/result/xmlelementhandlers.py
Deleted:
 /src/robot/result/builders.py
Modified:
 /src/robot/result/executionresult.py

=======================================
--- /dev/null
+++ /src/robot/result/xmlelementhandlers.py     Thu Dec  1 12:45:56 2011
@@ -0,0 +1,236 @@
+#  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 __future__ import with_statement
+
+from robot.errors import DataError
+
+
+class ElementStack(object):
+
+    def __init__(self, result, root_element=None):
+        self._results = [result]
+        self._elements = [root_element or RootElement()]
+
+    @property
+    def _result(self):
+        return self._results[-1]
+
+    @property
+    def _element(self):
+        return self._elements[-1]
+
+    def start(self, elem):
+        self._elements.append(self._element.child_element(elem.tag))
+        self._results.append(self._element.start(elem, self._result))
+
+    def end(self, elem):
+        self._elements.pop().end(elem, self._results.pop())
+        elem.clear()
+
+
+class _Element(object):
+    tag = ''
+
+    def start(self, elem, result):
+        return result
+
+    def end(self, elem, result):
+        pass
+
+    def child_element(self, tag):
+        # TODO: replace _children() list with dict
+        for child_type in self._children():
+            if child_type.tag == tag:
+                return child_type()
+        raise DataError("Incompatible XML element '%s'" % tag)
+
+    def _children(self):
+        return []
+
+
+class RootElement(_Element):
+
+    def _children(self):
+        return [RobotElement]
+
+
+class RobotElement(_Element):
+    tag = 'robot'
+
+    def start(self, elem, result):
+ result.generator = elem.get('generator', 'unknown').split()[0].upper()
+        return result
+
+    def _children(self):
+        return [RootSuiteElement, StatisticsElement, ErrorsElement]
+
+
+class SuiteElement(_Element):
+    tag = 'suite'
+
+    def start(self, elem, result):
+        return result.suites.create(name=elem.get('name'),
+                                    source=elem.get('source'))
+
+    def _children(self):
+        return [SuiteElement, DocElement, SuiteStatusElement,
+                KeywordElement, TestCaseElement, MetadataElement]
+
+
+class RootSuiteElement(SuiteElement):
+
+    def start(self, elem, result):
+        result.suite.name = elem.get('name')
+        result.suite.source = elem.get('source')
+        return result.suite
+
+
+class TestCaseElement(_Element):
+    tag = 'test'
+
+    def start(self, elem, result):
+        return result.tests.create(name=elem.get('name'),
+                                   timeout=elem.get('timeout'))
+
+    def _children(self):
+        return [KeywordElement, TagsElement, DocElement, TestStatusElement]
+
+
+class KeywordElement(_Element):
+    tag = 'kw'
+
+    def start(self, elem, result):
+        return result.keywords.create(name=elem.get('name'),
+                                      timeout=elem.get('timeout'),
+                                      type=elem.get('type'))
+
+    def _children(self):
+ return [DocElement, ArgumentsElement, KeywordElement, MessageElement,
+                KeywordStatusElement]
+
+
+class MessageElement(_Element):
+    tag = 'msg'
+
+    def end(self, elem, result):
+        html = elem.get('html', 'no') == 'yes'
+        linkable = elem.get('linkable', 'no') == 'yes'
+        result.messages.create(elem.text or '', elem.get('level'),
+                               html, elem.get('timestamp'), linkable)
+
+
+class _StatusElement(_Element):
+    tag = 'status'
+
+    def _set_status(self, elem, result):
+        result.status = elem.get('status', 'FAIL')
+
+    def _set_message(self, elem, result):
+        result.message = elem.text or ''
+
+    def _set_times(self, elem, result):
+        result.starttime = elem.get('starttime', 'N/A')
+        result.endtime = elem.get('endtime', 'N/A')
+
+
+class KeywordStatusElement(_StatusElement):
+
+    def end(self, elem, result):
+        self._set_status(elem, result)
+        self._set_times(elem, result)
+
+
+class SuiteStatusElement(_StatusElement):
+
+    def end(self, elem, result):
+        self._set_message(elem, result)
+        self._set_times(elem, result)
+
+
+class TestStatusElement(_StatusElement):
+
+    def end(self, elem, result):
+        self._set_status(elem, result)
+        self._set_message(elem, result)
+        self._set_times(elem, result)
+
+
+class DocElement(_Element):
+    tag = 'doc'
+
+    def end(self, elem, result):
+        result.doc = elem.text or ''
+
+
+class MetadataElement(_Element):
+    tag = 'metadata'
+
+    def _children(self):
+        return [MetadataItemElement]
+
+
+class MetadataItemElement(_Element):
+    tag = 'item'
+
+    def _children(self):
+        return [MetadataItemElement]
+
+    def end(self, elem, result):
+        result.metadata[elem.get('name')] = elem.text or ''
+
+
+class TagsElement(_Element):
+    tag = 'tags'
+
+    def _children(self):
+        return [TagElement]
+
+
+class TagElement(_Element):
+    tag = 'tag'
+
+    def end(self, elem, result):
+        result.tags.add(elem.text or '')
+
+
+class ArgumentsElement(_Element):
+    tag = 'arguments'
+
+    def _children(self):
+        return [ArgumentElement]
+
+
+class ArgumentElement(_Element):
+    tag = 'arg'
+
+    def end(self, elem, result):
+        result.args.append(elem.text or '')
+
+
+class ErrorsElement(_Element):
+    tag = 'errors'
+
+    def start(self, elem, result):
+        return result.errors
+
+    def _children(self):
+        return [MessageElement]
+
+
+class StatisticsElement(_Element):
+    tag = 'statistics'
+
+    def child_element(self, tag):
+        return self
=======================================
--- /src/robot/result/builders.py       Thu Dec  1 12:42:16 2011
+++ /dev/null
@@ -1,236 +0,0 @@
-#  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 __future__ import with_statement
-
-from robot.errors import DataError
-
-
-class ElementStack(object):
-
-    def __init__(self, result, root_element=None):
-        self._results = [result]
-        self._elements = [root_element or RootElement()]
-
-    @property
-    def _result(self):
-        return self._results[-1]
-
-    @property
-    def _element(self):
-        return self._elements[-1]
-
-    def start(self, elem):
-        self._elements.append(self._element.child_element(elem.tag))
-        self._results.append(self._element.start(elem, self._result))
-
-    def end(self, elem):
-        self._elements.pop().end(elem, self._results.pop())
-        elem.clear()
-
-
-class _Element(object):
-    tag = ''
-
-    def start(self, elem, result):
-        return result
-
-    def end(self, elem, result):
-        pass
-
-    def child_element(self, tag):
-        # TODO: replace _children() list with dict
-        for child_type in self._children():
-            if child_type.tag == tag:
-                return child_type()
-        raise DataError("Incompatible XML element '%s'" % tag)
-
-    def _children(self):
-        return []
-
-
-class RootElement(_Element):
-
-    def _children(self):
-        return [RobotElement]
-
-
-class RobotElement(_Element):
-    tag = 'robot'
-
-    def start(self, elem, result):
- result.generator = elem.get('generator', 'unknown').split()[0].upper()
-        return result
-
-    def _children(self):
-        return [RootSuiteElement, StatisticsElement, ErrorsElement]
-
-
-class SuiteElement(_Element):
-    tag = 'suite'
-
-    def start(self, elem, result):
-        return result.suites.create(name=elem.get('name'),
-                                    source=elem.get('source'))
-
-    def _children(self):
-        return [SuiteElement, DocElement, SuiteStatusElement,
-                KeywordElement, TestCaseElement, MetadataElement]
-
-
-class RootSuiteElement(SuiteElement):
-
-    def start(self, elem, result):
-        result.suite.name = elem.get('name')
-        result.suite.source = elem.get('source')
-        return result.suite
-
-
-class TestCaseElement(_Element):
-    tag = 'test'
-
-    def start(self, elem, result):
-        return result.tests.create(name=elem.get('name'),
-                                   timeout=elem.get('timeout'))
-
-    def _children(self):
-        return [KeywordElement, TagsElement, DocElement, TestStatusElement]
-
-
-class KeywordElement(_Element):
-    tag = 'kw'
-
-    def start(self, elem, result):
-        return result.keywords.create(name=elem.get('name'),
-                                      timeout=elem.get('timeout'),
-                                      type=elem.get('type'))
-
-    def _children(self):
- return [DocElement, ArgumentsElement, KeywordElement, MessageElement,
-                KeywordStatusElement]
-
-
-class MessageElement(_Element):
-    tag = 'msg'
-
-    def end(self, elem, result):
-        html = elem.get('html', 'no') == 'yes'
-        linkable = elem.get('linkable', 'no') == 'yes'
-        result.messages.create(elem.text or '', elem.get('level'),
-                               html, elem.get('timestamp'), linkable)
-
-
-class _StatusElement(_Element):
-    tag = 'status'
-
-    def _set_status(self, elem, result):
-        result.status = elem.get('status', 'FAIL')
-
-    def _set_message(self, elem, result):
-        result.message = elem.text or ''
-
-    def _set_times(self, elem, result):
-        result.starttime = elem.get('starttime', 'N/A')
-        result.endtime = elem.get('endtime', 'N/A')
-
-
-class KeywordStatusElement(_StatusElement):
-
-    def end(self, elem, result):
-        self._set_status(elem, result)
-        self._set_times(elem, result)
-
-
-class SuiteStatusElement(_StatusElement):
-
-    def end(self, elem, result):
-        self._set_message(elem, result)
-        self._set_times(elem, result)
-
-
-class TestStatusElement(_StatusElement):
-
-    def end(self, elem, result):
-        self._set_status(elem, result)
-        self._set_message(elem, result)
-        self._set_times(elem, result)
-
-
-class DocElement(_Element):
-    tag = 'doc'
-
-    def end(self, elem, result):
-        result.doc = elem.text or ''
-
-
-class MetadataElement(_Element):
-    tag = 'metadata'
-
-    def _children(self):
-        return [MetadataItemElement]
-
-
-class MetadataItemElement(_Element):
-    tag = 'item'
-
-    def _children(self):
-        return [MetadataItemElement]
-
-    def end(self, elem, result):
-        result.metadata[elem.get('name')] = elem.text or ''
-
-
-class TagsElement(_Element):
-    tag = 'tags'
-
-    def _children(self):
-        return [TagElement]
-
-
-class TagElement(_Element):
-    tag = 'tag'
-
-    def end(self, elem, result):
-        result.tags.add(elem.text or '')
-
-
-class ArgumentsElement(_Element):
-    tag = 'arguments'
-
-    def _children(self):
-        return [ArgumentElement]
-
-
-class ArgumentElement(_Element):
-    tag = 'arg'
-
-    def end(self, elem, result):
-        result.args.append(elem.text or '')
-
-
-class ErrorsElement(_Element):
-    tag = 'errors'
-
-    def start(self, elem, result):
-        return result.errors
-
-    def _children(self):
-        return [MessageElement]
-
-
-class StatisticsElement(_Element):
-    tag = 'statistics'
-
-    def child_element(self, tag):
-        return self
=======================================
--- /src/robot/result/executionresult.py        Thu Dec  1 12:42:16 2011
+++ /src/robot/result/executionresult.py        Thu Dec  1 12:45:56 2011
@@ -16,11 +16,11 @@
 from robot.model.statistics import Statistics
 from robot.utils import ET, XmlSource

-from .builders import ElementStack
 from .executionerrors import ExecutionErrors
 from .configurer import SuiteConfigurer
 from .suiteteardownfailed import SuiteTeardownFailureHandler
 from .testsuite import TestSuite
+from .xmlelementhandlers import ElementStack


 def ResultFromXml(*sources):

==============================================================================
Revision: 1eb43024eaf1
Author:   Pekka Klärck
Date:     Thu Dec  1 12:48:02 2011
Log:      oops, forgot to move __future__ import
http://code.google.com/p/robotframework/source/detail?r=1eb43024eaf1

Modified:
 /src/robot/result/executionresult.py
 /src/robot/result/xmlelementhandlers.py

=======================================
--- /src/robot/result/executionresult.py        Thu Dec  1 12:45:56 2011
+++ /src/robot/result/executionresult.py        Thu Dec  1 12:48:02 2011
@@ -12,6 +12,8 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.

+from __future__ import with_statement
+
 from robot.errors import DataError
 from robot.model.statistics import Statistics
 from robot.utils import ET, XmlSource
=======================================
--- /src/robot/result/xmlelementhandlers.py     Thu Dec  1 12:45:56 2011
+++ /src/robot/result/xmlelementhandlers.py     Thu Dec  1 12:48:02 2011
@@ -12,8 +12,6 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.

-from __future__ import with_statement
-
 from robot.errors import DataError


Reply via email to