Skip to content

Commit 1ba9019

Browse files
committed
Fix remove keywords for PASSED case. Add more tests
1 parent b1c22e3 commit 1ba9019

File tree

3 files changed

+59
-5
lines changed

3 files changed

+59
-5
lines changed

robotframework_reportportal/listener.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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:

robotframework_reportportal/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ class Test:
243243
status: str
244244
template: str
245245
type: str = "TEST"
246+
skipped_keywords: List[Keyword]
246247
remove_data: bool = False
247248

248249
def __init__(self, name: str, robot_attributes: Dict[str, Any], test_attributes: List[str]):
@@ -269,6 +270,7 @@ def __init__(self, name: str, robot_attributes: Dict[str, Any], test_attributes:
269270
self.status = robot_attributes.get("status")
270271
self.template = robot_attributes["template"]
271272
self.type = "TEST"
273+
self.skipped_keywords = []
272274

273275
@property
274276
def critical(self) -> bool:

tests/integration/test_remove_keywords.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,39 @@
176176
1,
177177
"Content removed using the --remove-keywords option.",
178178
),
179+
(
180+
"examples/for_keyword_failed.robot",
181+
"PASSED",
182+
1,
183+
["FAILED"] + ["PASSED"] + ["SKIPPED"] * 2 + ["PASSED"] * 2 + ["FAILED"] * 5,
184+
3,
185+
0,
186+
"apple",
187+
),
188+
(
189+
"examples/while_keyword_failed.robot",
190+
"PASSED",
191+
1,
192+
["PASSED"] + ["FAILED"] + ["PASSED"] * 2 + ["SKIPPED"] * 2 + ["PASSED"] * 3 + ["FAILED"] * 5,
193+
7,
194+
0,
195+
"Length is 3.",
196+
),
197+
(
198+
"examples/wuks_keyword_failed.robot",
199+
"PASSED",
200+
1,
201+
["FAILED"]
202+
+ ["PASSED"] * 2
203+
+ ["FAILED"] * 3
204+
+ ["PASSED"] * 2
205+
+ ["FAILED"] * 3
206+
+ ["PASSED"] * 2
207+
+ ["FAILED"] * 5,
208+
10,
209+
0,
210+
"Keyword 'Fail on first try' failed after retrying 3 times. The last error was: To less executions",
211+
),
179212
],
180213
)
181214
@mock.patch(REPORT_PORTAL_SERVICE)

0 commit comments

Comments
 (0)