4 new revisions:

Revision: 5126df2a75f3
Author:   Pekka Klärck
Date:     Tue Jun 21 23:17:39 2011
Log:      small emb arg re cleanup
http://code.google.com/p/robotframework/source/detail?r=5126df2a75f3

Revision: 457c7b946aad
Author:   Pekka Klärck
Date:     Wed Jun 22 01:20:03 2011
Log:      Automated merge with https://robotframework.googlecode.com/hg/
http://code.google.com/p/robotframework/source/detail?r=457c7b946aad

Revision: 2a33c50ab22e
Author:   Pekka Klärck
Date:     Wed Jun 22 01:45:01 2011
Log:      print styles: correct way to hide and redisplay print_selector
http://code.google.com/p/robotframework/source/detail?r=2a33c50ab22e

Revision: 8b53a168912e
Author:   Pekka Klärck
Date:     Wed Jun 22 02:46:04 2011
Log: dump metadata to json as list and not as dict. this breaks tests. will...
http://code.google.com/p/robotframework/source/detail?r=8b53a168912e

==============================================================================
Revision: 5126df2a75f3
Author:   Pekka Klärck
Date:     Tue Jun 21 23:17:39 2011
Log:      small emb arg re cleanup
http://code.google.com/p/robotframework/source/detail?r=5126df2a75f3

Modified:
 /src/robot/running/userkeyword.py

=======================================
--- /src/robot/running/userkeyword.py   Tue Jun 21 12:59:55 2011
+++ /src/robot/running/userkeyword.py   Tue Jun 21 23:17:39 2011
@@ -197,8 +197,10 @@


 class EmbeddedArgsTemplate(UserKeywordHandler):
-    _regexp_group = re.compile(r'(?<!\\)\(')
-    _regexp_extension = re.compile(r'(?<!\\)\(\?')
+    _regexp_extension = re.compile(r'(?<!\\)\(\?.+\)')
+    _regexp_group_start = re.compile(r'(?<!\\)\((.*?)\)')
+    _regexp_group_escape = '(?:\\1)'
+    _default_pattern = '.*?'

     def __init__(self, keyword, libname):
         if keyword.args.value:
@@ -211,17 +213,17 @@

     def _read_embedded_args_and_regexp(self, string):
         args = []
-        full_regexp = ['^']
+        full_pattern = ['^']
         while True:
             before, variable, rest = self._split_from_variable(string)
             if before is None:
                 break
-            variable, regexp = self._get_regexp(variable)
+            variable, pattern = self._get_regexp_pattern_from(variable)
             args.append('${%s}' % variable)
-            full_regexp.extend([re.escape(before), '(%s)' % regexp])
+            full_pattern.extend([re.escape(before), '(%s)' % pattern])
             string = rest
-        full_regexp.extend([re.escape(rest), '$'])
-        return args, self._compile_regexp(''.join(full_regexp))
+        full_pattern.extend([re.escape(rest), '$'])
+        return args, self._compile_regexp(full_pattern)

     def _split_from_variable(self, string):
         var = VariableSplitter(string, identifiers=['$'],
@@ -230,18 +232,24 @@
             return None, None, string
         return string[:var.start], var.base, string[var.end:]

-    def _get_regexp(self, variable):
+    def _get_regexp_pattern_from(self, variable):
         if ':' not in variable:
-            return variable, '.*?'
-        variable, regexp = variable.split(':', 1)
-        if self._regexp_extension.search(regexp):
+            return variable, self._default_pattern
+        variable, pattern = variable.split(':', 1)
+        self._regexp_extensions_are_not_allowed_in(pattern)
+        return variable, self._make_groups_non_capturing_in(pattern)
+
+    def _regexp_extensions_are_not_allowed_in(self, pattern):
+        if self._regexp_extension.search(pattern):
raise DataError('Regexp extensions are not allowed in embedded '
                             'arguments.')
-        return variable, self._regexp_group.sub('(?:', regexp)
+
+    def _make_groups_non_capturing_in(self, pattern):
+ return self._regexp_group_start.sub(self._regexp_group_escape, pattern)

     def _compile_regexp(self, pattern):
         try:
-            return re.compile(pattern, re.IGNORECASE)
+            return re.compile(''.join(pattern), re.IGNORECASE)
         except:
raise DataError("Compiling embedded arguments regexp failed: %s"
                             % utils.get_error_message())

==============================================================================
Revision: 457c7b946aad
Author:   Pekka Klärck
Date:     Wed Jun 22 01:20:03 2011
Log:      Automated merge with https://robotframework.googlecode.com/hg/
http://code.google.com/p/robotframework/source/detail?r=457c7b946aad



==============================================================================
Revision: 2a33c50ab22e
Author:   Pekka Klärck
Date:     Wed Jun 22 01:45:01 2011
Log:      print styles: correct way to hide and redisplay print_selector
http://code.google.com/p/robotframework/source/detail?r=2a33c50ab22e

Modified:
 /src/robot/webcontent/print.css
 /src/robot/webcontent/report.css

=======================================
--- /src/robot/webcontent/print.css     Mon Jun 20 12:12:12 2011
+++ /src/robot/webcontent/print.css     Wed Jun 22 01:45:01 2011
@@ -13,5 +13,5 @@
     display: none;
 }
 #print_selector {
-    visibility: visible;
-}
+    display: table-cell;
+}
=======================================
--- /src/robot/webcontent/report.css    Mon Jun 20 13:40:04 2011
+++ /src/robot/webcontent/report.css    Wed Jun 22 01:45:01 2011
@@ -50,7 +50,7 @@
     white-space: normal;
 }
 #print_selector {
-    visibility: hidden;
+    display: none;
 }
 /* Tabs - adapted from http://www.htmldog.com/articles/tabs */
 #detail_tabs {

==============================================================================
Revision: 8b53a168912e
Author:   Pekka Klärck
Date:     Wed Jun 22 02:46:04 2011
Log: dump metadata to json as list and not as dict. this breaks tests. will be fixed soon.
http://code.google.com/p/robotframework/source/detail?r=8b53a168912e

Modified:
 /src/robot/result/elementhandlers.py
 /src/robot/webcontent/testdata.js
 /src/robot/webcontent/testdata/data.js

=======================================
--- /src/robot/result/elementhandlers.py        Tue Jun 21 02:46:53 2011
+++ /src/robot/result/elementhandlers.py        Wed Jun 22 02:46:04 2011
@@ -215,10 +215,10 @@

     def __init__(self, context, attrs):
         _Handler.__init__(self, context)
-        self._metadata = {}
+        self._metadata = []

     def add_child_data(self, data):
-        self._metadata[data[0]] = data[1]
+        self._metadata.extend(data)

     def end_element(self, text):
         return self._metadata
=======================================
--- /src/robot/webcontent/testdata.js   Tue Jun 21 05:49:44 2011
+++ /src/robot/webcontent/testdata.js   Wed Jun 22 02:46:04 2011
@@ -142,8 +142,8 @@

     function parseMetadata(data) {
         var metadata = {};
-        for (var key in data) {
-            metadata[get(key)] = get(data[key]);
+        for (var i=0; i<data.length; i+=2) {
+            metadata[get(data[i])] = get(data[i+1]);
         }
         return metadata;
     }
=======================================
--- /src/robot/webcontent/testdata/data.js      Tue Jun 21 12:33:07 2011
+++ /src/robot/webcontent/testdata/data.js      Wed Jun 22 02:46:04 2011
@@ -1,3 +1,11 @@
-var u = "";
-window.output = {"integers":[0,-1,1,10,11,9,2,15,14,16,12,4,20,19,21,22,23,3,24,26,25,27,31,28,33,32,35,34,36,38,39,40,42,41,43,44,45,5,46,37,48,47,17,-34,83,6],"errors":[[-14,88,89]],"stats":[[{"fail":3,"label":"Critical Tests","pass":2},{"fail":4,"label":"All Tests","pass":2}],[{"info":"critical","links":"Title of i1:http://1/","doc":"","label":"i1","combined":"","pass":2,"fail":4},{"info":"critical","links":"Title of i2:http://2/","doc":"","label":"i2","combined":"","pass":2,"fail":4},{"info":"non-critical","links":"","doc":"","label":"owner-kekkonen","combined":"","pass":0,"fail":1},{"info":"combined","links":"Title of iX:http://X/","doc":";<b>Combined</b> tag doc","label":"IX","combined":"i?","pass":2,"fail":4},{"info":"combined","links":"","doc":"","label":"zap","combined":"foo & i*","pass":0,"fail":0},{"info":"","links":"","doc":"","label":"< &lt;","combined":"","pass":0,"fail":4},{"info":"","links":"","doc":"","label":"collections","combined":"","pass":2,"fail":0},{"info":"","links":"","doc":"","label":"default","combined":"","pass":0,"fail":3},{"info":"","links":"kuukkeli:http://google.com","doc":"","label":"force","combined":"","pass":0,"fail":4},{"info":"","links":"","doc":"","label":"t1","combined":"","pass":0,"fail":1},{"info":"","links":"","doc":"this is <b>my bold</b> test","label":"test","combined":"","pass":0,"fail":4}],[{"fail":4,"label":"Dir.Suite","name":"Dir.Suite","pass":2},{"fail":0,"label":"Dir.Suite.Test.Suite.1","name":"Test.Suite.1","pass":1},{"fail":0,"label":"Dir.Suite.Test.Suite.2","name":"Test.Suite.2","pass":1},{"fail":4,"label":"Dir.Suite.Tests","name":"Tests","pass":0}]],"generatedMillis":-760,"generator":"Robot trunk 20110613 (Python 2.6.5 on linux2)","generatedTimestamp":"20110621 22:20:44 GMT +03:00","baseMillis":1308684044760,"suite":[27,86,87,1,{2:3,4:5,6:7},[12,13,0,8,9,[-1,10,9],[11,-2,-3]],[27,28,29,0,{},[24,25,0,26,0,[17,18,0,14,15,[-4,10,16],[11,-4,-1]],[17,13,0,8,19,[-5,10,20],[11,-4,-3]],[21,22,23],[11,-6,-7]],[11,-3,-5],[-3,-3,-3,-3]],[27,37,38,0,{},[24,36,0,26,0,[17,33,0,30,31,[-8,10,32],[11,-9,-3]],[17,13,0,8,34,[-10,10,35],[11,-8,-3]],[21,22,23],[11,-9,-7]],[11,-11,-12],[-3,-3,-3,-3]],[27,84,85,39,{40:7},[12,13,0,8,41,[-13,10,41],[11,-14,-3]],[24,50,0,26,0,[12,13,0,8,42,[-15,10,42],[11,-15,-1]],[17,13,0,8,43,[-16,10,43],[11,-15,-3]],[46,13,0,8,44,[-17,10,44],[11,-16,-3]],[47,48,49,22,23,24],[11,-13,-18]],[24,57,0,26,0,[12,13,0,8,42,[-19,10,42],[11,-19,-3]],[17,13,0,8,51,[-20,10,52],[11,-21,-3]],[17,13,0,8,53,[-22,10,54],[11,-22,-3]],[17,56,0,55,53,[-23,45,54],[45,-24,-18]],[46,13,0,8,44,[-25,10,44],[11,-26,-3]],[47,48,49,22,23,24],[45,-17,-4,53]],[24,59,0,26,0,[12,13,0,8,42,[-27,10,42],[11,-28,-3]],[17,13,0,8,58,[-27,10,58],[11,-27,-3]],[46,13,0,8,44,[-29,10,44],[11,-29,-3]],[47,48,49,22,23,24],[11,-28,-18]],[24,80,0,81,60,[12,13,0,8,61,[-30,10,61],[11,-30,-1]],[17,13,0,8,62,[-31,10,62],[11,-31,-1]],[17,64,0,0,0,[17,13,0,8,63,[-32,10,63],[11,-32,-3]],[11,-32,-3]],[75,76,0,0,0,[67,68,0,0,0,[17,13,0,8,65,[-33,10,66],[11,-33,-1]],[11,-34,-3]],[67,70,0,0,0,[17,13,0,8,65,[-35,10,69],[11,-35,-1]],[11,-33,-3]],[67,72,0,0,0,[17,13,0,8,65,[-36,10,71],[11,-36,-1]],[11,-36,-1]],[67,74,0,0,0,[17,13,0,8,65,[-37,10,73],[11,-37,-1]],[11,-37,-3]],[11,-34,-38]],[46,13,0,8,77,[-39,10,77],[11,-39,-1]],[47,49,22,23,78,79,24],[11,-40,-4]],[46,56,0,55,0,[-41,45,82],[45,-42,-3]],[45,-43,-23,83],[-12,-1,-18,-1]],[45,-44,-45],[-46,-7,-38,-7]],"strings":["*","eNqdzkEKwjAQheG9pxhygAS3Jca14ErwAEk7nQYTJ0wH2t7eunEhuHH9+D+eT+F+u3bepQA+wiQ4nsyk2jrnhBPrKLHiwvKwLGTCz8m7GHwScOHgc7jUSLireVdzJZil/7A9D2iJmQranqtrX5orTHzGVW17kgHNWvDfeNbtHSeWAaWDY1th5pIHIImb2c++AG8mWaA=","*Formatting","*<b>Bold</b> and <i>italics</i>","*Image","eNqdy8ENgzAMBdBVrAwQiyui7SyQGDdq0h85loDtK1bou7+lNKVh6RHe7n1mTsgSFdAqMaFxZ8MG321tcsA+XKF4yemxfzWQF6/ybx5+3XmDZbGZpn7SQC2Z1NYrED9/2Og45A==","*URL","*<a href=\"http://robotframework.org\";>http://robotframework.org</a>","*Logs the given message with the given level.","*higher level suite setup","*I","*P","*setup","*BuiltIn.Log","*Returns a list containing given items.","*foo, bar, quux","*${list} = [u'foo', u'bar', u'quux']","*kw","*${list} = BuiltIn.Create List","*${list}","*[u'foo', u'bar', u'quux']","*collections","*i1","*i2","*test","*list test","*Y","*suite","*/home/mkorpela/workspace/robot/src/robot/webcontent/testdata/dir.suite/test.suite.1.txt","*Test.Suite.1","*Creates and returns a dictionary from the given `key_value_pairs`.","*key, value","*${dict} = {u'key': u'value'}","*${dict} = Collections.Create Dictionary","*${dict}","*{u'key': u'value'}","*Dictionary test","*/home/mkorpela/workspace/robot/src/robot/webcontent/testdata/dir.suite/test.suite.2.txt","*Test.Suite.2","*Some suite docs with links: <a href=\"http://robotframework.org\";>http://robotframework.org</a>","*home *page*","*Suite setup","*Test Setup","*do nothing","*Test Teardown","*F","*teardown","*< &lt;","*default","*force","*Simple","*<blink><b><font face=\"comic sans ms\" size=\"42\" color=\"red\">CAN HAZ HMTL?!?!??!!?</font></b></blink>, HTML","*<blink><b><font face=\"comic sans ms\" size=\"42\" color=\"red\">CAN HAZ HMTL?!?!??!!?</font></b></blink>","*escape < &lt; <b>no bold</b>","*escape &lt; &amp;lt; &lt;b&gt;no bold&lt;/b&gt;","*Fails the test immediately with the given (optional) message.","*BuiltIn.Fail","*Log HTML","*hyv\u00e4\u00e4 joulua","*Unicode","*Test doc","*in own setup","*in test","*in User Kw","*User Kw","*Got ${i}","*Got 1","*foritem","*${i} = 1","*Got 2","*${i} = 2","*Got 3","*${i} = 3","*Got 4","*${i} = 4","*forloop","*${i} IN [ @{list} ]","*in own teardown","*owner-kekkonen","*t1","*Complex","*N","*AssertionError","*Suite teardown failed:\nAssertionError","*/home/mkorpela/workspace/robot/src/robot/webcontent/testdata/dir.suite/tests.txt","*Tests","*/home/mkorpela/workspace/robot/src/robot/webcontent/testdata/dir.suite","*Dir.Suite","*E","*Invalid syntax in file '/home/mkorpela/workspace/robot/src/robot/webcontent/testdata/dir.suite/tests.txt' in table 'Settings': Test library 'p\u00f6lk\u00fc/myLib.py' does not exist."]};
+window.output = {};
+window.output["integers"] = [0,-1,1,15,14,17,16,13,5,19,26,25,27,23,20,9,36,35,39,38,41,40,42,37,6,46,48,47,50,49,54,51,3,55,44,12,59,61,60,63,62,57,7,67,66,69,68,72,71,70,2,75,74,77,76,80,79,83,82,81,73,11,85,84,65,21,88,87,30,4,-44,134,34];
+window.output["errors"] = [[-73,88,89]];
+window.output["stats"] = [[{"fail":3,"label":"Critical Tests","pass":2},{"fail":4,"label":"All Tests","pass":2}],[{"info":"critical","links":"Title of i1:http://1/","doc":"","label":"i1","combined":"","pass":2,"fail":4},{"info":"critical","links":"Title of i2:http://2/","doc":"","label":"i2","combined":"","pass":2,"fail":4},{"info":"non-critical","links":"","doc":"","label":"owner-kekkonen","combined":"","pass":0,"fail":1},{"info":"combined","links":"Title of iX:http://X/","doc":";<b>Combined</b> tag doc","label":"IX","combined":"i?","pass":2,"fail":4},{"info":"combined","links":"","doc":"","label":"zap","combined":"foo & i*","pass":0,"fail":0},{"info":"","links":"","doc":"","label":"< &lt;","combined":"","pass":0,"fail":4},{"info":"","links":"","doc":"","label":"collections","combined":"","pass":2,"fail":0},{"info":"","links":"","doc":"","label":"default","combined":"","pass":0,"fail":3},{"info":"","links":"kuukkeli:http://google.com","doc":"","label":"force","combined":"","pass":0,"fail":4},{"info":"","links":"","doc":"","label":"t1","combined":"","pass":0,"fail":1},{"info":"","links":"","doc":"this is <b>my bold</b> test","label":"test","combined":"","pass":0,"fail":4}],[{"fail":4,"label":"Dir.Suite","name":"Dir.Suite","pass":2},{"fail":0,"label":"Dir.Suite.Test.Suite.1","name":"Test.Suite.1","pass":1},{"fail":0,"label":"Dir.Suite.Test.Suite.2","name":"Test.Suite.2","pass":1},{"fail":4,"label":"Dir.Suite.Tests","name":"Tests","pass":0}]];
+window.output["generatedMillis"] = -68;
+window.output["generator"] = "Robot trunk 20110613 (Python 2.6.6 on linux2)";
+window.output["generatedTimestamp"] = "20110622 12:41:02 GMT +03:00";
+window.output["baseMillis"] = 1308735662068;
+window.output["suite"] = [27,86,87,1,[2,3,4,5,6,7],[12,13,0,8,9,[-1,10,9],[11,-2,-3]],[27,28,29,0,[],[24,25,0,26,0,[17,18,0,14,15,[-4,10,16],[11,-5,-3]],[17,13,0,8,19,[-6,10,20],[11,-7,-3]],[21,22,23],[11,-8,-9]],[11,-1,-10],[-3,-3,-3,-3]],[27,37,38,0,[],[24,36,0,26,0,[17,33,0,30,31,[-11,10,32],[11,-12,-1]],[17,13,0,8,34,[-13,10,35],[11,-11,-3]],[21,22,23],[11,-14,-9]],[11,-15,-16],[-3,-3,-3,-3]],[27,84,85,39,[40,7],[12,13,0,8,41,[-17,10,41],[11,-18,-3]],[24,50,0,26,0,[12,13,0,8,42,[-19,10,42],[11,-20,-3]],[17,13,0,8,43,[-21,10,43],[11,-22,-3]],[46,13,0,8,44,[-23,10,44],[11,-23,-3]],[47,48,49,22,23,24],[11,-24,-25]],[24,57,0,26,0,[12,13,0,8,42,[-26,10,42],[11,-26,-3]],[17,13,0,8,51,[-27,10,52],[11,-28,-3]],[17,13,0,8,53,[-29,10,54],[11,-30,-3]],[17,56,0,55,53,[-31,45,54],[45,-32,-33]],[46,13,0,8,44,[-34,10,44],[11,-34,-3]],[47,48,49,22,23,24],[45,-35,-36,53]],[24,59,0,26,0,[12,13,0,8,42,[-37,10,42],[11,-37,-3]],[17,13,0,8,58,[-38,10,58],[11,-39,-3]],[46,13,0,8,44,[-40,10,44],[11,-41,-3]],[47,48,49,22,23,24],[11,-42,-43]],[24,80,0,81,60,[12,13,0,8,61,[-44,10,61],[11,-45,-3]],[17,13,0,8,62,[-46,10,62],[11,-47,-3]],[17,64,0,0,0,[17,13,0,8,63,[-48,10,63],[11,-49,-3]],[11,-50,-51]],[75,76,0,0,0,[67,68,0,0,0,[17,13,0,8,65,[-52,10,66],[11,-53,-3]],[11,-53,-51]],[67,70,0,0,0,[17,13,0,8,65,[-54,10,69],[11,-54,-3]],[11,-55,-51]],[67,72,0,0,0,[17,13,0,8,65,[-56,10,71],[11,-57,-3]],[11,-57,-51]],[67,74,0,0,0,[17,13,0,8,65,[-58,10,73],[11,-59,-3]],[11,-60,-51]],[11,-61,-62]],[46,13,0,8,77,[-63,10,77],[11,-64,-3]],[47,49,22,23,78,79,24],[11,-65,-66]],[46,56,0,55,0,[-67,45,82],[45,-68,-51]],[45,-69,-37,83],[-70,-1,-33,-1]],[45,-71,-72],[-25,-51,-9,-51]]; +window.output["strings"] = ["*","eNqdzkEKwjAQheG9pxhygAS3Jca14ErwAEk7nQYTJ0wH2t7eunEhuHH9+D+eT+F+u3bepQA+wiQ4nsyk2jrnhBPrKLHiwvKwLGTCz8m7GHwScOHgc7jUSLireVdzJZil/7A9D2iJmQranqtrX5orTHzGVW17kgHNWvDfeNbtHSeWAaWDY1th5pIHIImb2c++AG8mWaA=","*Formatting","*<b>Bold</b> and <i>italics</i>","*Image","eNqdy8ENgzAMBdBVrAwQiyui7SyQGDdq0h85loDtK1bou7+lNKVh6RHe7n1mTsgSFdAqMaFxZ8MG321tcsA+XKF4yemxfzWQF6/ybx5+3XmDZbGZpn7SQC2Z1NYrED9/2Og45A==","*URL","*<a href=\"http://robotframework.org\";>http://robotframework.org</a>","*Logs the given message with the given level.","*higher level suite setup","*I","*P","*setup","*BuiltIn.Log","*Returns a list containing given items.","*foo, bar, quux","*${list} = [u'foo', u'bar', u'quux']","*kw","*${list} = BuiltIn.Create List","*${list}","*[u'foo', u'bar', u'quux']","*collections","*i1","*i2","*test","*list test","*Y","*suite","*/home/peke/Devel/robotframework/src/robot/webcontent/testdata/dir.suite/test.suite.1.txt","*Test.Suite.1","*Creates and returns a dictionary from the given `key_value_pairs`.","*key, value","*${dict} = {u'key': u'value'}","*${dict} = Collections.Create Dictionary","*${dict}","*{u'key': u'value'}","*Dictionary test","*/home/peke/Devel/robotframework/src/robot/webcontent/testdata/dir.suite/test.suite.2.txt","*Test.Suite.2","*Some suite docs with links: <a href=\"http://robotframework.org\";>http://robotframework.org</a>","*home *page*","*Suite setup","*Test Setup","*do nothing","*Test Teardown","*F","*teardown","*< &lt;","*default","*force","*Simple","*<blink><b><font face=\"comic sans ms\" size=\"42\" color=\"red\">CAN HAZ HMTL?!?!??!!?</font></b></blink>, HTML","*<blink><b><font face=\"comic sans ms\" size=\"42\" color=\"red\">CAN HAZ HMTL?!?!??!!?</font></b></blink>","*escape < &lt; <b>no bold</b>","*escape &lt; &amp;lt; &lt;b&gt;no bold&lt;/b&gt;","*Fails the test immediately with the given (optional) message.","*BuiltIn.Fail","*Log HTML","*hyv\u00e4\u00e4 joulua","*Unicode","*Test doc","*in own setup","*in test","*in User Kw","*User Kw","*Got ${i}","*Got 1","*foritem","*${i} = 1","*Got 2","*${i} = 2","*Got 3","*${i} = 3","*Got 4","*${i} = 4","*forloop","*${i} IN [ @{list} ]","*in own teardown","*owner-kekkonen","*t1","*Complex","*N","*AssertionError","*Suite teardown failed:\nAssertionError","*/home/peke/Devel/robotframework/src/robot/webcontent/testdata/dir.suite/tests.txt","*Tests","*/home/peke/Devel/robotframework/src/robot/webcontent/testdata/dir.suite","*Dir.Suite","*E","*Invalid syntax in file '/home/peke/Devel/robotframework/src/robot/webcontent/testdata/dir.suite/tests.txt' in table 'Settings': Test library 'p\u00f6lk\u00fc/myLib.py' does not exist."]; window.settings = {"reportURL":"report.html","background":{"fail":"DeepPink"},"logURL":"log.html"};

Reply via email to