Skip to content

Commit 19e3f03

Browse files
committed
Refactoring
1 parent f4cb20b commit 19e3f03

File tree

1 file changed

+44
-36
lines changed

1 file changed

+44
-36
lines changed

robotframework_reportportal/listener.py

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,21 @@
4242
from robotframework_reportportal.static import MAIN_SUITE_ID, PABOT_WITHOUT_LAUNCH_ID_MSG
4343
from robotframework_reportportal.variables import Variables
4444

45+
46+
class __DummyContext:
47+
current = None
48+
49+
50+
try:
51+
from robot.running.context import EXECUTION_CONTEXTS
52+
except ImportError:
53+
warn(
54+
'Unable to locate Robot Framework context. "--remove-keywords" and "--flatten-keywords" feature'
55+
" will not work.",
56+
stacklevel=2,
57+
)
58+
EXECUTION_CONTEXTS = __DummyContext()
59+
4560
logger = logging.getLogger(__name__)
4661
VARIABLE_PATTERN = re.compile(r"^\s*\${[^}]*}\s*=\s*")
4762
IMAGE_PATTERN = re.compile(
@@ -61,7 +76,7 @@
6176

6277
WUKS_KEYWORD_MATCH = KeywordNameMatch(WUKS_KEYWORD_NAME)
6378
FOR_KEYWORD_MATCH = KeywordTypeEqual(FOR_KEYWORD_TYPE)
64-
WHILE_KEYWORD_NAME = KeywordTypeEqual(WHILE_KEYWORD_TYPE)
79+
WHILE_KEYWORD_MATCH = KeywordTypeEqual(WHILE_KEYWORD_TYPE)
6580

6681

6782
def check_rp_enabled(func):
@@ -286,40 +301,33 @@ def _process_keyword_remove(self):
286301
if not self.variables.remove_keywords:
287302
return
288303

289-
try:
290-
self._remove_keyword_filters = []
291-
292-
# noinspection PyUnresolvedReferences
293-
from robot.running.context import EXECUTION_CONTEXTS
294-
295-
current_context = EXECUTION_CONTEXTS.current
296-
if current_context:
297-
# noinspection PyProtectedMember
298-
for pattern_str in set(current_context.output._settings.remove_keywords):
299-
pattern_str_upper = pattern_str.upper()
300-
if "ALL" == pattern_str_upper:
301-
self._remove_all_keyword_content = True
302-
break
303-
if "PASSED" == pattern_str_upper:
304-
self._remove_data_passed_tests = True
305-
break
306-
if pattern_str_upper in {"FOR", "WHILE", "WUKS"}:
307-
if pattern_str_upper == "WUKS":
308-
self._remove_keyword_filters.append(WUKS_KEYWORD_MATCH)
309-
elif pattern_str_upper == "FOR":
310-
self._remove_keyword_filters.append(FOR_KEYWORD_MATCH)
311-
else:
312-
self._remove_keyword_filters.append(WHILE_KEYWORD_NAME)
313-
continue
314-
if ":" in pattern_str:
315-
pattern_type, pattern = pattern_str.split(":", 1)
316-
pattern_type = pattern_type.strip().upper()
317-
if "NAME" == pattern_type.upper():
318-
self._remove_keyword_filters.append(KeywordNameMatch(pattern.strip()))
319-
elif "TAG" == pattern_type.upper():
320-
self._remove_keyword_filters.append(KeywordTagMatch(pattern.strip()))
321-
except ImportError:
322-
warn('Unable to locate Robot Framework context. "--remove-keywords" feature will not work.', stacklevel=2)
304+
self._remove_keyword_filters = []
305+
current_context = EXECUTION_CONTEXTS.current
306+
if current_context:
307+
# noinspection PyProtectedMember
308+
for pattern_str in set(current_context.output._settings.remove_keywords):
309+
pattern_str_upper = pattern_str.upper()
310+
if "ALL" == pattern_str_upper:
311+
self._remove_all_keyword_content = True
312+
break
313+
if "PASSED" == pattern_str_upper:
314+
self._remove_data_passed_tests = True
315+
break
316+
if pattern_str_upper in {"FOR", "WHILE", "WUKS"}:
317+
if pattern_str_upper == "WUKS":
318+
self._remove_keyword_filters.append(WUKS_KEYWORD_MATCH)
319+
elif pattern_str_upper == "FOR":
320+
self._remove_keyword_filters.append(FOR_KEYWORD_MATCH)
321+
else:
322+
self._remove_keyword_filters.append(WHILE_KEYWORD_MATCH)
323+
continue
324+
if ":" in pattern_str:
325+
pattern_type, pattern = pattern_str.split(":", 1)
326+
pattern_type = pattern_type.strip().upper()
327+
if "NAME" == pattern_type.upper():
328+
self._remove_keyword_filters.append(KeywordNameMatch(pattern.strip()))
329+
elif "TAG" == pattern_type.upper():
330+
self._remove_keyword_filters.append(KeywordTagMatch(pattern.strip()))
323331

324332
def start_launch(self, attributes: Dict[str, Any], ts: Optional[Any] = None) -> None:
325333
"""Start a new launch at the ReportPortal.
@@ -508,7 +516,7 @@ def end_keyword(self, _: Optional[str], attributes: Dict, ts: Optional[Any] = No
508516
self._do_end_keyword(last_iteration, ts)
509517

510518
elif (
511-
(kwd.matched_filter is FOR_KEYWORD_MATCH) or (kwd.matched_filter is WHILE_KEYWORD_NAME)
519+
(kwd.matched_filter is FOR_KEYWORD_MATCH) or (kwd.matched_filter is WHILE_KEYWORD_MATCH)
512520
) and kwd.skip_origin is kwd:
513521
skipped_keywords = kwd.skipped_keywords
514522
skipped_keywords_num = len(skipped_keywords)

0 commit comments

Comments
 (0)