7 new revisions:

Revision: 12d9e240cae4
Branch:   default
Author:   Pekka Klärck
Date:     Sat Oct 20 12:05:57 2012
Log: Profiler script modified from Mikko's gist at https://gist.github.com/...
http://code.google.com/p/robotframework/source/detail?r=12d9e240cae4

Revision: 436976572b06
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 01:34:33 2012
Log:      Optimized parsing output when creating only report....
http://code.google.com/p/robotframework/source/detail?r=436976572b06

Revision: bf69294a1231
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 04:32:20 2012
Log:      log/report: simplified getting generated timestamp
http://code.google.com/p/robotframework/source/detail?r=bf69294a1231

Revision: 303aae05de55
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 04:38:53 2012
Log:      removed now obsolete test
http://code.google.com/p/robotframework/source/detail?r=303aae05de55

Revision: 5096ad36688d
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 04:47:40 2012
Log:      log/report: refactored (slap) creating header
http://code.google.com/p/robotframework/source/detail?r=5096ad36688d

Revision: 0fb0d23ab915
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 05:14:37 2012
Log:      Fixed showing long title in log and report....
http://code.google.com/p/robotframework/source/detail?r=0fb0d23ab915

Revision: ff2dbad96082
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 05:15:26 2012
Log:      regen
http://code.google.com/p/robotframework/source/detail?r=ff2dbad96082

==============================================================================
Revision: 12d9e240cae4
Branch:   default
Author:   Pekka Klärck
Date:     Sat Oct 20 12:05:57 2012
Log: Profiler script modified from Mikko's gist at https://gist.github.com/3907371
http://code.google.com/p/robotframework/source/detail?r=12d9e240cae4

Added:
 /proto/profiler.py

=======================================
--- /dev/null
+++ /proto/profiler.py  Sat Oct 20 12:05:57 2012
@@ -0,0 +1,24 @@
+import cProfile
+import pstats
+import os
+from os.path import abspath, dirname, join
+import sys
+import tempfile
+
+rootdir = dirname(dirname(abspath(__file__)))
+sys.path.insert(0, join(rootdir, 'src'))
+
+from robot.run import run_cli
+from robot.rebot import rebot_cli
+
+if sys.argv[1] != 'rebot':
+    profiled = 'run_cli(sys.argv[1:])'
+else:
+    profiled = 'rebot_cli(sys.argv[2:])'
+
+results = tempfile.mktemp(suffix='.out', prefix='pybot-profile',
+                          dir=join(rootdir, 'tmp'))
+cProfile.run(profiled, results)
+stats = pstats.Stats(results)
+stats.sort_stats('cumulative').print_stats(50)
+os.remove(results)

==============================================================================
Revision: 436976572b06
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 01:34:33 2012
Log:      Optimized parsing output when creating only report.

Update issue 1261
Optimized the code that omits keywords a little. Memory usage dropped ~5% and execution got a tiny bit faster. As a bonus the code is also a little cleaner.
http://code.google.com/p/robotframework/source/detail?r=436976572b06

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

=======================================
--- /src/robot/result/resultbuilder.py  Fri Oct 19 15:23:00 2012
+++ /src/robot/result/resultbuilder.py  Sun Oct 21 01:34:33 2012
@@ -61,6 +61,7 @@
         self._include_keywords = include_keywords

     def build(self, result):
+ # Parsing is performance optimized. Do not change without profiling!
         handler = XmlElementHandler(result)
         with self._source as source:
             self._parse(source, handler.start, handler.end)
@@ -79,13 +80,15 @@
                 elem.clear()

     def _omit_keywords(self, context):
-        kws = 0
+        started_kws = 0
         for event, elem in context:
-            if event == 'start' and elem.tag == 'kw':
-                kws += 1
-            if not kws:
+            start = event == 'start'
+            kw = elem.tag == 'kw'
+            if kw and start:
+                started_kws += 1
+            if not started_kws:
                 yield event, elem
-            else:
+            elif not start:
                 elem.clear()
-            if event == 'end' and elem.tag == 'kw':
-                kws -= 1
+            if kw and not start:
+                started_kws -= 1

==============================================================================
Revision: bf69294a1231
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 04:32:20 2012
Log:      log/report: simplified getting generated timestamp
http://code.google.com/p/robotframework/source/detail?r=bf69294a1231

Modified:
 /src/robot/htmldata/rebot/testdata.js
 /src/robot/htmldata/rebot/util.js
 /src/robot/htmldata/rebot/view.js

=======================================
--- /src/robot/htmldata/rebot/testdata.js       Fri May 11 03:18:16 2012
+++ /src/robot/htmldata/rebot/testdata.js       Sun Oct 21 04:32:20 2012
@@ -18,22 +18,20 @@
         idCounter++;
         return "elementId_" + idCounter;
     }
-
-    function timestamp(millis) {
-        return new Date(window.output.baseMillis + millis);
-    }

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

     function message(element, strings) {
         return addElement(model.Message(LEVELS[element[1]],
-                                        timestamp(element[0]),
+                                        util.timestamp(element[0]),
                                         strings.get(element[2]),
                                         strings.get(element[3])));
     }
@@ -244,10 +242,6 @@
             return element.suites()[index];
         }
     }
-
-    function generated() {
-        return timestamp(window.output.generatedMillis);
-    }

     function errors() {
         var iterator = new Object();
@@ -303,7 +297,6 @@
         errors: errors,
         find: findById,
         findPathTo: findPathTo,
-        generated: generated,
         statistics: statistics,
         getStringStore: getStringStore,
         LEVELS: LEVELS
=======================================
--- /src/robot/htmldata/rebot/util.js   Wed Jun 27 04:58:19 2012
+++ /src/robot/htmldata/rebot/util.js   Sun Oct 21 04:32:20 2012
@@ -111,8 +111,13 @@
         while (numString.length < len) numString = "0" + numString;
         return numString;
     }
+
+    function timestamp(millis) {
+        return new Date(window.output.baseMillis + millis);
+    }

     function createGeneratedAgoString(generatedMillis) {
+        generatedMillis = timestamp(generatedMillis);
         function timeString(time, shortUnit) {
             var unit = {'y': 'year', 'd': 'day', 'h': 'hour',
                         'm': 'minute', 's': 'second'}[shortUnit];
@@ -165,6 +170,7 @@
         dateFromDate: dateFromDate,
         dateTimeFromDate: dateTimeFromDate,
         formatElapsed: formatElapsed,
+        timestamp: timestamp,
         createGeneratedAgoString: createGeneratedAgoString
     };
 }();
=======================================
--- /src/robot/htmldata/rebot/view.js   Tue Aug 28 00:37:48 2012
+++ /src/robot/htmldata/rebot/view.js   Sun Oct 21 04:32:20 2012
@@ -28,7 +28,7 @@

 function addHeader() {
     createGenerated(window.output.generatedTimestamp,
-                    window.testdata.generated().getTime()
+                    window.output.generatedMillis
     ).appendTo($('#header'));
     $.tmpl('' +
         '<div id="top_right_header"><div id="report_or_log_link">' +

==============================================================================
Revision: 303aae05de55
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 04:38:53 2012
Log:      removed now obsolete test
http://code.google.com/p/robotframework/source/detail?r=303aae05de55

Modified:
 /utest/webcontent/spec/ParsingSpec.js

=======================================
--- /utest/webcontent/spec/ParsingSpec.js       Fri May 11 01:27:01 2012
+++ /utest/webcontent/spec/ParsingSpec.js       Sun Oct 21 04:38:53 2012
@@ -132,11 +132,6 @@
         expect(message.text).toEqual("Slept 100 milliseconds");
     });

-    it("should parse timestamp", function () {
-        var timestamp = window.testdata.generated();
- expect(timestamp).toEqual(new Date(window.output.baseMillis+window.output.generatedMillis));
-    });
-
 });

 describe("Setups and teardowns", function () {

==============================================================================
Revision: 5096ad36688d
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 04:47:40 2012
Log:      log/report: refactored (slap) creating header
http://code.google.com/p/robotframework/source/detail?r=5096ad36688d

Modified:
 /src/robot/htmldata/rebot/view.js

=======================================
--- /src/robot/htmldata/rebot/view.js   Sun Oct 21 04:32:20 2012
+++ /src/robot/htmldata/rebot/view.js   Sun Oct 21 04:47:40 2012
@@ -27,27 +27,19 @@
 }

 function addHeader() {
-    createGenerated(window.output.generatedTimestamp,
-                    window.output.generatedMillis
-    ).appendTo($('#header'));
-    $.tmpl('' +
-        '<div id="top_right_header"><div id="report_or_log_link">' +
-        '<a href="#"></a>' +
-        '</div></div>' +
-        '<h1>${title}</h1>', {
+    return $.tmpl('<div id="generated">' +
+                    '<span>Generated<br>${generated}</span><br>' +
+                    '<span id="generated_ago">${ago} ago</span>' +
+                  '</div>' +
+                  '<div id="top_right_header">' +
+                    '<div id="report_or_log_link"><a href="#"></a></div>' +
+                  '</div>' +
+                  '<h1>${title}</h1>', {
+        generated: window.output.generatedTimestamp,
+        ago: util.createGeneratedAgoString(window.output.generatedMillis),
         title: document.title
     }).appendTo($('#header'));
 }
-
-function createGenerated(generated, generatedMillis) {
-    return $.tmpl('<div id="generated">' +
-    '<span>Generated<br>${generated}</span><br>' +
-    '<span id="generated_ago">${generatedAgo} ago</span>' +
-    '</div>', {
-        generated: generated,
-        generatedAgo: util.createGeneratedAgoString(generatedMillis)
-    });
-}

 function addReportOrLogLink(myType) {
     var url;

==============================================================================
Revision: 0fb0d23ab915
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 05:14:37 2012
Log:      Fixed showing long title in log and report.

Update issue 1262
Status: Done
http://code.google.com/p/robotframework/source/detail?r=0fb0d23ab915

Modified:
 /src/robot/htmldata/rebot/common.css
 /src/robot/htmldata/testdata/create_jsdata.py

=======================================
--- /src/robot/htmldata/rebot/common.css        Tue Sep  4 04:51:17 2012
+++ /src/robot/htmldata/rebot/common.css        Sun Oct 21 05:14:37 2012
@@ -36,7 +36,10 @@
 h1 {
     float: left;
     width: 70%;
-    margin: 0;
+    margin: 0 0 0.5em 0;
+}
+h2 {
+    clear: left;
 }
 #generated {
     float: right;
=======================================
--- /src/robot/htmldata/testdata/create_jsdata.py       Fri Aug 17 06:09:38 2012
+++ /src/robot/htmldata/testdata/create_jsdata.py       Sun Oct 21 05:14:37 2012
@@ -42,6 +42,9 @@
     })
     result = Results(outxml, settings).js_result
     config = {'logURL': 'log.html',
+ 'title': 'This is a long long title. A very long title indeed. '
+                       'And it even contains some stuff to <esc&ape>. '
+                       'Yet it should still look good.',
               'minLevel': 'DEBUG',
               'defaultLevel': 'DEBUG',
               'reportURL': 'report.html',

==============================================================================
Revision: ff2dbad96082
Branch:   default
Author:   Pekka Klärck
Date:     Sun Oct 21 05:15:26 2012
Log:      regen
http://code.google.com/p/robotframework/source/detail?r=ff2dbad96082

Modified:
 /src/robot/htmldata/testdata/data.js

=======================================
--- /src/robot/htmldata/testdata/data.js        Mon Aug 20 01:56:53 2012
+++ /src/robot/htmldata/testdata/data.js        Sun Oct 21 05:15:26 2012
@@ -1,10 +1,10 @@
 window.output = {};
-window.output["suite"] = [1,2,3,4,[5,6,7,8,9,10,11,12],[0,0,3361],[[13,14,15,0,[],[1,47,17],[],[[16,0,1,0,[17,18,19],[1,61,3],[[0,20,0,21,22,[1,62,0],[],[[63,2,23]]],[0,24,0,25,26,[1,63,1],[],[[63,2,27]]]]]],[],[1,1,1,1]],[28,29,30,0,[],[1,65,8],[],[[31,0,1,0,[17,18,19],[1,69,3],[[0,32,0,33,34,[1,71,0],[],[[71,2,35]]],[0,24,0,25,36,[1,72,0],[],[[72,2,37]]]]]],[],[1,1,1,1]],[38,39,40,41,[42,43,44,12],[0,74,3285,45],[],[[46,0,1,0,[42,47,48,18,19,49],[0,81,4,50],[[1,24,0,25,51,[1,83,0],[],[[83,2,51]]],[0,24,0,25,52,[1,83,1],[],[[84,2,52]]],[2,24,0,25,53,[1,84,1],[],[[85,2,53]]]]],[54,0,1,0,[42,48,18,19,55,56,57,49],[0,86,505,50],[[1,24,0,25,51,[1,87,0],[],[[87,2,51]]],[0,58,0,59,60,[1,87,502],[],[[589,2,61]]],[2,24,0,25,53,[1,590,1],[],[[591,2,53]]]]],[62,0,1,0,[42,48,18,19,56,57,49],[0,592,708,50],[[1,24,0,25,51,[1,595,1],[],[[595,2,51]]],[0,58,0,59,63,[1,596,702],[],[[1297,2,64]]],[2,24,0,25,53,[1,1299,1],[],[[1299,2,53]]]]],[65,0,0,0,[66,42,48,18,19,57,49],[0,1301,2007,50],[[1,24,0,25,51,[1,1303,1],[],[[1304,2,51]]],[0,58,0,59,67,[1,1305,2002],[],[[3306,2,68]]],[2,24,0,25,53,[1,3307,1],[],[[3307,2,53]]]]],[69,0,1,70,[71,42,48,18,19,49],[0,3308,15,72],[[1,24,0,25,51,[1,3311,1],[],[[3311,2,51]]],[0,24,0,25,73,[1,3312,1],[],[[3313,2,74]]],[0,24,0,25,75,[1,3314,1],[],[[3315,2,76]]],[0,24,0,25,77,[1,3315,1],[],[[3316,2,77]]],[0,78,0,79,77,[0,3317,4],[],[[3320,4,77],[3321,1,80]]],[2,24,0,25,53,[1,3322,0],[],[[3322,2,53]]]]],[81,0,1,0,[42,48,18,19,49,82],[0,3323,4,50],[[1,24,0,25,51,[1,3325,0],[],[[3325,2,51]]],[0,24,0,25,83,[1,3325,1],[],[[3326,2,83]]],[2,24,0,25,53,[1,3326,1],[],[[3327,2,53]]]]],[84,0,0,85,[42,48,18,19,86,87,49],[0,3327,11,50],[[1,24,0,25,88,[1,3329,0],[],[[3329,2,88]]],[0,24,0,25,89,[1,3330,0],[],[[3330,2,89]]],[0,90,0,0,0,[1,3330,2],[[0,24,0,25,91,[1,3331,1],[],[[3332,2,91]]]],[]],[3,92,0,0,0,[1,3332,5],[[4,93,0,0,0,[1,3333,1],[[0,24,0,25,94,[1,3333,0],[],[[3333,2,95]]]],[]],[4,96,0,0,0,[1,3334,1],[[0,24,0,25,94,[1,3334,1],[],[[3335,2,97]]]],[]],[4,98,0,0,0,[1,3335,1],[[0,24,0,25,94,[1,3335,1],[],[[3336,2,99]]]],[]],[4,100,0,0,0,[1,3336,1],[[0,24,0,25,94,[1,3337,0],[],[[3337,2,101]]]],[]]],[]],[2,24,0,25,102,[1,3338,0],[],[[3338,2,102]]]]],[103,0,1,0,[42,47,48,18,19,49],[0,3339,5,50],[[1,24,0,25,51,[1,3340,1],[],[[3341,2,51]]],[0,24,0,25,104,[1,3341,1],[],[[3341,3,106]]],[0,24,0,25,107,[1,3342,1],[],[[3342,2,108]]],[0,24,0,25,109,[1,3343,0],[],[[3343,1,110]]],[2,24,0,25,53,[1,3344,0],[],[[3344,2,53]]]]],[111,0,1,0,[42,47,48,18,19,49],[0,3345,6,112],[[1,24,0,25,51,[1,3346,1],[],[[3347,2,51]]],[0,78,0,79,113,[0,3347,1],[],[[3348,4,113],[3348,1,80]]],[0,78,0,79,114,[0,3348,1],[],[[3349,4,115],[3349,1,80]]],[2,24,0,25,53,[1,3350,0],[],[[3350,2,53]]]]],[116,0,1,117,[42,118,48,18,19,49],[0,3351,6,119],[[1,24,0,25,51,[1,3353,0],[],[[3353,2,51]]],[0,24,0,25,118,[1,3354,0],[],[[3354,2,118]]],[0,118,0,0,0,[0,3354,2],[[0,78,0,79,118,[0,3355,1],[],[[3356,4,118],[3356,1,80]]]],[]],[2,24,0,25,53,[1,3357,0],[],[[3357,2,53]]]]]],[[1,24,0,25,120,[1,81,0],[],[[81,2,120]]],[2,78,0,79,0,[0,3358,1],[],[[3359,4,121],[3359,1,80]]]],[10,0,8,0]]],[],[[1,24,0,25,122,[1,46,1],[],[[47,2,122]]]],[12,2,10,2]]; +window.output["suite"] = [1,2,3,4,[5,6,7,8,9,10,11,12],[0,0,3351],[[13,14,15,0,[],[1,46,17],[],[[16,0,1,0,[17,18,19],[1,59,3],[[0,20,0,21,22,[1,60,1],[],[[61,2,23]]],[0,24,0,25,26,[1,61,1],[],[[62,2,27]]]]]],[],[1,1,1,1]],[28,29,30,0,[],[1,63,7],[],[[31,0,1,0,[17,18,19],[1,67,3],[[0,32,0,33,34,[1,68,1],[],[[69,2,35]]],[0,24,0,25,36,[1,69,0],[],[[69,2,37]]]]]],[],[1,1,1,1]],[38,39,40,41,[42,43,44,12],[0,71,3278,45],[],[[46,0,1,0,[42,47,48,18,19,49],[0,78,3,50],[[1,24,0,25,51,[1,79,0],[],[[79,2,51]]],[0,24,0,25,52,[1,80,0],[],[[80,2,52]]],[2,24,0,25,53,[1,80,1],[],[[81,2,53]]]]],[54,0,1,0,[42,48,18,19,55,56,57,49],[0,81,506,50],[[1,24,0,25,51,[1,82,1],[],[[83,2,51]]],[0,58,0,59,60,[1,83,502],[],[[584,2,61]]],[2,24,0,25,53,[1,585,1],[],[[586,2,53]]]]],[62,0,1,0,[42,48,18,19,56,57,49],[0,587,708,50],[[1,24,0,25,51,[1,590,0],[],[[590,2,51]]],[0,58,0,59,63,[1,591,702],[],[[1292,2,64]]],[2,24,0,25,53,[1,1294,0],[],[[1294,2,53]]]]],[65,0,0,0,[66,42,48,18,19,57,49],[0,1296,2007,50],[[1,24,0,25,51,[1,1298,1],[],[[1299,2,51]]],[0,58,0,59,67,[1,1299,2002],[],[[3301,2,68]]],[2,24,0,25,53,[1,3302,1],[],[[3303,2,53]]]]],[69,0,1,70,[71,42,48,18,19,49],[0,3304,14,72],[[1,24,0,25,51,[1,3308,0],[],[[3308,2,51]]],[0,24,0,25,73,[1,3309,1],[],[[3310,2,74]]],[0,24,0,25,75,[1,3310,1],[],[[3311,2,76]]],[0,24,0,25,77,[1,3312,1],[],[[3312,2,77]]],[0,78,0,79,77,[0,3313,4],[],[[3317,4,77],[3317,1,80]]],[2,24,0,25,53,[1,3317,1],[],[[3318,2,53]]]]],[81,0,1,0,[42,48,18,19,49,82],[0,3318,4,50],[[1,24,0,25,51,[1,3320,0],[],[[3320,2,51]]],[0,24,0,25,83,[1,3320,1],[],[[3321,2,83]]],[2,24,0,25,53,[1,3321,1],[],[[3321,2,53]]]]],[84,0,0,85,[42,48,18,19,86,87,49],[0,3322,10,50],[[1,24,0,25,88,[1,3323,1],[],[[3324,2,88]]],[0,24,0,25,89,[1,3324,0],[],[[3324,2,89]]],[0,90,0,0,0,[1,3325,1],[[0,24,0,25,91,[1,3326,0],[],[[3326,2,91]]]],[]],[3,92,0,0,0,[1,3326,5],[[4,93,0,0,0,[1,3327,0],[[0,24,0,25,94,[1,3327,0],[],[[3327,2,95]]]],[]],[4,96,0,0,0,[1,3328,0],[[0,24,0,25,94,[1,3328,0],[],[[3328,2,97]]]],[]],[4,98,0,0,0,[1,3329,1],[[0,24,0,25,94,[1,3329,0],[],[[3329,2,99]]]],[]],[4,100,0,0,0,[1,3330,1],[[0,24,0,25,94,[1,3330,1],[],[[3331,2,101]]]],[]]],[]],[2,24,0,25,102,[1,3331,1],[],[[3332,2,102]]]]],[103,0,1,0,[42,47,48,18,19,49],[0,3332,5,50],[[1,24,0,25,51,[1,3333,1],[],[[3334,2,51]]],[0,24,0,25,104,[1,3334,1],[],[[3334,3,106]]],[0,24,0,25,107,[1,3335,0],[],[[3335,2,108]]],[0,24,0,25,109,[1,3336,0],[],[[3336,1,110]]],[2,24,0,25,53,[1,3336,1],[],[[3337,2,53]]]]],[111,0,1,0,[42,47,48,18,19,49],[0,3337,5,112],[[1,24,0,25,51,[1,3339,0],[],[[3339,2,51]]],[0,78,0,79,113,[0,3339,1],[],[[3340,4,113],[3340,1,80]]],[0,78,0,79,114,[0,3340,1],[],[[3341,4,115],[3341,1,80]]],[2,24,0,25,53,[1,3341,1],[],[[3342,2,53]]]]],[116,0,1,117,[42,118,48,18,19,49],[0,3342,6,119],[[1,24,0,25,51,[1,3344,0],[],[[3344,2,51]]],[0,24,0,25,118,[1,3344,1],[],[[3345,2,118]]],[0,118,0,0,0,[0,3345,2],[[0,78,0,79,118,[0,3346,1],[],[[3346,4,118],[3347,1,80]]]],[]],[2,24,0,25,53,[1,3347,1],[],[[3348,2,53]]]]]],[[1,24,0,25,120,[1,77,1],[],[[77,2,120]]],[2,78,0,79,0,[0,3349,0],[],[[3349,4,121],[3349,1,80]]]],[10,0,8,0]]],[],[[1,24,0,25,122,[1,45,1],[],[[46,2,122]]]],[12,2,10,2]];
 window.output["strings"] = [];
-window.output["strings"] = window.output["strings"].concat(["*","*&lt;Suite.Name&gt;","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite","*src/robot/htmldata/testdata/dir.suite","eNqtU91q3TAMvl6fQuQBYnpuBiX1GIzCoLs5ax/ASZTE1I6MrJD17SsnPTuno4MydiMS6dOnH+trkv1G3RJxFieeZhiIQSaEdaKAIJgF8uIFa/gagkZ8LpCYwUH286iY5NiN7NIEWRyLOmFginC8g0P9uT7U8HNJiViw31KdbBgl6jHSnIVdCbUYaK0bk+xVswQ1wdumtY/H+5vGtBYaBxPjcFtNIunGGKaWZGAXcSV+qonHyv411BhnG6OMO62336MbUYm9Evs4QubuN3NHPdYjkQ5XdxRN+oPQBBrpC/6SOs1jBeIl4D8mv21Kx73389M2797aB2Y+Fh/cnZxvJ93GhFBIP0T2f3fxboVzf2Z75onViGv1klriHvm2uq6Ka/P3ZSk/nveN6N/J9VASLrxmh7/mXJ+xh3cBA9EF3SXCbK3oR7KM4xIcl/XhfpeJNaIGtIPXU8a+dHEF0NEsqqJPq5dJ1aOSycl1mJVyS9sHPV324FmVFbwaRcbzi2VUov4cKTop1H5eVCSwFNGV8rLSJoveDwOyFgaXEpPrJswX+30B5nxQUg==","*&lt;Escape&gt;","*<p>&lt; &amp;lt; &lt;/script&gt;</p>","*Formatting","*<p><b>Bold</b> and <i>italics</i></p>","*Image","eNqdy9ENgCAMBcBVDAPQf4M4i2KtRPA1tYmO7w7e/yXNqXYZbitTONx1JCrYOAogjWNBJyXDCt9t6fzATmoQzPx61EvC4NUb/8w5keYPXLwvxw==","*URL","*<p><a href=\"http://robotframework.org\";>http://robotframework.org</a></p>","*Test.Suite.1","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/test.suite.1.txt","*src/robot/htmldata/testdata/dir.suite/test.suite.1.txt","*list test","*collections","*i1","*i2","*${list} = BuiltIn.Create List","*<p>Returns a list containing given items.</p>","*foo, bar, quux","*${list} = [u'foo', u'bar', u'quux']","*BuiltIn.Log","*<p>Logs the given message with the given level.</p>","*${list}","*[u'foo', u'bar', u'quux']","*Test.Suite.2","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/test.suite.2.txt","*src/robot/htmldata/testdata/dir.suite/test.suite.2.txt","*Dictionary test","*${dict} = Collections.Create Dictionary","*<p>Creates and returns a dictionary from the given `key_value_pairs`.</p>","*key, value","*${dict} = {u'key': u'value'}","*${dict}","*{u'key': u'value'}","*Tests","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/tests.txt","*src/robot/htmldata/testdata/dir.suite/tests.txt","*<p>Some suite <i>docs</i> with links: <a href=\"http://robotframework.org\";>http://robotframework.org</a></p>","*&lt; &amp;lt; \u00e4","*<p>&lt; &amp;lt; \u00e4</p>","*home *page*","*Suite teardown failed:\nAssertionError","*Simple","*default with percent %","*force","*with space","*Teardown of the parent suite failed.","*Test Setup","*do nothing","*Test Teardown","*Long","*long1","*long2","*long3","*BuiltIn.Sleep","*<p>Pauses the test executed for the given time.</p>","*0.5 seconds","*Slept 500 milliseconds","*Longer","*0.7 second","*Slept 700 milliseconds","*Longest","**kek*kone*","*2 seconds","*Slept 2 seconds","*Log HTML","*<p>This test uses <i><b>formatted</b></i> HTML.</p>\n<table border=\"1\">\n<tr>\n<td>Isn't</td>\n<td>that</td>\n<td><i>cool?</i></td>\n</tr>\n</table>","*!\"#%&amp;/()=","*escape &lt; &amp;lt; &lt;b&gt;no bold&lt;/b&gt;\n\nAlso teardown of the parent suite failed.","*&lt;blink&gt;&lt;b&gt;&lt;font face=\"comic sans ms\" size=\"42\" color=\"red\"&gt;CAN HAZ HMTL &amp; NO CSS?!?!??!!?&lt;/font&gt;&lt;/b&gt;&lt;/blink&gt;, HTML","*<blink><b><font face=\"comic sans ms\" size=\"42\" color=\"red\">CAN HAZ HMTL & NO CSS?!?!??!!?</font></b></blink>","eNpTyymxLklMyklVSy+xVgNxiuCsFBArJCOzWAGiAi5WnJFfmpOikJFYlopNS16+QnFBanJmYg5CLC2/KDexpCQzLx0kpg+3UkfBI8TXBwBuyS8B","*<table><tr><td>This table<td>should have<tr><td>no special<td>formatting</table>","*escape &lt; &amp;lt; &lt;b&gt;no bold&lt;/b&gt;","*BuiltIn.Fail","*<p>Fails the test immediately with the given (optional) message.</p>","*Traceback (most recent call last):\n File \"/home/peke/Devel/robotframework/src/robot/libraries/BuiltIn.py\", line 305, in fail\n raise AssertionError(msg) if msg else AssertionError()","*Unicode","*with unicode \u5b98\u8bdd","*hyv\u00e4\u00e4 joulua","*Complex","*<p>Test doc</p>","*owner-kekkonen","*t1","*in own setup","*in test","*User Kw","*in User Kw","*${i} IN [ @{list} ]","*${i} = 1","*Got ${i}","*Got 1","*${i} = 2","*Got 2","*${i} = 3","*Got 3","*${i} = 4","*Got 4","*in own teardown","*Log levels","*This is a WARNING!\\n\\nWith multiple lines., WARN","*s1-s3-t8-k2","*This is a WARNING!\n\nWith multiple lines.","*This is info, INFO","*This is info","*This is debug, DEBUG","*This is debug","*Multi-line failure","*Several failures occurred:\n\n1) First failure\n\n2) Second failure\nhas multiple\nlines\n\nAlso teardown of the parent suite failed.","*First failure","*Second failure\\nhas multiple\\nlines","*Second failure\nhas multiple\nlines","*Escape JS &lt;/script&gt;","*<p>&lt;/script&gt;</p>","*&lt;/script&gt;","*&lt;/script&gt;\n\nAlso teardown of the parent suite failed.","*Suite setup","*AssertionError","*higher level suite setup","*Error in file '/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/tests.txt' in table 'Settings': Test library 'p\u00f6lk\u00fc/myLib.py' does not exist."]);
-window.output["generatedTimestamp"] = "20120820 11:56:44 GMT +03:00";
-window.output["errors"] = [[79,5,123],[3341,3,106,105]];
+window.output["strings"] = window.output["strings"].concat(["*","*&lt;Suite.Name&gt;","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite","*dir.suite","eNqtU91q3TAMvl6fQuQBYnpuBiX1GIzCoLs5ax/ASZTE1I6MrJD17SsnPTuno4MydiMS6dOnH+trkv1G3RJxFieeZhiIQSaEdaKAIJgF8uIFa/gagkZ8LpCYwUH286iY5NiN7NIEWRyLOmFginC8g0P9uT7U8HNJiViw31KdbBgl6jHSnIVdCbUYaK0bk+xVswQ1wdumtY/H+5vGtBYaBxPjcFtNIunGGKaWZGAXcSV+qonHyv411BhnG6OMO62336MbUYm9Evs4QubuN3NHPdYjkQ5XdxRN+oPQBBrpC/6SOs1jBeIl4D8mv21Kx73389M2797aB2Y+Fh/cnZxvJ93GhFBIP0T2f3fxboVzf2Z75onViGv1klriHvm2uq6Ka/P3ZSk/nveN6N/J9VASLrxmh7/mXJ+xh3cBA9EF3SXCbK3oR7KM4xIcl/XhfpeJNaIGtIPXU8a+dHEF0NEsqqJPq5dJ1aOSycl1mJVyS9sHPV324FmVFbwaRcbzi2VUov4cKTop1H5eVCSwFNGV8rLSJoveDwOyFgaXEpPrJswX+30B5nxQUg==","*&lt;Escape&gt;","*<p>&lt; &amp;lt; &lt;/script&gt;</p>","*Formatting","*<p><b>Bold</b> and <i>italics</i></p>","*Image","eNqdy9ENgCAMBcBVDAPQf4M4i2KtRPA1tYmO7w7e/yXNqXYZbitTONx1JCrYOAogjWNBJyXDCt9t6fzATmoQzPx61EvC4NUb/8w5keYPXLwvxw==","*URL","*<p><a href=\"http://robotframework.org\";>http://robotframework.org</a></p>","*Test.Suite.1","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/test.suite.1.txt","*dir.suite/test.suite.1.txt","*list test","*collections","*i1","*i2","*${list} = BuiltIn.Create List","*<p>Returns a list containing given items.</p>","*foo, bar, quux","*${list} = [u'foo', u'bar', u'quux']","*BuiltIn.Log","*<p>Logs the given message with the given level.</p>","*${list}","*[u'foo', u'bar', u'quux']","*Test.Suite.2","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/test.suite.2.txt","*dir.suite/test.suite.2.txt","*Dictionary test","*${dict} = Collections.Create Dictionary","*<p>Creates and returns a dictionary from the given `key_value_pairs`.</p>","*key, value","*${dict} = {u'key': u'value'}","*${dict}","*{u'key': u'value'}","*Tests","*/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/tests.txt","*dir.suite/tests.txt","*<p>Some suite <i>docs</i> with links: <a href=\"http://robotframework.org\";>http://robotframework.org</a></p>","*&lt; &amp;lt; \u00e4","*<p>&lt; &amp;lt; \u00e4</p>","*home *page*","*Suite teardown failed:\nAssertionError","*Simple","*default with percent %","*force","*with space","*Teardown of the parent suite failed.","*Test Setup","*do nothing","*Test Teardown","*Long","*long1","*long2","*long3","*BuiltIn.Sleep","*<p>Pauses the test executed for the given time.</p>","*0.5 seconds","*Slept 500 milliseconds","*Longer","*0.7 second","*Slept 700 milliseconds","*Longest","**kek*kone*","*2 seconds","*Slept 2 seconds","*Log HTML","*<p>This test uses <i><b>formatted</b></i> HTML.</p>\n<table border=\"1\">\n<tr>\n<td>Isn't</td>\n<td>that</td>\n<td><i>cool?</i></td>\n</tr>\n</table>","*!\"#%&amp;/()=","*escape &lt; &amp;lt; &lt;b&gt;no bold&lt;/b&gt;\n\nAlso teardown of the parent suite failed.","*&lt;blink&gt;&lt;b&gt;&lt;font face=\"comic sans ms\" size=\"42\" color=\"red\"&gt;CAN HAZ HMTL &amp; NO CSS?!?!??!!?&lt;/font&gt;&lt;/b&gt;&lt;/blink&gt;, HTML","*<blink><b><font face=\"comic sans ms\" size=\"42\" color=\"red\">CAN HAZ HMTL & NO CSS?!?!??!!?</font></b></blink>","eNpTyymxLklMyklVSy+xVgNxiuCsFBArJCOzWAGiAi5WnJFfmpOikJFYlopNS16+QnFBanJmYg5CLC2/KDexpCQzLx0kpg+3UkfBI8TXBwBuyS8B","*<table><tr><td>This table<td>should have<tr><td>no special<td>formatting</table>","*escape &lt; &amp;lt; &lt;b&gt;no bold&lt;/b&gt;","*BuiltIn.Fail","*<p>Fails the test with the given message and optionally alters its tags.</p>","*Traceback (most recent call last):\n File \"/home/peke/Devel/robotframework/src/robot/libraries/BuiltIn.py\", line 326, in fail\n raise AssertionError(msg) if msg else AssertionError()","*Unicode","*with unicode \u5b98\u8bdd","*hyv\u00e4\u00e4 joulua","*Complex","*<p>Test doc</p>","*owner-kekkonen","*t1","*in own setup","*in test","*User Kw","*in User Kw","*${i} IN [ @{list} ]","*${i} = 1","*Got ${i}","*Got 1","*${i} = 2","*Got 2","*${i} = 3","*Got 3","*${i} = 4","*Got 4","*in own teardown","*Log levels","*This is a WARNING!\\n\\nWith multiple lines., WARN","*s1-s3-t8-k2","*This is a WARNING!\n\nWith multiple lines.","*This is info, INFO","*This is info","*This is debug, DEBUG","*This is debug","*Multi-line failure","*Several failures occurred:\n\n1) First failure\n\n2) Second failure\nhas multiple\nlines\n\nAlso teardown of the parent suite failed.","*First failure","*Second failure\\nhas multiple\\nlines","*Second failure\nhas multiple\nlines","*Escape JS &lt;/script&gt;","*<p>&lt;/script&gt;</p>","*&lt;/script&gt;","*&lt;/script&gt;\n\nAlso teardown of the parent suite failed.","*Suite setup","*AssertionError","*higher level suite setup","*Error in file '/home/peke/Devel/robotframework/src/robot/htmldata/testdata/dir.suite/tests.txt' in table 'Settings': Test library 'p\u00f6lk\u00fc/myLib.py' does not exist."]);
+window.output["generatedTimestamp"] = "20121021 15:14:48 GMT +03:00";
+window.output["errors"] = [[76,5,123],[3334,3,106,105]];
window.output["stats"] = [[{"elapsed":"00:00:01","fail":8,"label":"Critical Tests","pass":2},{"elapsed":"00:00:03","fail":10,"label":"All Tests","pass":2}],[{"doc":"Me, myself, and I.","elapsed":"00:00:03","fail":10,"info":"critical","label":"i1","links":"Title of i1:http://1/:::Title:http://i/","pass":2},{"doc":"Me, myself, and I.","elapsed":"00:00:03","fail":10,"info":"critical","label":"i2","links":"Title of i2:http://2/","pass":2},{"elapsed":"00:00:02","fail":1,"info":"non-critical","label":"*kek*kone*","pass":0},{"elapsed":"00:00:00","fail":1,"info":"non-critical","label":"owner-kekkonen","pass":0},{"combined":"&lt;*&gt;","elapsed":"00:00:00","fail":1,"info":"combined","label":"&lt;any&gt;","pass":0},{"combined":"i?","doc":"*Combined* and escaped &lt;&amp;lt; tag doc &amp; Me, myself, and I.","elapsed":"00:00:03","fail":10,"info":"combined","label":"IX","links":"Title of iX:http://X/","pass":2},{"combined":"foo AND i*","elapsed":"00:00:00","fail":0,"info":"combined","label":"No Match","pass":0},{"elapsed":"00:00:00","fail":1,"label":"!\"#%&amp;/()=","pass":0},{"elapsed":"00:00:03","fail":10,"label":"&lt; &amp;lt; \u00e4","pass":0},{"doc":"&lt;doc&gt;","elapsed":"00:00:00","fail":1,"label":"&lt;/script&gt;","links":"&lt;title&gt;:&lt;url&gt;","pass":0},{"elapsed":"00:00:00","fail":0,"label":"collections","pass":2},{"elapsed":"00:00:00","fail":3,"label":"default with percent %","pass":0},{"elapsed":"00:00:03","fail":10,"label":"force","links":"&lt;kuukkeli&amp;gt;:http://google.com","pass":0},{"elapsed":"00:00:01","fail":1,"label":"long1","pass":0},{"elapsed":"00:00:01","fail":2,"label":"long2","pass":0},{"elapsed":"00:00:03","fail":3,"label":"long3","pass":0},{"elapsed":"00:00:00","fail":1,"label":"t1","links":"Title:http://t/","pass":0},{"elapsed":"00:00:03","fail":10,"label":"with space","pass":0},{"elapsed":"00:00:00","fail":1,"label":"with unicode \u5b98\u8bdd","pass":0}],[{"elapsed":"00:00:03","fail":10,"id":"s1","label":"&lt;Suite.Name&gt;","name":"&lt;Suite.Name&gt;","pass":2},{"elapsed":"00:00:00","fail":0,"id":"s1-s1","label":"&lt;Suite.Name&gt;.Test.Suite.1","name":"Test.Suite.1","pass":1},{"elapsed":"00:00:00","fail":0,"id":"s1-s2","label":"&lt;Suite.Name&gt;.Test.Suite.2","name":"Test.Suite.2","pass":1},{"elapsed":"00:00:03","fail":10,"id":"s1-s3","label":"&lt;Suite.Name&gt;.Tests","name":"Tests","pass":0}]];
-window.output["generatedMillis"] = 2659;
-window.output["baseMillis"] = 1345453001341;
-window.settings = {"background":{"fail":"DeepPink"},"defaultLevel":"DEBUG","logURL":"log.html","minLevel":"DEBUG","reportURL":"report.html"};
+window.output["generatedMillis"] = 2778;
+window.output["baseMillis"] = 1350821685222;
+window.settings = {"background":{"fail":"DeepPink"},"defaultLevel":"DEBUG","logURL":"log.html","minLevel":"DEBUG","reportURL":"report.html","title":"This is a long long title. A very long title indeed. And it even contains some stuff to <esc&ape>. Yet it should still look good."};

Reply via email to