@@ -234,13 +234,24 @@ def _post_skipped_keywords(self, to_post: Optional[Any]) -> None:
234234 if isinstance (to_post , Keyword ):
235235 if not to_post .posted :
236236 self ._do_start_keyword (to_post )
237- for log_message in to_post .skipped_logs :
237+ log_messages = to_post .skipped_logs
238+ to_post .skipped_logs = []
239+ for log_message in log_messages :
238240 self .__post_log_message (log_message )
239- skipped_kwds = getattr ( to_post , " skipped_keywords" , None )
241+ skipped_kwds = to_post . skipped_keywords
240242 if skipped_kwds :
241243 to_post .skipped_keywords = []
242244 for skipped_kwd in skipped_kwds :
243245 if skipped_kwd .posted :
246+ log_messages = skipped_kwd .skipped_logs
247+ skipped_kwd .skipped_logs = []
248+ for log_message in log_messages :
249+ self .__post_log_message (log_message )
250+ skipped_child_kwds = skipped_kwd .skipped_keywords
251+ for skipped_child_kwd in skipped_child_kwds :
252+ if skipped_child_kwd .posted :
253+ continue
254+ self .__post_skipped_keyword (skipped_child_kwd )
244255 continue
245256 self .__post_skipped_keyword (skipped_kwd )
246257
@@ -457,8 +468,11 @@ def end_test(self, _: Optional[str], attributes: Dict, ts: Optional[Any] = None)
457468 test = self .current_item .update (attributes )
458469 if not test .critical and test .status == "FAIL" :
459470 test .status = "SKIP"
460- if test . remove_data and attributes ["status" ] == "FAIL" :
471+ if attributes ["status" ] == "FAIL" and self . _remove_passed_keywords :
461472 self ._post_skipped_keywords (test )
473+ elif self ._remove_passed_keywords :
474+ for kwd in test .skipped_keywords :
475+ self ._log_keyword_content_removed (kwd .rp_item_id , kwd .start_time )
462476 logger .debug (f"ReportPortal - End Test: { test .robot_attributes } " )
463477 self ._remove_current_item ()
464478 self .service .finish_test (test = test , ts = ts )
@@ -504,7 +518,9 @@ def start_keyword(self, name: str, attributes: Dict, ts: Optional[Any] = None) -
504518 else :
505519 self ._do_start_keyword (kwd , ts )
506520 if skip_data :
507- self ._log_keyword_content_removed (kwd .rp_item_id , kwd .start_time )
521+ kwd .skip_origin = kwd
522+ if self ._remove_passed_keywords :
523+ parent .skipped_keywords .append (kwd )
508524
509525 self ._add_current_item (kwd )
510526
@@ -553,7 +569,10 @@ def end_keyword(self, _: Optional[str], attributes: Dict, ts: Optional[Any] = No
553569 self ._post_skipped_keywords (last_iteration )
554570 self ._do_end_keyword (last_iteration , ts )
555571 elif kwd .posted and kwd .remove_data and kwd .skip_origin is kwd :
556- self ._log_keyword_data_removed (kwd .rp_item_id , kwd .start_time )
572+ if self ._remove_all_keyword_content :
573+ self ._log_keyword_content_removed (kwd .rp_item_id , kwd .start_time )
574+ elif not self ._remove_passed_keywords :
575+ self ._log_keyword_data_removed (kwd .rp_item_id , kwd .start_time )
557576
558577 self ._remove_current_item ()
559578 if not kwd .posted :
0 commit comments