Hello Jon,

Thank you very much for your prompt reply and helpful advice.

As you pointed out, I had my own logger.rb in the lib directory like this:

> require "logger"
> class Logger
>     class << self
>         def logger_factory(debug: true)
>             if debug
>                 @logger = Logger.new(STDOUT, level: :debug)
>             else
>                 @logger = Logger.new('log/logfile', 'daily', level: :info)
>             end

By renaming this file and class to 'mylogger.rb' and 'MyLogger',
everything has become good.

Thank you very much again. 
And I also thanks to everyone who develops this wonderful RSpec gem.

Best Regards,
Koji 

2023年2月6日月曜日 18:08:48 UTC+9 ma...@jonrowe.co.uk:

> Hi
>
> Something must be wrong with the your local setup as there is no 
> Logger.new/0 (
> https://ruby-doc.org/3.2.0/stdlibs/logger/Logger.html#method-c-new) and 
> this is backed up by irb:
>
> ```
>  require 'logger'
> => true
> irb(main):004:0> Logger.new
> /Users/jon/.asdf/installs/ruby/3.2.0/lib/ruby/3.2.0/logger.rb:577:in 
> `initialize': wrong number of arguments (given 0, expected 1..3) 
> (ArgumentError)
> ```
>
> Running your spec on my machine produces the right result:
>
> ```
> .F
>
> Failures:
>
>   1) Logger.new has 0 argument
>      Failure/Error: logger2 = Logger.new
>
>      ArgumentError:
>        wrong number of arguments (given 0, expected 1..3)
>      # ./logger_spec.rb:7:in `new'
>      # ./logger_spec.rb:7:in `block (2 levels) in <top (required)>'
>      # ./.bundle/gems/ruby/3.2.0/gems/bundler-2.3.7/exe/bundler:4:in `load'
>      # ./.bundle/gems/ruby/3.2.0/gems/bundler-2.3.7/exe/bundler:4:in `<top 
> (required)>'
>
> Finished in 0.00144 seconds (files took 0.04754 seconds to load)
> 2 examples, 1 failure
>
> Failed examples:
>
> rspec ./logger_spec.rb:6 # Logger.new has 0 argument
> ```
>
> Do you for some reason have a local `logger.rb` file in your `lib` 
> directory that redefines it? What other gems are in your Gemfile? This 
> doesn't seem like an RSpec issue as we certainly don't override it.
>
> Cheers
> Jon
> On Monday, 6 February 2023 at 08:56:41 UTC Koji wrote:
>
>> Hello,
>>
>> I am trying to test a pure ruby program (not a Rails program) that 
>> contains 'Logger.new'.
>>
>> The command 'bundle exec ruby' requires Logger.new to have 1..3 arguments.
>>
>> On the other hand, the command 'bundle exec rspec' requires 0 argument as 
>> shown below. Also Logger.new with 0 argument fails.
>>
>> How do you treat Logger.new in a rspec program?
>>
>> Thanks you for your advice.
>>
>> Koji
>>
>> ----------
>> ## spec/logger_spec.rb
>> require 'logger'
>> RSpec.describe "Logger.new" do
>>     it "has 1 argument" do
>>         logger1 = Logger.new('logfile')
>>     end
>>     it "has 0 argument" do
>>         logger2 = Logger.new
>>         logger2.info("HELLO WORLD")
>>      end
>> end
>>
>> ## results of 'bundle exec rspec spec/logger_spec.rb'
>> Logger.new
>> has 1 argument (FAILED - 1)
>> has 0 argument (FAILED - 2)
>>
>> Failures:
>>
>> 1) Logger.new has 1 argument
>> Failure/Error: logger1 = Logger.new('logfile')
>>
>> ArgumentError:
>> wrong number of arguments (given 1, expected 0)
>> # ./spec/logger_spec.rb:4:in `initialize'
>> # ./spec/logger_spec.rb:4:in `new'
>> # ./spec/logger_spec.rb:4:in `block (2 levels) in <top (required)>'
>>
>> 2) Logger.new has 0 argument
>> Failure/Error: logger2.info("HELLO WORLD")
>>
>> NoMethodError:
>> undefined method `info' for #<Logger:0x00007ff59f396880>
>> # ./spec/logger_spec.rb:8:in `block (2 levels) in <top (required)>'
>>
>> ## software versions
>> RSpec 3.12
>> ruby 3.2.0
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/647bc5ac-8905-4302-b2a8-79a460e5bfbcn%40googlegroups.com.

Reply via email to