-
Notifications
You must be signed in to change notification settings - Fork 607
feat: allow setting args for variadic functions #595
feat: allow setting args for variadic functions #595
Conversation
The gomock's Call interface allows for setting a value to a specified argument, making it convinient to work with functions that return data through pointer arguments. However, this is not possible for variadic functions, the error is: SetArg(1, ...) called for a method with 1 args... The root cause is that the variadic argument in a form of ...interface{} is threated as single value instead of being treated as slice. This commit changes this situation by making sure that the variadic arguments that are a slice are treated as slices. As a consequence it is now possible to set argument value for variadic functions. See: golang#174
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
1 similar comment
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
@googlebot I signed it! |
CLAs look good, thanks! ℹ️ Googlers: Go here for more info. |
1 similar comment
CLAs look good, thanks! ℹ️ Googlers: Go here for more info. |
// TODO: This will break on variadic methods. | ||
// We will need to check those at invocation time. | ||
if n < 0 || n >= mt.NumIn() { | ||
if (n < 0 || n >= mt.NumIn()) && !mt.IsVariadic() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please add some tests for this. You can either do a traditional tests or a sample code generation like others in the mockgen/internal/test
dir.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add tests :)
Sure, will do. Thanks for review and sorry for missing your comments on time |
@bergotorino are you still planning to do this? |
Closing due to lack of response. |
The gomock's Call interface allows for setting a value to a specified
argument, making it convinient to work with functions that return data
through pointer arguments. However, this is not possible for variadic
functions, the error is:
SetArg(1, ...) called for a method with 1 args...
The root cause is that the variadic argument in a form of
...interface{} is threated as single value instead of being treated as
slice.
This commit changes this situation by making sure that the variadic
arguments that are a slice are treated as slices. As a consequence it is
now possible to set argument value for variadic functions.
See: #174