Skip to content

Commit 1cd84f7

Browse files
committed
[rb] allow default_level to be passed into constructor so client projects can keep existing behavior
1 parent c4776a3 commit 1cd84f7

3 files changed

Lines changed: 13 additions & 11 deletions

File tree

rb/lib/selenium/webdriver.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ def self.for(*args)
9595
#
9696

9797
def self.logger(**opts)
98-
@logger ||= WebDriver::Logger.new('Selenium', **opts)
98+
level = $DEBUG || ENV.key?('DEBUG') ? :debug : :info
99+
@logger ||= WebDriver::Logger.new('Selenium', default_level: level, **opts)
99100
end
100101
end # WebDriver
101102
end # Selenium

rb/lib/selenium/webdriver/common/logger.rb

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ class Logger
4848
#
4949
# @param [String] progname Allow child projects to use Selenium's Logger pattern
5050
#
51-
def initialize(progname = 'Selenium', ignored: nil, allowed: nil)
52-
@logger = create_logger(progname)
51+
def initialize(progname = 'Selenium', default_level: nil, ignored: nil, allowed: nil)
52+
default_level ||= $DEBUG || ENV.key?('DEBUG') ? :debug : :warn
53+
54+
@logger = create_logger(progname, level: default_level)
5355
@ignored = Array(ignored)
5456
@allowed = Array(allowed)
5557
@first_warning = false
@@ -174,21 +176,17 @@ def deprecate(old, new = nil, id: [], reference: '', &block)
174176

175177
private
176178

177-
def create_logger(name)
179+
def create_logger(name, level:)
178180
logger = ::Logger.new($stdout)
179181
logger.progname = name
180-
logger.level = default_level
182+
logger.level = level
181183
logger.formatter = proc do |severity, time, progname, msg|
182184
"#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
183185
end
184186

185187
logger
186188
end
187189

188-
def default_level
189-
$DEBUG || ENV.key?('DEBUG') ? :debug : :info
190-
end
191-
192190
def discard_or_log(level, message, id)
193191
id = Array(id)
194192
return if (@ignored & id).any?

rb/spec/unit/selenium/webdriver/common/logger_spec.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
module Selenium
2323
module WebDriver
2424
describe Logger do
25-
subject(:logger) { described_class.new('Selenium', ignored: [:logger_info]) }
25+
subject(:logger) { described_class.new('Selenium', default_level: :info, ignored: [:logger_info]) }
2626

2727
around do |example|
2828
debug = $DEBUG
@@ -53,6 +53,8 @@ module WebDriver
5353

5454
it 'logs at debug level if $DEBUG is set to true' do
5555
$DEBUG = true
56+
logger = described_class.new('Selenium')
57+
$DEBUG = nil
5658
expect(logger.level).to eq(0)
5759
expect(logger).to be_debug
5860
end
@@ -104,7 +106,8 @@ module WebDriver
104106

105107
describe '#info' do
106108
it 'logs info on first info but not second' do
107-
logger = described_class.new('Selenium')
109+
logger = described_class.new('Selenium', default_level: :info)
110+
108111
expect { logger.info('first') }.to output(/:logger_info/).to_stdout_from_any_process
109112
expect { logger.info('second') }.not_to output(/:logger_info/).to_stdout_from_any_process
110113
end

0 commit comments

Comments
 (0)