Skip to content

Commit e7a575f

Browse files
committed
Test keyword tags set by @Keyword. Issue #35, PR #37.
1 parent ce976e0 commit e7a575f

File tree

3 files changed

+39
-7
lines changed

3 files changed

+39
-7
lines changed

src/robotremoteserver.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,18 +190,22 @@ class StaticRemoteLibrary(object):
190190

191191
def __init__(self, library):
192192
self._library = library
193-
self._robot_name_index = {}
193+
self._names, self._robot_name_index = self._get_keyword_names(library)
194194

195-
def get_keyword_names(self):
195+
def _get_keyword_names(self, library):
196196
names = []
197-
for name, kw in inspect.getmembers(self._library):
197+
robot_name_index = {}
198+
for name, kw in inspect.getmembers(library):
198199
if is_function_or_method(kw):
199200
if getattr(kw, 'robot_name', None):
200201
names.append(kw.robot_name)
201-
self._robot_name_index[kw.robot_name] = name
202+
robot_name_index[kw.robot_name] = name
202203
elif name[0] != '_':
203204
names.append(name)
204-
return names
205+
return names, robot_name_index
206+
207+
def get_keyword_names(self):
208+
return self._names
205209

206210
def run_keyword(self, name, args, kwargs=None):
207211
kw = self._get_keyword(name)
@@ -238,9 +242,10 @@ def get_keyword_documentation(self, name):
238242
if name == '__init__' and inspect.ismodule(self._library):
239243
return ''
240244
keyword = self._get_keyword(name)
241-
doc = inspect.getdoc(keyword) or ''
245+
doc = (inspect.getdoc(keyword) or '').lstrip()
242246
if getattr(keyword, 'robot_tags', []):
243-
doc += "\nTags: %s\n" % ', '.join(keyword.robot_tags)
247+
tags = 'Tags: %s' % ', '.join(keyword.robot_tags)
248+
doc = '%s\n\n%s' % (doc, tags) if doc else tags
244249
return doc
245250

246251

test/utest/run.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
curdir = dirname(abspath(__file__))
1010
sys.path.insert(0, join(curdir, '..', '..', 'src'))
11+
sys.path.insert(0, join(curdir, '..', 'libs'))
1112

1213
test_files = [f[:-3] for f in os.listdir(curdir)
1314
if f.startswith('test_') and f.endswith('.py')]

test/utest/test_keyword_decorator.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import unittest
2+
3+
from KeywordDecorator import KeywordDecorator
4+
5+
from test_robotremoteserver import NonServingRemoteServer
6+
7+
8+
class TestTags(unittest.TestCase):
9+
10+
def setUp(self):
11+
self.server = NonServingRemoteServer(KeywordDecorator())
12+
13+
def test_tags(self):
14+
self._assert_keyword_doc('tags', 'Tags: tag1, tag2')
15+
16+
def test_tags_with_doc(self):
17+
self._assert_keyword_doc('Tags with doc (and custom name)',
18+
'Keyword documentation.\n\nTags: tag1')
19+
20+
def _assert_keyword_doc(self, name, expected):
21+
doc = self.server.get_keyword_documentation(name)
22+
self.assertEqual(doc, expected)
23+
24+
25+
if __name__ == '__main__':
26+
unittest.main()

0 commit comments

Comments
 (0)