You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using BuildIn.run_keyword the (positional) arguments that follow the target keyword name should be passed to the keyword "as is".
A change in RF7 changed this behavior in a specific situation; if there are (exactly) 2 positional arguments following the keyword name and the first of those arguments is iterable and the second a mapping, the arguments are no longer passed "as is" but they are expanded before being passed to the target keyword.
The text was updated successfully, but these errors were encountered:
This is due to #5000. The motivation of that enhancement was making it more convenient for listeners and model modifiers to set keyword arguments, and it didn't occur to me that it would also affect using BuiltIn.run_keyword programmatically. Or possibly it did occur, but I thought it's so unlikely that it would cause problems that we don't need to care.
Fixing this issue so that BuiltIn.run_keyword works like earlier, without special cases, when used programmatically is easy. The problem is that then libraries using it cannot benefit from the more convenient API provided by #5000. That's unfortunate, but I believe that behavior is safer. We also already have various issues related to making it easier for libraries to call other keywords. I hope we could enhance that situation in general in RF 7.1 or latest in RF 8.0.
This problem can be reproduced also without a library by passing keyword name and arguments as a list variable to Run Keyword so that it needs to resolve also arguments:
${name and args} = Evaluate 'Log Many', ['a', 'b', 'c'], {'d': 'e'}
Run Keyword @{name and args}
When using
BuildIn.run_keyword
the (positional) arguments that follow the target keyword name should be passed to the keyword "as is".A change in RF7 changed this behavior in a specific situation; if there are (exactly) 2 positional arguments following the keyword name and the first of those arguments is iterable and the second a mapping, the arguments are no longer passed "as is" but they are expanded before being passed to the target keyword.
The text was updated successfully, but these errors were encountered: