thoughtbot / shoulda-matchers

Simple one-liner tests for common Rails functionality
https://matchers.shoulda.io
MIT License
3.5k stars 911 forks source link

"Class" loaded more than once? #1639

Open stevenou opened 2 months ago

stevenou commented 2 months ago

Description

Changes introduced in https://github.com/thoughtbot/shoulda-matchers/pull/1610 are causing "the class" to load more than once. Specifically, the change to namespace.set(name, Class.new(parent)).

I encountered this because searchkick now raises RuntimeError: Only call searchkick once per model. I am running searchkick inside def inherited(subclass) and the changes are causing that to run again, thus raising an error.

Reproduction Steps

Not too sure what reproduction steps are relevant. At this point I don't understand the issue well enough to even know if it should be considered a bug or not.

Expected behavior

"The class" isn't loaded more than once during testing. This is the behavior in version <= 6.1.0.

Actual behavior

In version 6.2.0, the code inside def inherited(subclass) runs more than once for the "same" class, presumably because there is now another anonymous class that inherits from it.

System configuration

shoulda_matchers version: 6.2.0 rails version: 7.1.3.4 ruby version: 3.3.0