Skip to content

Commit

Permalink
Fix zombifier on memoized methods
Browse files Browse the repository at this point in the history
* When mutant runs zombified (for self tests) the `Zombie::Mutant` namespace tests
  the `Mutant` namespace.
* So when the `Zombie::Mutant` runs it has to be able to reference the "regular" `Adamantium` not the
  zombified when testing if a memoized method has to be unwound.
  • Loading branch information
mbj committed Oct 15, 2024
1 parent 7ee17ba commit 30255b3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
9 changes: 7 additions & 2 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
# v0.12.6 unreleased

* [#1456](https://github.com/mbj/mutant/pull/1456)
Fix zombified mutant on memoized methods (only relevant for mutant developers).

# v0.12.4 2024-06-30

* [#1455](https://github.com/mbj/mutant/pull/1454)
* [#1455](https://github.com/mbj/mutant/pull/1455)

Fix parsing of empty rspec descriptions

# v0.12.3 2024-06-10

* [#1452](https://github.com/mbj/mutant/pull/1451)
* [#1452](https://github.com/mbj/mutant/pull/1452)

Remove support for EOL Ruby-3.0.
Remove another invalid mutation to super().
Expand Down
7 changes: 6 additions & 1 deletion lib/mutant/matcher/method/instance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,13 @@ def self.new(scope:, target_method:)
end
# rubocop:enable Metrics/MethodLength

TARGET_MEMOIZER = ::Mutant::Adamantium

private_constant(*constants(false))

# mutant:disable - very hard for zombie
def self.memoized_method?(scope, method_name)
scope.raw < Adamantium && scope.raw.memoized?(method_name)
scope.raw < TARGET_MEMOIZER && scope.raw.memoized?(method_name)
end
private_class_method :memoized_method?

Expand Down

0 comments on commit 30255b3

Please sign in to comment.