1
1
# pylint: disable=R0912,R0915
2
2
3
+ import datetime
3
4
import os .path
4
5
import sys
5
6
import xml .sax
6
- import datetime
7
+
7
8
from . import archiver , configs
8
9
9
10
DEFAULT_SUITE_NAME = 'Unnamed suite'
10
11
11
12
12
13
class XmlOutputParser (xml .sax .handler .ContentHandler ):
13
14
def __init__ (self , archiver_instance ):
14
- super (XmlOutputParser , self ).__init__ ()
15
+ super ().__init__ ()
15
16
self .archiver = archiver_instance
16
17
self ._current_content = []
17
18
self .excluding = False
@@ -39,7 +40,7 @@ class RobotFrameworkOutputParser(XmlOutputParser):
39
40
EXCLUDED_SECTIONS = ('statistics' , 'errors' )
40
41
41
42
def __init__ (self , archiver_instance ):
42
- super (RobotFrameworkOutputParser , self ).__init__ (archiver_instance )
43
+ super ().__init__ (archiver_instance )
43
44
self .archiver .test_type = "Robot Framework"
44
45
45
46
def startElement (self , name , attrs ):
@@ -53,19 +54,32 @@ def startElement(self, name, attrs):
53
54
attrs .get ('generator' ),
54
55
attrs .get ('rpa' ) if 'rpa' in attrs .getNames () else False ,
55
56
None ,
56
- )
57
+ )
57
58
elif name == 'suite' :
58
59
execution_path = attrs .getValue ('id' ) if 'id' in attrs .getNames () else None
59
60
self .archiver .begin_suite (attrs .getValue ('name' ), execution_path = execution_path )
60
61
elif name == 'test' :
61
62
execution_path = attrs .getValue ('id' ) if 'id' in attrs .getNames () else None
62
63
self .archiver .begin_test (attrs .getValue ('name' ), execution_path = execution_path )
63
64
elif name == 'kw' :
64
- name = attrs .getValue ('name' ) if 'name' in attrs .getNames () else '${EMPTY} '
65
+ name = attrs .getValue ('name' ) if 'name' in attrs .getNames () else ''
65
66
kw_type = attrs .getValue ('type' ) if 'type' in attrs .getNames () else 'Keyword'
66
67
library = attrs .getValue ('library' ) if 'library' in attrs .getNames () else ''
67
68
self .archiver .begin_keyword (name , library , kw_type )
68
- # self.archiver.set_execution_path(attrs.getValue('id'))
69
+ elif name == 'for' :
70
+ self .archiver .begin_keyword ('FOR' , '' , 'FOR' )
71
+ self .archiver .update_arguments (attrs .getValue ('flavor' ))
72
+ elif name == 'iter' :
73
+ self .archiver .begin_keyword ('FOR ITERATION' , '' , 'FOR ITERATION' )
74
+ elif name == 'branch' :
75
+ self .archiver .begin_keyword (attrs .getValue ('type' ), '' , attrs .getValue ('type' ))
76
+ if 'condition' in attrs .getNames ():
77
+ self .archiver .update_arguments (attrs .getValue ('condition' ))
78
+ elif name == 'var' :
79
+ if 'name' in attrs .getNames ():
80
+ self .archiver .update_arguments (attrs .getValue ('name' ))
81
+ elif name == 'value' :
82
+ pass
69
83
elif name == 'arg' :
70
84
pass
71
85
elif name == 'msg' :
@@ -78,19 +92,17 @@ def startElement(self, name, attrs):
78
92
attrs .getValue ('endtime' ), critical = critical )
79
93
elif name == 'assign' :
80
94
pass
81
- elif name == 'var' :
82
- pass
83
95
elif name == 'timeout' :
84
96
pass
85
97
elif name == 'tag' :
86
98
pass
87
- elif name == 'item' : # metadata item
99
+ elif name == 'item' : # metadata item # <RF4.0
88
100
self .archiver .begin_metadata (attrs .getValue ('name' ))
89
101
elif name == 'meta' : # metadata item # RF4.0
90
102
self .archiver .begin_metadata (attrs .getValue ('name' ))
91
103
elif name == 'doc' :
92
104
pass
93
- elif name in ('arguments' , 'tags' , 'metadata' , 'for' , 'iter' , 'value ' ):
105
+ elif name in ('arguments' , 'tags' , 'metadata' , 'if ' ):
94
106
pass
95
107
else :
96
108
print ("WARNING: begin unknown item '{}'" .format (name ))
@@ -108,6 +120,12 @@ def endElement(self, name):
108
120
self .archiver .end_test ()
109
121
elif name == 'kw' :
110
122
self .archiver .end_keyword ()
123
+ elif name == 'for' :
124
+ self .archiver .end_keyword ()
125
+ elif name == 'iter' :
126
+ self .archiver .end_keyword ()
127
+ elif name == 'branch' :
128
+ self .archiver .end_keyword ()
111
129
elif name == 'arg' :
112
130
self .archiver .update_arguments (self .content ())
113
131
elif name == 'msg' :
@@ -118,7 +136,9 @@ def endElement(self, name):
118
136
elif name == 'assign' :
119
137
pass
120
138
elif name == 'var' :
121
- pass
139
+ self .archiver .update_arguments (self .content ())
140
+ elif name == 'value' :
141
+ self .archiver .update_arguments (self .content ())
122
142
elif name == 'timeout' :
123
143
pass
124
144
elif name == 'tag' :
@@ -130,7 +150,7 @@ def endElement(self, name):
130
150
self .archiver .end_metadata (self .content ())
131
151
elif name == 'doc' :
132
152
pass
133
- elif name in ('arguments' , 'tags' , 'metadata' , 'for' , 'iter' , 'value ' ):
153
+ elif name in ('arguments' , 'tags' , 'metadata' , 'if ' ):
134
154
pass
135
155
else :
136
156
print ("WARNING: ending unknown item '{}'" .format (name ))
@@ -785,7 +805,7 @@ def argument_parser():
785
805
"context": "The execution context, same as --execution-context and command line will override this setting.",
786
806
"changes": [
787
807
{
788
- "name": "string representing the changed item, for example file path",
808
+ "name": "string representing the changed item, for example file path",
789
809
"repository": "Repository (optional), for separating between changed items with identical names.",
790
810
"item_type": "Separating items (optional) and for filtering subsets when prioritising",
791
811
"subtype": "(optional, for separating items for filtering subsets when prioritising"
0 commit comments