Skip to content

Commit 71219e4

Browse files
committed
Support get_keyword_tags added by robotframework/robotframework#2538
1 parent aa0ee8e commit 71219e4

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

src/robotlibcore.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def get_keyword_names(self):
5454

5555

5656
class DynamicCore(HybridCore):
57+
_get_keyword_tags_supported = False # get_keyword_tags is new in RF 3.0.2
5758

5859
def run_keyword(self, name, args, kwargs):
5960
return self.keywords[name](*args, **kwargs)
@@ -77,17 +78,18 @@ def _get_arg_spec(self, kw):
7778
defaults = zip(args[nargs:], defaults)
7879
return mandatory, defaults, spec.varargs, spec.keywords
7980

80-
def get_keyword_documentation(self, name):
81-
doc, tags = self._get_doc_and_tags(name)
82-
doc = doc or ''
83-
tags = 'Tags: {}'.format(', '.join(tags)) if tags else ''
84-
sep = '\n\n' if doc and tags else ''
85-
return doc + sep + tags
81+
def get_keyword_tags(self, name):
82+
self._get_keyword_tags_supported = True
83+
return self.keywords[name].robot_tags
8684

87-
def _get_doc_and_tags(self, name):
85+
def get_keyword_documentation(self, name):
8886
if name == '__intro__':
89-
return inspect.getdoc(self), None
87+
return inspect.getdoc(self) or ''
9088
if name == '__init__':
91-
return inspect.getdoc(self.__init__), None
89+
return inspect.getdoc(self.__init__) or ''
9290
kw = self.keywords[name]
93-
return inspect.getdoc(kw), kw.robot_tags
91+
doc = inspect.getdoc(kw) or ''
92+
if kw.robot_tags and not self._get_keyword_tags_supported:
93+
tags = 'Tags: {}'.format(', '.join(kw.robot_tags))
94+
doc = '{}\n\n{}'.format(doc, tags) if doc else tags
95+
return doc

utest/test_robotlibcore.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def test_dir():
3333
'get_keyword_arguments',
3434
'get_keyword_documentation',
3535
'get_keyword_names',
36+
'get_keyword_tags',
3637
'instance_attribute',
3738
'keyword_in_main',
3839
'keywords',
@@ -47,6 +48,7 @@ def test_dir():
4748
assert [a for a in dir(DynamicLibrary()) if a[0] != '_'] == expected
4849
expected = [e for e in expected if e not in ('get_keyword_arguments',
4950
'get_keyword_documentation',
51+
'get_keyword_tags',
5052
'run_keyword')]
5153
assert [a for a in dir(HybridLibrary()) if a[0] != '_'] == expected
5254

@@ -83,7 +85,17 @@ def test_get_keyword_documentation():
8385
assert doc('__init__') == 'Library init doc.'
8486

8587

86-
def test_tags():
88+
def test_embed_tags_to_doc_when_get_keyword_tags_is_not_called():
8789
doc = DynamicLibrary().get_keyword_documentation
8890
assert doc('tags') == 'Tags: tag, another tag'
8991
assert doc('doc_and_tags') == 'I got doc!\n\nTags: tag'
92+
93+
94+
def test_get_keyword_tags():
95+
lib = DynamicLibrary()
96+
tags = lib.get_keyword_tags
97+
doc = lib.get_keyword_documentation
98+
assert tags('tags') == ['tag', 'another tag']
99+
assert tags('doc_and_tags') == ['tag']
100+
assert doc('tags') == ''
101+
assert doc('doc_and_tags') == 'I got doc!'

0 commit comments

Comments
 (0)