1717
1818from robot .variables import VariableIterator
1919
20- from ..model import ForLoop
20+ from ..model import ForLoop , Keyword
2121from .testsettings import TestSettings
2222
2323
24+ def fixture (node , fixture_type ):
25+ if node .name is None :
26+ return None
27+ return Keyword (node .name , args = node .args , type = fixture_type )
28+
29+
2430class SettingsBuilder (ast .NodeVisitor ):
2531
2632 def __init__ (self , suite , test_defaults ):
@@ -34,18 +40,16 @@ def visit_MetadataSetting(self, node):
3440 self .suite .metadata [node .name ] = node .value
3541
3642 def visit_SuiteSetupSetting (self , node ):
37- if node .name :
38- self .suite .keywords .create_setup (name = node .name , args = node .args )
43+ self .suite .keywords .setup = fixture (node , Keyword .SETUP_TYPE )
3944
4045 def visit_SuiteTeardownSetting (self , node ):
41- if node .name :
42- self .suite .keywords .create_teardown (name = node .name , args = node .args )
46+ self .suite .keywords .teardown = fixture (node , Keyword .TEARDOWN_TYPE )
4347
4448 def visit_TestSetupSetting (self , node ):
45- self .test_defaults .setup = node
49+ self .test_defaults .setup = fixture ( node , Keyword . SETUP_TYPE )
4650
4751 def visit_TestTeardownSetting (self , node ):
48- self .test_defaults .teardown = node
52+ self .test_defaults .teardown = fixture ( node , Keyword . TEARDOWN_TYPE )
4953
5054 def visit_TestTimeoutSetting (self , node ):
5155 self .test_defaults .timeout = node .value
@@ -135,20 +139,16 @@ def __init__(self, suite, defaults):
135139 def visit_TestCase (self , node ):
136140 self .test = self .suite .tests .create (name = node .name )
137141 self .generic_visit (node )
138- self ._set_settings (self .settings )
139-
140- def _set_settings (self , settings ):
141- if settings .setup and settings .setup .name :
142- self .test .keywords .create_setup (name = settings .setup .name ,
143- args = settings .setup .args )
144- if settings .teardown and settings .teardown .name :
145- self .test .keywords .create_teardown (name = settings .teardown .name ,
146- args = settings .teardown .args )
147- self .test .timeout = settings .timeout
148- self .test .tags = settings .tags
142+ self ._set_settings (self .test , self .settings )
143+
144+ def _set_settings (self , test , settings ):
145+ test .keywords .setup = settings .setup
146+ test .keywords .teardown = settings .teardown
147+ test .timeout = settings .timeout
148+ test .tags = settings .tags
149149 if settings .template :
150- self . test .template = settings .template
151- self ._set_template (self . test , settings .template )
150+ test .template = settings .template
151+ self ._set_template (test , settings .template )
152152
153153 def _set_template (self , parent , template ):
154154 for kw in parent .keywords :
@@ -182,10 +182,10 @@ def visit_DocumentationSetting(self, node):
182182 self .test .doc = node .value
183183
184184 def visit_SetupSetting (self , node ):
185- self .settings .setup = node
185+ self .settings .setup = fixture ( node , Keyword . SETUP_TYPE )
186186
187187 def visit_TeardownSetting (self , node ):
188- self .settings .teardown = node
188+ self .settings .teardown = fixture ( node , Keyword . TEARDOWN_TYPE )
189189
190190 def visit_TimeoutSetting (self , node ):
191191 self .settings .timeout = node .value
@@ -211,9 +211,7 @@ def __init__(self, resource):
211211 def visit_Keyword (self , node ):
212212 self .kw = self .resource .keywords .create (name = node .name )
213213 self .generic_visit (node )
214- if self .teardown and self .teardown .name :
215- self .kw .keywords .create_teardown (name = self .teardown .name ,
216- args = self .teardown .args )
214+ self .kw .keywords .teardown = self .teardown
217215
218216 def visit_DocumentationSetting (self , node ):
219217 self .kw .doc = node .value
@@ -231,16 +229,16 @@ def visit_TimeoutSetting(self, node):
231229 self .kw .timeout = node .value
232230
233231 def visit_TeardownSetting (self , node ):
234- self .teardown = node
232+ self .teardown = fixture ( node , Keyword . TEARDOWN_TYPE )
235233
236234 def visit_KeywordCall (self , node ):
237235 self .kw .keywords .create (name = node .keyword , args = node .args ,
238236 assign = node .assign )
239237
240238 def visit_ForLoop (self , node ):
241- for_loop = ForLoop (node .variables , node .values , node .flavor )
242- ForLoopBuilder (for_loop ).visit (node )
243- self .kw .keywords .append (for_loop )
239+ loop = ForLoop (node .variables , node .values , node .flavor )
240+ ForLoopBuilder (loop ).visit (node )
241+ self .kw .keywords .append (loop )
244242
245243
246244class ForLoopBuilder (ast .NodeVisitor ):
0 commit comments