Skip to content

Commit 1f64718

Browse files
committed
Proper return for dunder methdods
kwargs only test
1 parent abf520a commit 1f64718

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

atest/librarycomponents.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ def defaults(self, arg1, arg2='default', arg3=3):
4545
def varargs_and_kwargs(self, *args, **kws):
4646
return self.format_args(*args, **kws)
4747

48+
@keyword
49+
def kwargs_only(self, **kws):
50+
return self.format_args(**kws)
51+
4852
@keyword
4953
def all_arguments(self, mandatory, default='value', *varargs, **kwargs):
5054
return self.format_args(mandatory, default, *varargs, **kwargs)

src/robotlibcore.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@ def run_keyword(self, name, args, kwargs=None):
9898
return self.keywords[name](*args, **(kwargs or {}))
9999

100100
def get_keyword_arguments(self, name):
101+
kw_method = self.__get_keyword(name)
102+
if kw_method is None:
103+
return None
101104
if robot_version >= '3.2':
102-
return self.__new_arg_spec(name)
103-
return self.__old_arg_spec(name)
104-
105-
def __new_arg_spec(self, keyword_name):
106-
kw = self.__get_keyword(keyword_name)
107-
if kw is None:
108-
return [tuple(), ]
109-
args, defaults, varargs, kwargs = self.__get_arg_spec(kw)
105+
return self.__new_arg_spec(kw_method)
106+
return self.__old_arg_spec(kw_method)
107+
108+
def __new_arg_spec(self, kw_method):
109+
args, defaults, varargs, kwargs = self.__get_arg_spec(kw_method)
110110
args = [(arg, ) for arg in args]
111111
args += [(name, value) for name, value in defaults]
112112
if varargs:
@@ -115,11 +115,8 @@ def __new_arg_spec(self, keyword_name):
115115
args.append(('**{}'.format(kwargs), ))
116116
return args
117117

118-
def __old_arg_spec(self, keyword_name):
119-
kw = self.__get_keyword(keyword_name)
120-
if kw is None:
121-
return []
122-
args, defaults, varargs, kwargs = self.__get_arg_spec(kw)
118+
def __old_arg_spec(self, kw_method):
119+
args, defaults, varargs, kwargs = self.__get_arg_spec(kw_method)
123120
args += ['{}={}'.format(name, value) for name, value in defaults]
124121
if varargs:
125122
args.append('*{}'.format(varargs))

utest/test_robotlibcore.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def test_keyword_names():
1616
'doc_and_tags',
1717
'function',
1818
'keyword_in_main',
19+
'kwargs_only',
1920
'mandatory',
2021
'method',
2122
'multi_line_doc',
@@ -58,6 +59,7 @@ def test_dir():
5859
'instance_attribute',
5960
'keyword_in_main',
6061
'keywords',
62+
'kwargs_only',
6163
'mandatory',
6264
'method',
6365
'multi_line_doc',
@@ -104,9 +106,10 @@ def test_get_keyword_arguments_rf31():
104106
assert args('mandatory') == ['arg1', 'arg2']
105107
assert args('defaults') == ['arg1', 'arg2=default', 'arg3=3']
106108
assert args('varargs_and_kwargs') == ['*args', '**kws']
109+
assert args('kwargs_only') == ['**kws']
107110
assert args('all_arguments') == ['mandatory', 'default=value', '*varargs', '**kwargs']
108111
assert args('__init__') == ['arg=None']
109-
assert args('__foobar__') == []
112+
assert args('__foobar__') is None
110113

111114

112115
@pytest.mark.skipif(robot__version < '3.2', reason='For RF 3.2 or greater')
@@ -117,7 +120,7 @@ def test_get_keyword_arguments_rf32():
117120
assert args('varargs_and_kwargs') == [('*args', ), ('**kws', )]
118121
assert args('all_arguments') == [('mandatory', ), ('default', 'value'), ('*varargs', ), ('**kwargs', )]
119122
assert args('__init__') == [('arg', None)]
120-
assert args('__foobar__') == [()]
123+
assert args('__foobar__') is None
121124

122125

123126
def test_get_keyword_documentation():

0 commit comments

Comments
 (0)