Remove ModuleMethod#method_exists?
#295
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is similar to the change in this commit.
This commit made
ModuleMethod#method_exists?
redundant by changing the implementation ofClassMethod#hide_original_method
so that it usesClassMethod#method_visibility
instead.This introduced a subtle change in behaviour due to the difference in
ModuleMethod#method_exists?
andClassMethod#method_visibility
. The former would return false if the method being stubbed was onKernel
orObject
while the latter will return true in those cases. This gistillustrates the difference.
Practically, this meant that some stubbed module methods (those defined on Kernel and Object) wouldn't have had the correct visibility set. The tests added in this commit ensure we don't introduce
regressions in future. The tests for the visibility of the protected and private methods failed prior to this commit. I confirmed this by checking our the commit before that (
git co e87c03b068efc48267fbcd5a295514077c52b901~
) and running these new tests.