knapsack 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52112d867f2e7b5e6f3cdc4c314fdbbc161840aa
4
- data.tar.gz: 3e86872b9ccef2564ec99ab63a46b634c17ac9c5
3
+ metadata.gz: 04c056b1aca1e07b752f190165b9bf7d8b3d20c8
4
+ data.tar.gz: 4f6546493271a2edcfab8735e672b7966197b21e
5
5
  SHA512:
6
- metadata.gz: 3c77c58339d2caacaf9b5f49ab6b4cee405391c7665aeca22113316f2ca49380cc58ff0d42b49f54dc27b3b418a0a68f51141d1cc6a855ea2171af2cdc416554
7
- data.tar.gz: 899af246bf1d34d9cbedb4cabf8427d3bc001b2438e4a8d2d5b83104fb1210ffbf1b3377530bb1e3c31c7abd082703cc9dd4be05269bf791c9fc4c2efce2f09a
6
+ metadata.gz: 263a43a683b096a68c6a0f3bc3c88c63893383d46069c0753b75e6dca22907aaae3789a2cc19f86d29fc5a4a7007019b18014630930e348c12f77132fe3569d8
7
+ data.tar.gz: be3932dfa2720b181319501886dcdeef30f73add44616d445ab856faff125cf76bfee03cac6f2694430f3ca9931e0b9c56c55e8b52df791a721daf58bbd1fbf8
@@ -2,6 +2,14 @@
2
2
 
3
3
  * TODO
4
4
 
5
+ ### 1.10.0
6
+
7
+ * Log the time offset warning at INFO if time not exceeded
8
+
9
+ https://github.com/ArturT/knapsack/pull/40
10
+
11
+ https://github.com/ArturT/knapsack/compare/v1.9.0...v1.10.0
12
+
5
13
  ### 1.9.0
6
14
 
7
15
  * Use Knapsack.logger for runner output
@@ -26,7 +26,10 @@ module Knapsack
26
26
 
27
27
  def bind_time_offset_warning
28
28
  ::Kernel.at_exit do
29
- Knapsack.logger.warn(Presenter.time_offset_warning)
29
+ Knapsack.logger.log(
30
+ Presenter.time_offset_log_level,
31
+ Presenter.time_offset_warning
32
+ )
30
33
  end
31
34
  end
32
35
 
@@ -37,7 +37,10 @@ module Knapsack
37
37
 
38
38
  def bind_time_offset_warning
39
39
  add_post_run_callback do
40
- Knapsack.logger.warn(Presenter.time_offset_warning)
40
+ Knapsack.logger.log(
41
+ Presenter.time_offset_log_level,
42
+ Presenter.time_offset_warning
43
+ )
41
44
  end
42
45
  end
43
46
 
@@ -39,7 +39,10 @@ module Knapsack
39
39
  def bind_time_offset_warning
40
40
  ::RSpec.configure do |config|
41
41
  config.after(:suite) do
42
- Knapsack.logger.warn(Presenter.time_offset_warning)
42
+ Knapsack.logger.log(
43
+ Presenter.time_offset_log_level,
44
+ Presenter.time_offset_warning
45
+ )
43
46
  end
44
47
  end
45
48
  end
@@ -6,6 +6,20 @@ module Knapsack
6
6
  INFO = 1
7
7
  WARN = 2
8
8
 
9
+ UnknownLogLevel = Class.new(StandardError)
10
+
11
+ def log(level, text=nil)
12
+ level_method =
13
+ case level
14
+ when DEBUG then :debug
15
+ when INFO then :info
16
+ when WARN then :warn
17
+ else raise UnknownLogLevel
18
+ end
19
+
20
+ public_send(level_method, text)
21
+ end
22
+
9
23
  def debug(text=nil)
10
24
  return if level != DEBUG
11
25
  puts text
@@ -35,6 +35,14 @@ module Knapsack
35
35
  "Exceeded time: #{exceeded_time}"
36
36
  end
37
37
 
38
+ def time_offset_log_level
39
+ if Knapsack.tracker.time_exceeded?
40
+ Knapsack::Logger::WARN
41
+ else
42
+ Knapsack::Logger::INFO
43
+ end
44
+ end
45
+
38
46
  def time_offset_warning
39
47
  str = %{\n========= Knapsack Time Offset Warning ==========
40
48
  #{Presenter.time_offset}
@@ -1,3 +1,3 @@
1
1
  module Knapsack
2
- VERSION = '1.9.0'
2
+ VERSION = '1.10.0'
3
3
  end
@@ -12,7 +12,7 @@ describe Knapsack::Adapters::CucumberAdapter do
12
12
  let(:logger) { instance_double(Knapsack::Logger) }
13
13
 
14
14
  before do
15
- expect(Knapsack).to receive(:logger).and_return(logger)
15
+ allow(Knapsack).to receive(:logger).and_return(logger)
16
16
  end
17
17
 
18
18
  describe '#bind_time_tracker' do
@@ -83,11 +83,13 @@ describe Knapsack::Adapters::CucumberAdapter do
83
83
 
84
84
  describe '#bind_time_offset_warning' do
85
85
  let(:time_offset_warning) { 'Time offset warning' }
86
+ let(:log_level) { :info }
86
87
 
87
- it do
88
+ it 'creates an at-exit callback to log the time offset message at the specified log level' do
88
89
  expect(::Kernel).to receive(:at_exit).and_yield
89
90
  expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning)
90
- expect(logger).to receive(:warn).with(time_offset_warning)
91
+ expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level)
92
+ expect(logger).to receive(:log).with(log_level, time_offset_warning)
91
93
 
92
94
  subject.bind_time_offset_warning
93
95
  end
@@ -74,12 +74,14 @@ describe Knapsack::Adapters::MinitestAdapter do
74
74
 
75
75
  describe '#bind_time_offset_warning' do
76
76
  let(:time_offset_warning) { 'Time offset warning' }
77
+ let(:log_level) { :info }
77
78
 
78
- it do
79
+ it 'creates a post-run callback to log the time offset message at the specified log level' do
79
80
  expect(::Minitest).to receive(:after_run).and_yield
80
81
 
81
82
  expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning)
82
- expect(logger).to receive(:warn).with(time_offset_warning)
83
+ expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level)
84
+ expect(logger).to receive(:log).with(log_level, time_offset_warning)
83
85
 
84
86
  subject.bind_time_offset_warning
85
87
  end
@@ -65,13 +65,15 @@ describe Knapsack::Adapters::RSpecAdapter do
65
65
 
66
66
  describe '#bind_time_offset_warning' do
67
67
  let(:time_offset_warning) { 'Time offset warning' }
68
+ let(:log_level) { :info }
68
69
 
69
- it do
70
+ it 'creates a post-suite callback to log the time offset message at the specified log level' do
70
71
  expect(config).to receive(:after).with(:suite).and_yield
71
72
  expect(::RSpec).to receive(:configure).and_yield(config)
72
73
 
73
74
  expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning)
74
- expect(logger).to receive(:warn).with(time_offset_warning)
75
+ expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level)
76
+ expect(logger).to receive(:log).with(log_level, time_offset_warning)
75
77
 
76
78
  subject.bind_time_offset_warning
77
79
  end
@@ -57,4 +57,25 @@ describe Knapsack::Logger do
57
57
  it { expect { subject.warn(text) }.to output(/#{text}/).to_stdout }
58
58
  end
59
59
  end
60
+
61
+ describe '#log' do
62
+ let(:log_level) { Knapsack::Logger::INFO }
63
+ let(:log_message) { 'log-message' }
64
+
65
+ it 'delegates to the method matching the specified log level' do
66
+ expect(subject).to receive(:info).with(log_message)
67
+
68
+ subject.log(log_level, log_message)
69
+ end
70
+
71
+ context 'when the log level is unknown' do
72
+ let(:log_level) { 5 }
73
+
74
+ it 'raises an UnknownLogLevel error' do
75
+ expect {
76
+ subject.log(log_level, log_message)
77
+ }.to raise_error Knapsack::Logger::UnknownLogLevel
78
+ end
79
+ end
80
+ end
60
81
  end
@@ -45,6 +45,29 @@ describe Knapsack::Presenter do
45
45
  it { should eql "Knapsack report was generated. Preview:\n{}" }
46
46
  end
47
47
 
48
+ describe '.time_offset_log_level' do
49
+ before do
50
+ allow(Knapsack).to receive(:tracker) { tracker }
51
+ allow(tracker).to receive(:time_exceeded?).and_return(time_exceeded)
52
+ end
53
+
54
+ context 'when the time offset is exceeded' do
55
+ let(:time_exceeded) { true }
56
+
57
+ it 'returns a WARN log level' do
58
+ expect(described_class.time_offset_log_level).to eq(Knapsack::Logger::WARN)
59
+ end
60
+ end
61
+
62
+ context 'when the time offset is not exceeded' do
63
+ let(:time_exceeded) { false }
64
+
65
+ it 'returns an INFO log level' do
66
+ expect(described_class.time_offset_log_level).to eq(Knapsack::Logger::INFO)
67
+ end
68
+ end
69
+ end
70
+
48
71
  describe '.time_offset_warning' do
49
72
  let(:time_offset_in_seconds) { 30 }
50
73
  let(:max_node_time_execution) { 60 }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knapsack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-20 00:00:00.000000000 Z
11
+ date: 2016-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake