Skip to content

Instantly share code, notes, and snippets.

@olleolleolle
Last active March 22, 2019 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save olleolleolle/87d4f9591c6319daa80fbe62014bb332 to your computer and use it in GitHub Desktop.
Save olleolleolle/87d4f9591c6319daa80fbe62014bb332 to your computer and use it in GitHub Desktop.
An interaction
it "bails" do
begin
cli.parse_options(["--config=#{file}"])
rescue => e
pp e
pp e.cause
pp e.backtrace
end
end
Randomized with seed 7772
................................................................................................................#<ArgumentError: Wrong number of arguments. Expected 1, got 2.>
#<Errno::ENOENT: No such file or directory - /path/to/nonexistant/file>
["/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_proxy.rb:167:in `block in validate_arguments!'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_proxy.rb:191:in `with_signature'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_proxy.rb:165:in `validate_arguments!'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_proxy.rb:160:in `proxy_method_invoked'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/method_double.rb:64:in `block in define_proxy_method'",
"org/jruby/RubyIO.java:2638:in `write'",
"org/jruby/RubyIO.java:2481:in `puts'",
"org/jruby/RubyKernel.java:348:in `abort'",
"/Users/olle/opensource/hutch/lib/hutch/cli.rb:236:in `abort_with_message'",
"/Users/olle/opensource/hutch/lib/hutch/cli.rb:163:in `block in parse_options'",
"/Users/olle/.rvm/rubies/jruby-9.2.6.0/lib/ruby/stdlib/optparse.rb:1552:in `block in parse_in_order'",
"org/jruby/RubyKernel.java:1179:in `catch'",
"/Users/olle/.rvm/rubies/jruby-9.2.6.0/lib/ruby/stdlib/optparse.rb:1538:in `parse_in_order'",
"/Users/olle/.rvm/rubies/jruby-9.2.6.0/lib/ruby/stdlib/optparse.rb:1532:in `order!'",
"/Users/olle/.rvm/rubies/jruby-9.2.6.0/lib/ruby/stdlib/optparse.rb:1626:in `permute!'",
"/Users/olle/.rvm/rubies/jruby-9.2.6.0/lib/ruby/stdlib/optparse.rb:1648:in `parse!'",
"/Users/olle/opensource/hutch/lib/hutch/cli.rb:101:in `parse_options'",
"/Users/olle/opensource/hutch/spec/hutch/cli_spec.rb:28:in `block in <main>'",
"org/jruby/RubyBasicObject.java:2677:in `instance_exec'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:254:in `block in run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:500:in `block in with_around_and_singleton_context_hooks'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:457:in `block in with_around_example_hooks'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:464:in `block in run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:602:in `run_around_example_hooks_for'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:464:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:457:in `with_around_example_hooks'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:500:in `with_around_and_singleton_context_hooks'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:251:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:629:in `block in run_examples'",
"org/jruby/RubyArray.java:2577:in `map'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:625:in `run_examples'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:591:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `block in run'",
"org/jruby/RubyArray.java:2577:in `map'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `block in run'",
"org/jruby/RubyArray.java:2577:in `map'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `block in run'",
"org/jruby/RubyArray.java:2577:in `map'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:116:in `block in run_specs'",
"org/jruby/RubyArray.java:2577:in `map'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:116:in `block in run_specs'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:1989:in `with_suite_hooks'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:111:in `block in run_specs'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/reporter.rb:74:in `report'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:110:in `run_specs'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:87:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:71:in `run'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:45:in `invoke'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/gems/rspec-core-3.8.0/exe/rspec:4:in `<main>'",
"org/jruby/RubyKernel.java:1008:in `load'",
"/Users/olle/.rvm/gems/jruby-9.2.6.0/bin/rspec:23:in `<main>'"]

Changed the verifier: https://github.com/rspec/rspec-mocks/blob/master/lib/rspec/mocks/verifying_proxy.rb#L164-L170

      def validate_arguments!(actual_args)¬
        @method_reference.with_signature do |signature|¬
          verifier = Support::StrictSignatureVerifier.new(signature, actual_args)¬
          # OLLE HERE¬
          unless verifier.valid?¬
            pp signature¬
            pp actual_args¬
          end¬
          raise ArgumentError, verifier.error_message unless verifier.valid?¬
        end¬
      end¬
F#<RSpec::Support::MethodSignature:0x763cf5b9
 @allowed_kw_args=[],
 @allows_any_kw_args=false,
 @max_non_kw_args=1,
 @method=#<Method: IO#write>,
 @min_non_kw_args=1,
 @optional_kw_args=[],
 @required_kw_args=[]>
["Config file '/path/to/nonexistant/file' not found", "\n"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment