From 7b11dd7b08c87d84d496441b1ff2ef573b13683f Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Thu, 9 Apr 2015 22:19:13 +0000 Subject: [PATCH 1/3] Add debug mode in Env --- lib/uh/wm/env.rb | 6 +++++- spec/uh/wm/env_spec.rb | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/uh/wm/env.rb b/lib/uh/wm/env.rb index 7a42b29..eab4fc3 100644 --- a/lib/uh/wm/env.rb +++ b/lib/uh/wm/env.rb @@ -10,7 +10,7 @@ module Uh def_delegator :@output, :print attr_reader :output - attr_accessor :verbose + attr_accessor :verbose, :debug def initialize output @output = output @@ -20,6 +20,10 @@ module Uh !!@verbose end + def debug? + !!@debug + end + def logger @logger ||= Logger.new(@output).tap do |o| o.level = verbose? ? LOGGER_LEVEL_VERBOSE : LOGGER_LEVEL diff --git a/spec/uh/wm/env_spec.rb b/spec/uh/wm/env_spec.rb index f9f1cfb..135f831 100644 --- a/spec/uh/wm/env_spec.rb +++ b/spec/uh/wm/env_spec.rb @@ -9,6 +9,10 @@ module Uh expect(env).not_to be_verbose end + it 'has debug mode disabled' do + expect(env).not_to be_debug + end + describe '#verbose?' do context 'when verbose mode is disabled' do before { env.verbose = false } @@ -27,6 +31,24 @@ module Uh end end + describe '#debug?' do + context 'when debug mode is disabled' do + before { env.debug = false } + + it 'returns false' do + expect(env.debug?).to be false + end + end + + context 'when debug mode is enabled' do + before { env.debug = true } + + it 'returns true' do + expect(env.debug?).to be true + end + end + end + describe '#logger' do it 'returns a logger' do expect(env.logger).to be_a Logger From 69d885b282c8545e9ca502fd506da05066277cd5 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Thu, 9 Apr 2015 22:19:41 +0000 Subject: [PATCH 2/3] Support -d debug option in CLI --- features/steps/output_steps.rb | 1 + lib/uh/wm/cli.rb | 5 +++++ spec/uh/wm/cli_spec.rb | 14 ++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/features/steps/output_steps.rb b/features/steps/output_steps.rb index 558dd10..14f53a2 100644 --- a/features/steps/output_steps.rb +++ b/features/steps/output_steps.rb @@ -22,6 +22,7 @@ Usage: uhwm [options] options: -h, --help print this message -v, --version enable verbose mode + -d, --debug enable debug mode eoh end diff --git a/lib/uh/wm/cli.rb b/lib/uh/wm/cli.rb index 4330cc1..6bb70bf 100644 --- a/lib/uh/wm/cli.rb +++ b/lib/uh/wm/cli.rb @@ -53,6 +53,11 @@ module Uh @env.verbose = true @env.log_logger_level end + + opts.on '-d', '--debug', 'enable debug mode' do + @env.debug = true + @env.log_logger_level + end end end end diff --git a/spec/uh/wm/cli_spec.rb b/spec/uh/wm/cli_spec.rb index d901983..4fd9f7f 100644 --- a/spec/uh/wm/cli_spec.rb +++ b/spec/uh/wm/cli_spec.rb @@ -102,6 +102,20 @@ module Uh end end + context 'with debug option' do + let(:arguments) { %w[-d] } + + it 'sets the env as debug' do + cli.parse_arguments! + expect(cli.env).to be_debug + end + + it 'tells the env to log its logger level' do + expect(cli.env).to receive :log_logger_level + cli.parse_arguments! + end + end + context 'with invalid option' do let(:arguments) { %w[--unknown-option] } From 464b75841ba35db4e86ea7c1d6e7d2af62542830 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Thu, 9 Apr 2015 22:19:50 +0000 Subject: [PATCH 3/3] Implement debug mode --- features/cli/debug.feature | 5 +++++ lib/uh/wm/env.rb | 4 +++- spec/uh/wm/env_spec.rb | 12 ++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 features/cli/debug.feature diff --git a/features/cli/debug.feature b/features/cli/debug.feature new file mode 100644 index 0000000..19f1497 --- /dev/null +++ b/features/cli/debug.feature @@ -0,0 +1,5 @@ +Feature: debug CLI option + + Scenario: raises the logger level to DEBUG + When I run uhwm with option -d + Then the current output must match /log.+debug.+level/i diff --git a/lib/uh/wm/env.rb b/lib/uh/wm/env.rb index eab4fc3..b750493 100644 --- a/lib/uh/wm/env.rb +++ b/lib/uh/wm/env.rb @@ -3,6 +3,7 @@ module Uh class Env LOGGER_LEVEL = Logger::WARN LOGGER_LEVEL_VERBOSE = Logger::INFO + LOGGER_LEVEL_DEBUG = Logger::DEBUG LOGGER_LEVEL_STRINGS = %w[DEBUG INFO WARN ERROR FATAL UNKNOWN] extend Forwardable @@ -26,7 +27,8 @@ module Uh def logger @logger ||= Logger.new(@output).tap do |o| - o.level = verbose? ? LOGGER_LEVEL_VERBOSE : LOGGER_LEVEL + o.level = debug? ? LOGGER_LEVEL_DEBUG : + verbose? ? LOGGER_LEVEL_VERBOSE : LOGGER_LEVEL end end diff --git a/spec/uh/wm/env_spec.rb b/spec/uh/wm/env_spec.rb index 135f831..4b89b04 100644 --- a/spec/uh/wm/env_spec.rb +++ b/spec/uh/wm/env_spec.rb @@ -61,9 +61,17 @@ module Uh context 'when verbose mode is enabled' do before { env.verbose = true } - it 'has logger level info set' do - expect(env.logger.level).to be Logger::INFO + it 'has logger level info set' do + expect(env.logger.level).to be Logger::INFO + end end + + context 'when debug mode is enabled' do + before { env.debug = true } + + it 'has logger level debug set' do + expect(env.logger.level).to be Logger::DEBUG + end end end