@@ -194,16 +194,17 @@ def __post_skipped_keyword(self, kwd: Keyword) -> None:
194
194
self .__post_skipped_keyword (skipped_kwd )
195
195
self ._do_end_keyword (kwd )
196
196
197
- def _post_skipped_keywords (self ) -> None :
198
- kwd = self .current_item
199
- if not kwd :
197
+ def _post_skipped_keywords (self , to_post : Optional [Any ]) -> None :
198
+ if not to_post :
200
199
return
201
- if not getattr (kwd , 'posted' , True ):
202
- self ._do_start_keyword (kwd )
203
- skipped_kwds = kwd .skipped_keywords
204
- kwd .skipped_keywords = []
205
- for skipped_kwd in skipped_kwds :
206
- self .__post_skipped_keyword (skipped_kwd )
200
+ if isinstance (to_post , Keyword ):
201
+ if not to_post .posted :
202
+ self ._do_start_keyword (to_post )
203
+ skipped_kwds = getattr (to_post , 'skipped_keywords' , None )
204
+ if skipped_kwds :
205
+ to_post .skipped_keywords = []
206
+ for skipped_kwd in skipped_kwds :
207
+ self .__post_skipped_keyword (skipped_kwd )
207
208
208
209
def _log_message (self , message : LogMessage ) -> None :
209
210
"""Send log message to the Report Portal.
@@ -220,7 +221,7 @@ def _log_message(self, message: LogMessage) -> None:
220
221
self .current_item .skipped_logs .append (message )
221
222
elif getattr (current_item , 'matched_filter' , None ) is not WKUS_KEYWORD_MATCH :
222
223
# Post everything skipped by '--removekeywords' option
223
- self ._post_skipped_keywords ()
224
+ self ._post_skipped_keywords (current_item )
224
225
self .service .log (message = message )
225
226
226
227
@check_rp_enabled
@@ -367,7 +368,7 @@ def end_suite(self, _: Optional[str], attributes: Dict, ts: Optional[Any] = None
367
368
"""
368
369
suite = self ._remove_current_item ().update (attributes )
369
370
if suite .remove_data and attributes ['status' ] == 'FAIL' :
370
- self ._post_skipped_keywords ()
371
+ self ._post_skipped_keywords (suite )
371
372
logger .debug (f'ReportPortal - End Suite: { suite .robot_attributes } ' )
372
373
self .service .finish_suite (suite = suite , ts = ts )
373
374
if attributes ['id' ] == MAIN_SUITE_ID :
@@ -412,7 +413,7 @@ def end_test(self, _: Optional[str], attributes: Dict, ts: Optional[Any] = None)
412
413
if not test .critical and test .status == 'FAIL' :
413
414
test .status = 'SKIP'
414
415
if test .remove_data and attributes ['status' ] == 'FAIL' :
415
- self ._post_skipped_keywords ()
416
+ self ._post_skipped_keywords (test )
416
417
if test .message :
417
418
self .log_message ({'message' : test .message , 'level' : 'DEBUG' })
418
419
logger .debug (f'ReportPortal - End Test: { test .robot_attributes } ' )
@@ -472,7 +473,7 @@ def end_keyword(self, _: Optional[str], attributes: Dict, ts: Optional[Any] = No
472
473
"""
473
474
kwd = self .current_item .update (attributes )
474
475
if kwd .status == 'FAIL' and not kwd .posted and kwd .matched_filter is not WKUS_KEYWORD_MATCH :
475
- self ._post_skipped_keywords ()
476
+ self ._post_skipped_keywords (kwd )
476
477
477
478
self ._remove_current_item ()
478
479
if not kwd .posted :
0 commit comments