Skip to content

Commit 194d6d8

Browse files
committedMar 7, 2025
More test coverage.
1 parent a31db67 commit 194d6d8

File tree

6 files changed

+71
-26
lines changed

6 files changed

+71
-26
lines changed
 

‎lib/console/logger.rb

+8-3
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,17 @@ class Logger < Filter[debug: 0, info: 1, warn: 2, error: 3, fatal: 4]
1919
# Set the default log level based on `$DEBUG` and `$VERBOSE`.
2020
# You can also specify CONSOLE_LEVEL=debug or CONSOLE_LEVEL=info in environment.
2121
# https://mislav.net/2011/06/ruby-verbose-mode/ has more details about how it all fits together.
22-
def self.default_log_level(env = ENV)
22+
#
23+
# @parameter env [Hash] The environment to read the log level from.
24+
# @parameter verbose [Boolean] The verbose flag.
25+
# @parameter debug [Boolean] The debug flag.
26+
# @returns [Integer] The default log level.
27+
def self.default_log_level(env = ENV, verbose: $VERBOSE, debug: $DEBUG)
2328
if level = env["CONSOLE_LEVEL"]
2429
LEVELS[level.to_sym] || level.to_i
25-
elsif $DEBUG
30+
elsif debug
2631
DEBUG
27-
elsif $VERBOSE.nil?
32+
elsif verbose.nil?
2833
WARN
2934
else
3035
INFO

‎test/console/.config/console_debug.rb

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Always log at debug level.
2+
def log_level(env = ENV)
3+
:debug
4+
end

‎test/console/capture.rb

+39
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,45 @@
1010
let(:capture) {subject.new}
1111
let(:logger) {Console::Logger.new(capture)}
1212

13+
with "#each" do
14+
it "can iterate over log buffer" do
15+
logger.info("Hello World!")
16+
17+
capture.each do |entry|
18+
expect(entry).to have_keys(
19+
severity: be == :info,
20+
subject: be == "Hello World!"
21+
)
22+
end
23+
end
24+
end
25+
26+
with "#first" do
27+
it "can access first log entry" do
28+
logger.info("Goodbye World!")
29+
logger.info("Hello World!")
30+
31+
first = capture.first
32+
expect(first).to have_keys(
33+
severity: be == :info,
34+
subject: be == "Goodbye World!"
35+
)
36+
end
37+
end
38+
39+
with "#last" do
40+
it "can access last log entry" do
41+
logger.info("Goodbye World!")
42+
logger.info("Hello World!")
43+
44+
last = capture.last
45+
expect(last).to have_keys(
46+
severity: be == :info,
47+
subject: be == "Hello World!"
48+
)
49+
end
50+
end
51+
1352
with "#clear" do
1453
it "can clear log buffer" do
1554
logger.info("Hello World!")

‎test/console/config.rb

+10
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,14 @@
2323
expect(logger).to be_a Console::Logger
2424
end
2525
end
26+
27+
with ".load" do
28+
let(:path) {File.expand_path(".config/console_debug.rb", __dir__)}
29+
30+
it "can load configuration" do
31+
config = subject.load(path)
32+
33+
expect(config.log_level).to be == :debug
34+
end
35+
end
2636
end

‎test/console/logger.rb

+4-23
Original file line numberDiff line numberDiff line change
@@ -106,36 +106,17 @@
106106
end
107107

108108
describe ".default_log_level" do
109-
def before
110-
@debug = $DEBUG
111-
@verbose = $VERBOSE
112-
super
113-
end
114-
115-
def after(error = nil)
116-
$DEBUG = @debug
117-
$VERBOSE = @verbose
118-
super
119-
end
120-
121109
it "should set default log level" do
122-
$DEBUG = false
123-
$VERBOSE = 0
124-
125-
expect(Console::Logger.default_log_level).to be == Console::Logger::INFO
110+
expect(Console::Logger.default_log_level(verbose: false, debug: false)).to be == Console::Logger::INFO
126111
end
127112

128113
it "should set default log level based on $DEBUG" do
129-
$DEBUG = true
130-
131-
expect(Console::Logger.default_log_level).to be == Console::Logger::DEBUG
114+
expect(Console::Logger.default_log_level(debug: true)).to be == Console::Logger::DEBUG
132115
end
133116

134117
it "should set default log level based on $VERBOSE" do
135-
$DEBUG = false
136-
$VERBOSE = true
137-
138-
expect(Console::Logger.default_log_level).to be == Console::Logger::INFO
118+
expect(Console::Logger.default_log_level(verbose: true, debug: false)).to be == Console::Logger::INFO
119+
expect(Console::Logger.default_log_level(verbose: nil, debug: false)).to be == Console::Logger::INFO
139120
end
140121

141122
it "can get log level from ENV" do

‎test/progress.rb

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111

1212
let(:progress) {console_logger.progress("My Measurement", 100)}
1313

14+
with ".now" do
15+
it "can measure time" do
16+
expect(Console::Progress.now).to be_a(Float)
17+
end
18+
end
19+
1420
with "#mark" do
1521
it "can mark progress" do
1622
progress.mark("Hello World!")

0 commit comments

Comments
 (0)