4 new revisions:

Revision: f6a6d48ea665
Author:   Mikko Korpela <[email protected]>
Date:     Thu Jun  9 22:50:58 2011
Log:      jsparser: Remove dead code
http://code.google.com/p/robotframework/source/detail?r=f6a6d48ea665

Revision: 891ed4a42dcf
Author:   Mikko Korpela <[email protected]>
Date:     Thu Jun  9 23:12:21 2011
Log:      jsserializer: null time if time is N/A
http://code.google.com/p/robotframework/source/detail?r=891ed4a42dcf

Revision: 0041ec740187
Author:   Mikko Korpela <[email protected]>
Date:     Thu Jun  9 23:47:55 2011
Log:      jsparser: handle None times elapsed
http://code.google.com/p/robotframework/source/detail?r=0041ec740187

Revision: dd64c77c149a
Author:   Mikko Korpela <[email protected]>
Date:     Fri Jun 10 00:38:27 2011
Log:      model.js: N/A timestamps
http://code.google.com/p/robotframework/source/detail?r=dd64c77c149a

==============================================================================
Revision: f6a6d48ea665
Author:   Mikko Korpela <[email protected]>
Date:     Thu Jun  9 22:50:58 2011
Log:      jsparser: Remove dead code
http://code.google.com/p/robotframework/source/detail?r=f6a6d48ea665

Modified:
 /src/robot/serializing/jsparser.py

=======================================
--- /src/robot/serializing/jsparser.py  Wed Jun  8 07:09:29 2011
+++ /src/robot/serializing/jsparser.py  Thu Jun  9 22:50:58 2011
@@ -166,133 +166,12 @@
             l[v] = k
         return l

-
-def _keyword_node_parser(node, context):
-    context.start_keyword()
-    try:
-        result = [node.get('type'),
-                  context.get_text_id(node.get('name')),
- context.get_text_id(node.get('timeout'))]+_children(node, context)
-        if result[0] == 'teardown' and result[-1][0] == 'F':
-            context.teardown_failed()
-        return result
-    finally:
-        context.end_keyword()
-
-def _test_node_parser(node, context):
-    name = node.get('name')
-    context.start_test(name)
-    try:
- critical = 'Y' if node.find('status').get('critical') == 'yes' else 'N'
-        result = ['test',
-                  context.get_text_id(name),
-                  context.get_text_id(node.get('timeout')),
-                  critical]+_children(node, context)
-        context.add_test(critical == 'Y', result[-1][0] == 'P')
-        return result
-    finally:
-        context.end_suite()
-
-def _errors_node_parser(node, context):
-    return _children(node, context)
-
-def _children(node, context):
- return [_create_from_node(child, context) for child in node.getchildren()]
-
-def _doc_node_parser(node, context):
-    return context.get_text_id(node.text)
-
 levels = {'TRACE':'T',
           'DEBUG':'D',
           'INFO':'I',
           'WARN':'W',
           'ERROR':'E',
           'FAIL':'F'}
-
-def _get_level(node):
-    return levels[node.get('level')]
-
-def _get_msg_text_id(node, context):
-    if node.get('html'):
-        return context.get_text_id(node.text)
-    else:
- return context.get_text_id(utils.html_escape(node.text, replace_whitespace=False))
-
-def _message_node_parser(node, context):
-    msg = [context.timestamp(node.get('timestamp')),
-            _get_level(node),
-            _get_msg_text_id(node, context)]
-    if node.get("linkable") == "yes":
-        msg += [context.link_to(msg)]
-    elif msg[1] == 'W':
-        context.create_link_to_current_location(msg)
-    return msg
-
-def _metadata_node_parser(node, context):
-    items = {}
-    for item in node.getchildren():
-        items[item.get('name')] = context.get_text_id(item.text)
-    return items
-
-def _status_node_parser(node, context):
-    status = node.get('status')[0]
-    starttime = context.timestamp(node.get('starttime'))
-    endtime = context.timestamp(node.get('endtime'))
-    return [status,
-            starttime,
-            endtime-starttime]
-
-def _tags_node_parser(node, context):
-    return [context.get_text_id(c.text) for c in node.getchildren()]
-
-def _arguments_node_parser(node, context):
- return context.get_text_id(', '.join(c.text for c in node.getchildren() if c.text is not None))
-
-def _suite_node_parser(node, context):
-    name = node.get('name')
-    context.start_suite(name)
-    try:
-        return ['suite',
-                node.get('source'),
-                name]+\
-                _children(node, context.collect_stats())+\
-                [context.dump_stats()]
-    finally:
-        context.end_suite()
-
-def _robot_node_parser(node, context):
-    generator = node.get('generator')
-    children = _children(node, context)
-    generated = node.get('generated')
-    if generated:
-        generated = context.timestamp(generated)
-    return [generated, generator]+children
-
-def _statistics_parser(node, context):
-    return [_stat_from(c) for c in node.getchildren()]
-
-def _stat_from(node):
-    return [[stat.text, int(stat.get('pass')), int(stat.get('fail')),
- stat.get('doc', ''), stat.get('info', ''), stat.get('links', '')]
-             for stat in node.getchildren()]
-
-_node_parsers = {
-'robot':_robot_node_parser,
-'suite':_suite_node_parser,
-'doc':_doc_node_parser,
-'metadata':_metadata_node_parser,
-'status':_status_node_parser,
-'errors':_errors_node_parser,
-'test':_test_node_parser,
-'kw':_keyword_node_parser,
-'tags':_tags_node_parser,
-'arguments':_arguments_node_parser,
-'statistics':_statistics_parser,
-'msg':_message_node_parser
-}
-
-def _create_from_node(node, context):
-    return _node_parsers[node.tag](node, context)

 def create_datamodel_from(input_filename):
     robot = _RobotOutputHandler(Context())

==============================================================================
Revision: 891ed4a42dcf
Author:   Mikko Korpela <[email protected]>
Date:     Thu Jun  9 23:12:21 2011
Log:      jsserializer: null time if time is N/A
http://code.google.com/p/robotframework/source/detail?r=891ed4a42dcf

Modified:
 /src/robot/serializing/jsparser.py
 /utest/serializing/test_js_serializer.py

=======================================
--- /src/robot/serializing/jsparser.py  Thu Jun  9 22:50:58 2011
+++ /src/robot/serializing/jsparser.py  Thu Jun  9 23:12:21 2011
@@ -40,7 +40,7 @@

     def timestamp(self, time):
         if time == 'N/A':
-            return -1
+            return None
         millis = int(utils.timestamp_to_secs(time, millis=True) * 1000)
         if self.basemillis is None:
             self._basemillis = millis
@@ -492,7 +492,9 @@
     return '"'+result.getvalue()+'"'

 def json_dump(data, output):
-    if isinstance(data, int):
+    if data is None:
+        output.write('null')
+    elif isinstance(data, int):
         output.write(str(data))
     elif isinstance(data, long):
         output.write(str(data))
=======================================
--- /utest/serializing/test_js_serializer.py    Wed Jun  8 05:26:16 2011
+++ /utest/serializing/test_js_serializer.py    Thu Jun  9 23:12:21 2011
@@ -51,6 +51,25 @@
         assert_equals(data_model._robot_data, ['P',0,42,1])
         assert_equals(data_model._texts, ['*', '*Message'])

+    def test_times(self):
+        self._context.start_suite('suite')
+        times = """
+        <kw type="kw" name="KwName" timeout="">
+ <msg timestamp="20110531 12:48:09.020" level="FAIL">AssertionError</msg>
+        <msg timestamp="N/A" level="FAIL">AssertionError</msg>
+ <msg timestamp="20110531 12:48:09.010" level="FAIL">AssertionError</msg> + <status status="FAIL" endtime="20110531 12:48:09.010" starttime="20110531 12:48:09.020"></status>
+        </kw>
+        """
+        data_model = self._get_data_model(times)
+        assert_equals(data_model._basemillis, 1306835289020)
+        assert_equals(data_model._robot_data, ['kw', 1, 0,
+            [0, 'F', 2],
+            [None, 'F', 2],
+            [-10, 'F', 2],
+            ['F', 0, -10]])
+
+
     def test_tags_xml_parsing(self):
         tags_xml = """
         <tags>
@@ -217,6 +236,11 @@
         json_dump({'key':1, 'hello':'world'}, buffer)
         assert_equals('{"hello":"world","key":1}', buffer.getvalue())

+    def test_json_dump_None(self):
+        buffer = StringIO.StringIO()
+        json_dump(None, buffer)
+        assert_equals('null', buffer.getvalue())
+
     def _get_data_model(self, xml_string):
         sax.parseString(xml_string, self._handler)
         return self._handler.datamodel

==============================================================================
Revision: 0041ec740187
Author:   Mikko Korpela <[email protected]>
Date:     Thu Jun  9 23:47:55 2011
Log:      jsparser: handle None times elapsed
http://code.google.com/p/robotframework/source/detail?r=0041ec740187

Modified:
 /src/robot/serializing/jsparser.py

=======================================
--- /src/robot/serializing/jsparser.py  Thu Jun  9 23:12:21 2011
+++ /src/robot/serializing/jsparser.py  Thu Jun  9 23:47:55 2011
@@ -42,7 +42,7 @@
         if time == 'N/A':
             return None
         millis = int(utils.timestamp_to_secs(time, millis=True) * 1000)
-        if self.basemillis is None:
+        if self._basemillis is None:
             self._basemillis = millis
         return millis - self.basemillis

@@ -298,12 +298,13 @@
         self._context = context
         self._status = attrs.getValue('status')[0]
self._starttime = self._context.timestamp(attrs.getValue('starttime'))
-        self._endtime = self._context.timestamp(attrs.getValue('endtime'))
+        endtime = self._context.timestamp(attrs.getValue('endtime'))
+ self._elapsed = endtime-self._starttime if endtime is not None and self._starttime is not None else None

     def end_element(self, text):
         result = [self._status,
                   self._starttime,
-                  self._endtime-self._starttime]
+                  self._elapsed]
         if text:
            result += [self._context.get_text_id(text)]
         return result

==============================================================================
Revision: dd64c77c149a
Author:   Mikko Korpela <[email protected]>
Date:     Fri Jun 10 00:38:27 2011
Log:      model.js: N/A timestamps
http://code.google.com/p/robotframework/source/detail?r=dd64c77c149a

Modified:
 /src/robot/webcontent/js/model.js
 /src/robot/webcontent/js/testdata.js

=======================================
--- /src/robot/webcontent/js/model.js   Wed Jun  8 03:29:15 2011
+++ /src/robot/webcontent/js/model.js   Fri Jun 10 00:38:27 2011
@@ -207,11 +207,15 @@
     }

     function timeFromDate(date) {
+        if(date == null)
+            return "N/A"
         return shortTime(date.getHours(), date.getMinutes(),
                 date.getSeconds(), date.getMilliseconds());
     }

     function formatDate(date, excludeMillis) {
+        if(date == null)
+            return "N/A"
         var milliseconds = date.getMilliseconds();
         if (excludeMillis)
             milliseconds = undefined
=======================================
--- /src/robot/webcontent/js/testdata.js        Wed Jun  8 04:15:04 2011
+++ /src/robot/webcontent/js/testdata.js        Fri Jun 10 00:38:27 2011
@@ -29,10 +29,12 @@
     }

     function times(stats) {
-        var start = timestamp(stats[1]);
+        var startMillis = stats[1];
         var elapsed = stats[2];
-        var stop = timestamp(stats[1] + elapsed);
-        return [start, stop, elapsed];
+        if(startMillis == null){
+            return [null, null, elapsed];
+        }
+ return [timestamp(startMillis), timestamp(startMillis + elapsed), elapsed];
     }

     function message(element) {

Reply via email to