Skip to content

JRuby 10.1 circular causes failures within nested rescue (e.g rspec's tests) #9398

@chadlwilson

Description

@chadlwilson

There are failures within the rspec test suite that might expose some intentional or unintentional differences between JRuby 10.1 and CRuby 4.0.

https://github.com/chadlwilson/rspec/actions/runs/24822251102

Environment Information

jruby 10.1.0.0 (4.0.0) 2026-04-20 32f988b78c OpenJDK 64-Bit Server VM 21.0.10+7-LTS on 21.0.10+7-LTS +indy +jit [x86_64-linux]

Expected Behavior

  • Tests should be passing; or any known differences understood so we can mark the tests as Pending or similar, and linked to upstream issues here.

Actual Behavior

circular causes

  • rspec-support RSpec::Support.method_handle_for(object, method_name) fails with NameError when an undefined method is fetched from an object that has overridden method to raise an Exception

    stack
      1) RSpec::Support.method_handle_for(object, method_name) fails with `NameError` when an undefined method is fetched from an object that has overridden `method` to raise an Exception
         Failure/Error: DEFAULT_FAILURE_NOTIFIER = lambda { |failure, _opts| raise failure }
    
           expected NameError, got #<ArgumentError: circular causes> with backtrace:
             # ./lib/rspec/support.rb:55:in 'method_handle_for'
             # ./spec/rspec/support_spec.rb:59:in 'block in RSpec'
             # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/matchers/built_in/raise_error.rb:63:in 'matches?'
             # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:40:in 'block in handle_matcher'
             # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:18:in 'with_matcher'
             # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:39:in 'handle_matcher'
             # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/expectation_target.rb:67:in 'to'
             # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/expectation_target.rb:138:in 'to'
             # ./spec/rspec/support_spec.rb:58:in 'block in RSpec'
             # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:256:in 'block in run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'block in with_around_and_singleton_context_hooks'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'block in with_around_example_hooks'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'block in run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:611:in 'run_around_example_hooks_for'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'with_around_example_hooks'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'with_around_and_singleton_context_hooks'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:252:in 'run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:645:in 'block in run_examples'
             # org/jruby/RubyArrayNative.java:2415:in 'map'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:650:in 'run_examples'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:606:in 'run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'block in run'
             # org/jruby/RubyArrayNative.java:2415:in 'map'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
             # org/jruby/RubyArrayNative.java:2415:in 'map'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/configuration.rb:1934:in 'with_suite_hooks'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:116:in 'block in run_specs'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/reporter.rb:74:in 'report'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:115:in 'run_specs'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:89:in 'run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:71:in 'run'
             # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:45:in 'invoke'
             # /home/runner/work/rspec/rspec/rspec-core/exe/rspec:4:in '<main>'
             # org/jruby/RubyKernel.java:1240:in 'load'
             # /home/runner/work/rspec/rspec/bin/rspec:14:in '<main>'
         # ./lib/rspec/support.rb:80:in 'block in Support'
         # ./lib/rspec/support.rb:89:in 'notify_failure'
         # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/fail_with.rb:37:in 'fail_with'
         # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:31:in 'handle_failure'
         # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:45:in 'block in handle_matcher'
         # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:18:in 'with_matcher'
         # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:39:in 'handle_matcher'
         # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/expectation_target.rb:67:in 'to'
         # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/expectation_target.rb:138:in 'to'
         # ./spec/rspec/support_spec.rb:58:in 'block in RSpec'
         # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:256:in 'block in run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'block in with_around_and_singleton_context_hooks'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'block in with_around_example_hooks'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'block in run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:611:in 'run_around_example_hooks_for'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'with_around_example_hooks'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'with_around_and_singleton_context_hooks'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:252:in 'run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:645:in 'block in run_examples'
         # org/jruby/RubyArrayNative.java:2415:in 'map'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:650:in 'run_examples'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:606:in 'run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'block in run'
         # org/jruby/RubyArrayNative.java:2415:in 'map'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
         # org/jruby/RubyArrayNative.java:2415:in 'map'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/configuration.rb:1934:in 'with_suite_hooks'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:116:in 'block in run_specs'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/reporter.rb:74:in 'report'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:115:in 'run_specs'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:89:in 'run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:71:in 'run'
         # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:45:in 'invoke'
         # /home/runner/work/rspec/rspec/rspec-core/exe/rspec:4:in '<main>'
         # org/jruby/RubyKernel.java:1240:in 'load'
         # /home/runner/work/rspec/rspec/bin/rspec:14:in '<main>'
    
  • rspec-mocks #any_instance when a class overrides Object#method mocks the method correctly
    Failure/Error: expect(http_request_class.new.existing_method).to eq "foo"

    stack
     1) #any_instance when a class overrides Object#method mocks the method correctly
        Failure/Error: expect(http_request_class.new.existing_method).to eq "foo"
    
        ArgumentError:
          circular causes
        # /home/runner/work/rspec/rspec/rspec-support/lib/rspec/support.rb:55:in 'method_handle_for'
        # ./lib/rspec/mocks/proxy.rb:319:in 'original_method_handle_for'
        # ./lib/rspec/mocks/method_double.rb:31:in 'original_method'
        # ./lib/rspec/mocks/method_double.rb:25:in 'original_implementation_callable'
        # ./lib/rspec/mocks/method_double.rb:69:in 'define_proxy_method'
        # ./lib/rspec/mocks/method_double.rb:62:in 'configure_method'
        # ./lib/rspec/mocks/method_double.rb:164:in 'add_expectation'
        # ./lib/rspec/mocks/proxy.rb:75:in 'add_message_expectation'
        # ./lib/rspec/mocks/any_instance/expectation_chain.rb:30:in 'create_message_expectation_on'
        # ./lib/rspec/mocks/any_instance/chain.rb:54:in 'playback!'
        # ./lib/rspec/mocks/any_instance/message_chains.rb:67:in 'block in playback!'
        # org/jruby/RubyArrayNative.java:1729:in 'each'
        # ./lib/rspec/mocks/any_instance/message_chains.rb:66:in 'playback!'
        # ./lib/rspec/mocks/any_instance/recorder.rb:111:in 'playback!'
        # ./lib/rspec/mocks/any_instance/recorder.rb:258:in 'block in observe!'
        # ./spec/rspec/mocks/any_instance_spec.rb:1442:in 'block in Mocks'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:256:in 'block in run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'block in with_around_and_singleton_context_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'block in with_around_example_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'block in run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:613:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/.bundle/gems/jruby/4.0.0/gems/aruba-2.3.3/lib/aruba/rspec.rb:40:in 'block in <main>'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:450:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:390:in 'execute_with'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:615:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/.bundle/gems/jruby/4.0.0/gems/aruba-2.3.3/lib/aruba/rspec.rb:27:in 'block in <main>'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:450:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:390:in 'execute_with'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:615:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:616:in 'run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'with_around_example_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'with_around_and_singleton_context_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:252:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:645:in 'block in run_examples'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:650:in 'run_examples'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:606:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'block in run'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/configuration.rb:1934:in 'with_suite_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:116:in 'block in run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/reporter.rb:74:in 'report'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:115:in 'run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:89:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:71:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:45:in 'invoke'
        # /home/runner/work/rspec/rspec/rspec-core/exe/rspec:4:in '<main>'
        # org/jruby/RubyKernel.java:1240:in 'load'
        # /home/runner/work/rspec/rspec/bin/rspec:14:in '<main>'
        # ------------------
        # --- Caused by: ---
        # NameError:
        #   undefined method '__existing_method_without_any_instance__' for class '#<Class:0x2ba33e2c>'
        #   org/jruby/RubyKernel.java:2361:in 'method'
    
  • rspec-mocks #any_instance when a class overrides Object#method stubs the method correctly
    Failure/Error: expect(http_request_class.new.existing_method).to eq "foo"

    stack
     2) #any_instance when a class overrides Object#method stubs the method correctly
      <details>
        <summary>Edit: unrelated StackOverflow failure</summary>
    
        Failure/Error: expect(http_request_class.new.existing_method).to eq "foo"
    
        ArgumentError:
          circular causes
        # /home/runner/work/rspec/rspec/rspec-support/lib/rspec/support.rb:55:in 'method_handle_for'
        # ./lib/rspec/mocks/proxy.rb:319:in 'original_method_handle_for'
        # ./lib/rspec/mocks/method_double.rb:31:in 'original_method'
        # ./lib/rspec/mocks/method_double.rb:25:in 'original_implementation_callable'
        # ./lib/rspec/mocks/method_double.rb:69:in 'define_proxy_method'
        # ./lib/rspec/mocks/method_double.rb:62:in 'configure_method'
        # ./lib/rspec/mocks/method_double.rb:179:in 'add_stub'
        # ./lib/rspec/mocks/proxy.rb:136:in 'add_stub'
        # ./lib/rspec/mocks/any_instance/stub_chain.rb:18:in 'create_message_expectation_on'
        # ./lib/rspec/mocks/any_instance/chain.rb:54:in 'playback!'
        # ./lib/rspec/mocks/any_instance/message_chains.rb:67:in 'block in playback!'
        # org/jruby/RubyArrayNative.java:1729:in 'each'
        # ./lib/rspec/mocks/any_instance/message_chains.rb:66:in 'playback!'
        # ./lib/rspec/mocks/any_instance/recorder.rb:111:in 'playback!'
        # ./lib/rspec/mocks/any_instance/recorder.rb:258:in 'block in observe!'
        # ./spec/rspec/mocks/any_instance_spec.rb:1437:in 'block in Mocks'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:256:in 'block in run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'block in with_around_and_singleton_context_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'block in with_around_example_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'block in run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:613:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/.bundle/gems/jruby/4.0.0/gems/aruba-2.3.3/lib/aruba/rspec.rb:40:in 'block in <main>'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:450:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:390:in 'execute_with'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:615:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/.bundle/gems/jruby/4.0.0/gems/aruba-2.3.3/lib/aruba/rspec.rb:27:in 'block in <main>'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:450:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:390:in 'execute_with'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:615:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:616:in 'run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'with_around_example_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'with_around_and_singleton_context_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:252:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:645:in 'block in run_examples'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:650:in 'run_examples'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:606:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'block in run'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/configuration.rb:1934:in 'with_suite_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:116:in 'block in run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/reporter.rb:74:in 'report'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:115:in 'run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:89:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:71:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:45:in 'invoke'
        # /home/runner/work/rspec/rspec/rspec-core/exe/rspec:4:in '<main>'
        # org/jruby/RubyKernel.java:1240:in 'load'
        # /home/runner/work/rspec/rspec/bin/rspec:14:in '<main>'
        # ------------------
        # --- Caused by: ---
        # NameError:
        #   undefined method '__existing_method_without_any_instance__' for class '#<Class:0x5fad41be>'
        #   org/jruby/RubyKernel.java:2361:in 'method'
    
Edit: unrelated StackOverflow failure

StackOverflow - see rspec/rspec#321

  • RSpec::Mocks::Matchers::Receive expect(...).to receive ordered with receive counts does not result in infinite recursion when respond_to? is stubbed
     3) **rspec-mocks** RSpec::Mocks::Matchers::Receive expect(...).to receive ordered with receive counts does not result in infinite recursion when `respond_to?` is stubbed
        Failure/Error:
          expect {
            obj = Object.new
            expect(obj).to receive(:respond_to?).with('something highly unlikely')
            obj.respond_to?(:not_what_we_wanted)
          }.to raise_error(/received :respond_to\? with unexpected arguments/)
    
          expected Exception with message matching /received :respond_to\? with unexpected arguments/, got #<Java::JavaLang::StackOverflowError: > with backtrace:
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.argument_list_matcher.️❤ {} resolve_expected_args_based_on #1(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/argument_list_matcher.rb:82)
            # org.jruby.dist/org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:151)
            # org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:106)
            # org.jruby.dist/org.jruby.runtime.Block.yield(Block.java:191)
            # org.jruby.dist/org.jruby.RubyArrayNative.index(RubyArrayNative.java:2209)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.argument_list_matcher.️❤ def resolve_expected_args_based_on #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/argument_list_matcher.rb:82)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.argument_list_matcher.️❤ def args_match? #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/argument_list_matcher.rb:59)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.message_expectation.️❤ def matches_name_but_not_args #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/message_expectation.rb:508)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ {} find_almost_matching_expectation #1(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:273)
            # org.jruby.dist/org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:151)
            # org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:106)
            # org.jruby.dist/org.jruby.runtime.Block.yield(Block.java:191)
            # org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:498)
            # org.jruby.dist/org.jruby.ir.targets.indy.YieldSite.yield(YieldSite.java:117)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ {} find_best_matching_expectation_for #1(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:282)
            # org.jruby.dist/org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:151)
            # org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:106)
            # org.jruby.dist/org.jruby.runtime.Block.yield(Block.java:191)
            # org.jruby.dist/org.jruby.RubyArrayNative.each(RubyArrayNative.java:1729)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def find_best_matching_expectation_for #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:281)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def find_almost_matching_expectation #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:272)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def message_received #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:210)
            # org.jruby.dist/org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:139)
            # org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:117)
            # org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1381)
            # org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuperSplatArgs(IRRuntimeHelpers.java:1354)
            # org.jruby.dist/org.jruby.ir.targets.indy.InstanceSuperInvokeSite.invoke(InstanceSuperInvokeSite.java:30)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def message_received #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:352)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.method_double.️❤ def proxy_method_invoked #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/method_double.rb:101)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.method_double.️❤ {} define_proxy_method #2(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/method_double.rb:77)
            # org.jruby.dist/org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:141)
            # org.jruby.dist/org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:66)
            # org.jruby.dist/org.jruby.runtime.Block.call(Block.java:150)
            # org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:395)
            # org.jruby.dist/org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:62)
            # org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:237)
            # org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:233)
            # org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:289)
            # org.jruby.dist/org.jruby.runtime.callsite.RespondToCallSite.respondsTo(RespondToCallSite.java:107)
            # org.jruby.dist/org.jruby.RubyClass.checkFuncallRespondTo(RubyClass.java:851)
            # org.jruby.dist/org.jruby.RubyClass.checkFuncallDefault(RubyClass.java:790)
            # org.jruby.dist/org.jruby.RubyClass.finvokeChecked(RubyClass.java:737)
            # org.jruby.dist/org.jruby.runtime.Helpers.invokeChecked(Helpers.java:843)
            # org.jruby.dist/org.jruby.RubyBasicObject.hashyInspect(RubyBasicObject.java:1149)
            # org.jruby.dist/org.jruby.RubyBasicObject.inspect(RubyBasicObject.java:1140)
            # org.jruby.dist/org.jruby.RubyKernel.inspect(RubyKernel.java:2286)
            # org.jruby.dist/org.jruby.RubyKernel$INVOKER$s$0$0$inspect.call(RubyKernel$INVOKER$s$0$0$inspect.gen)
            # org.jruby.dist/org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:729)
            # org.jruby.dist/org.jruby.ir.targets.indy.InvokeSite.fail(InvokeSite.java:924)
            # org.jruby.dist/org.jruby.ir.targets.indy.InvokeSite.fail(InvokeSite.java:967)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def intro #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:223)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def default_error_message #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:65)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def error_message #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:279)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def raise_unexpected_message_args_error #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:48)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.message_expectation.️❤ def raise_unexpected_message_args_error #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/message_expectation.rb:568)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def message_received #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:214)
            # org.jruby.dist/org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:139)
            # org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:117)
            # org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1381)
            # org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuperSplatArgs(IRRuntimeHelpers.java:1354)
            # org.jruby.dist/org.jruby.ir.targets.indy.InstanceSuperInvokeSite.invoke(InstanceSuperInvokeSite.java:30)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def message_received #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:352)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.method_double.️❤ def proxy_method_invoked #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/method_double.rb:101)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.method_double.️❤ {} define_proxy_method #2(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/method_double.rb:77)
            # org.jruby.dist/org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:141)
            # org.jruby.dist/org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:66)
            # org.jruby.dist/org.jruby.runtime.Block.call(Block.java:150)
            # org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:395)
            # org.jruby.dist/org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:62)
            # org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:237)
            # org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:233)
            # org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:289)
            # org.jruby.dist/org.jruby.runtime.callsite.RespondToCallSite.respondsTo(RespondToCallSite.java:107)
            # org.jruby.dist/org.jruby.RubyClass.checkFuncallRespondTo(RubyClass.java:851)
            # org.jruby.dist/org.jruby.RubyClass.checkFuncallDefault(RubyClass.java:790)
            # org.jruby.dist/org.jruby.RubyClass.finvokeChecked(RubyClass.java:737)
            # org.jruby.dist/org.jruby.runtime.Helpers.invokeChecked(Helpers.java:843)
            # org.jruby.dist/org.jruby.RubyBasicObject.hashyInspect(RubyBasicObject.java:1149)
            # org.jruby.dist/org.jruby.RubyBasicObject.inspect(RubyBasicObject.java:1140)
            # org.jruby.dist/org.jruby.RubyKernel.inspect(RubyKernel.java:2286)
            # org.jruby.dist/org.jruby.RubyKernel$INVOKER$s$0$0$inspect.call(RubyKernel$INVOKER$s$0$0$inspect.gen)
            # org.jruby.dist/org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:729)
            # org.jruby.dist/org.jruby.ir.targets.indy.InvokeSite.fail(InvokeSite.java:924)
            # org.jruby.dist/org.jruby.ir.targets.indy.InvokeSite.fail(InvokeSite.java:967)
            
            #
            # BIG REPEATED STACK REMOVED
            #
            
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def intro #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:223)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def default_error_message #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:65)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def error_message #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:279)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.error_generator.️❤ def raise_unexpected_message_args_error #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/error_generator.rb:48)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.message_expectation.️❤ def raise_unexpected_message_args_error #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/message_expectation.rb:568)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def message_received #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:214)
            # org.jruby.dist/org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:139)
            # org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:117)
            # org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1381)
            # org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuperSplatArgs(IRRuntimeHelpers.java:1354)
            # org.jruby.dist/org.jruby.ir.targets.indy.InstanceSuperInvokeSite.invoke(InstanceSuperInvokeSite.java:30)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.proxy.️❤ def message_received #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/proxy.rb:352)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.method_double.️❤ def proxy_method_invoked #0(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/method_double.rb:101)
            # home.runner.work.rspec.rspec.rspec_minus_mocks.lib.rspec.mocks.method_double.️❤ {} define_proxy_method #2(/home/runner/work/rspec/rspec/rspec-mocks/lib/rspec/mocks/method_double.rb:77)
            # org.jruby.dist/org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:141)
            # org.jruby.dist/org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:66)
            # org.jruby.dist/org.jruby.runtime.Block.call(Block.java:150)
            # org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:395)
            # org.jruby.dist/org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:62)
            # org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:237)
            # org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:233)
            # org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:289)
        # /home/runner/work/rspec/rspec/rspec-support/lib/rspec/support.rb:80:in 'block in Support'
        # /home/runner/work/rspec/rspec/rspec-support/lib/rspec/support.rb:89:in 'notify_failure'
        # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/fail_with.rb:37:in 'fail_with'
        # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:31:in 'handle_failure'
        # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:45:in 'block in handle_matcher'
        # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:18:in 'with_matcher'
        # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/handler.rb:39:in 'handle_matcher'
        # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/expectation_target.rb:67:in 'to'
        # /home/runner/work/rspec/rspec/rspec-expectations/lib/rspec/expectations/expectation_target.rb:138:in 'to'
        # ./spec/rspec/mocks/matchers/receive_spec.rb:619:in 'block in Mocks'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:256:in 'block in run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'block in with_around_and_singleton_context_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'block in with_around_example_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'block in run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:613:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/.bundle/gems/jruby/4.0.0/gems/aruba-2.3.3/lib/aruba/rspec.rb:40:in 'block in <main>'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:450:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:390:in 'execute_with'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:615:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/.bundle/gems/jruby/4.0.0/gems/aruba-2.3.3/lib/aruba/rspec.rb:27:in 'block in <main>'
        # org/jruby/RubyBasicObject.java:2777:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:450:in 'instance_exec'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:390:in 'execute_with'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:615:in 'block in run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:345:in 'call'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:616:in 'run_around_example_hooks_for'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/hooks.rb:473:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:461:in 'with_around_example_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:504:in 'with_around_and_singleton_context_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example.rb:252:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:645:in 'block in run_examples'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:650:in 'run_examples'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:606:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'block in run'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'block in run'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/example_group.rb:607:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
        # org/jruby/RubyArrayNative.java:2415:in 'map'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:121:in 'block in run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/configuration.rb:1934:in 'with_suite_hooks'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:116:in 'block in run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/reporter.rb:74:in 'report'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:115:in 'run_specs'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:89:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:71:in 'run'
        # /home/runner/work/rspec/rspec/rspec-core/lib/rspec/core/runner.rb:45:in 'invoke'
        # /home/runner/work/rspec/rspec/rspec-core/exe/rspec:4:in '<main>'
        # org/jruby/RubyKernel.java:1240:in 'load'
        # /home/runner/work/rspec/rspec/bin/rspec:14:in '<main>'
    

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions