yell 2.0.6 → 2.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -11
- data/Gemfile +3 -3
- data/lib/yell.rb +0 -5
- data/lib/yell/adapters.rb +5 -8
- data/lib/yell/adapters/io.rb +0 -3
- data/lib/yell/helpers/adapter.rb +0 -4
- data/lib/yell/loggable.rb +0 -4
- data/lib/yell/logger.rb +6 -8
- data/lib/yell/version.rb +1 -2
- data/spec/compatibility/activesupport_logger_spec.rb +4 -3
- data/spec/compatibility/formatter_spec.rb +3 -5
- data/spec/spec_helper.rb +2 -8
- data/spec/yell/adapters/base_spec.rb +5 -5
- data/spec/yell/adapters/datefile_spec.rb +1 -1
- data/spec/yell/adapters/file_spec.rb +15 -6
- data/spec/yell/adapters/io_spec.rb +5 -6
- data/spec/yell/adapters_spec.rb +8 -10
- data/spec/yell/dsl_spec.rb +1 -1
- data/spec/yell/formatter_spec.rb +83 -32
- data/spec/yell/loggable_spec.rb +6 -5
- data/spec/yell/logger_spec.rb +36 -14
- data/spec/yell/repository_spec.rb +7 -2
- data/spec/yell_spec.rb +15 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c64ac6a01262ce703c70c306d55f565592b6b6e3
|
4
|
+
data.tar.gz: 0110f23e03b39c39d13cbf196738d00bf2ac09ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21d0534e86efc9c1b136f8745edffa76b5b89e9883c13405075692bd982b7c5119ad4fa39fd7f46fff462d0ca6e7204a49a562e8ffd6d5f54d1af661f4d7d887
|
7
|
+
data.tar.gz: b1b3927d90714d0b5e91fe7cbbbd71aff6e4c6d45478674f9f0175ceb28ce5c3ef832c27da80c84edb9c191343e080644572c2650974f2c1971eff9d49ced466
|
data/.travis.yml
CHANGED
@@ -1,18 +1,13 @@
|
|
1
|
+
sudo: false
|
1
2
|
language: ruby
|
2
3
|
|
3
4
|
script: "rspec"
|
4
5
|
|
5
6
|
rvm:
|
6
|
-
-
|
7
|
-
-
|
8
|
-
- 2.
|
9
|
-
- 2.1.1
|
10
|
-
- jruby-18mode
|
11
|
-
- jruby-19mode
|
12
|
-
- rbx-2
|
13
|
-
- ree
|
7
|
+
- ruby-head
|
8
|
+
- 2.3.1
|
9
|
+
- 2.2.5
|
14
10
|
|
15
11
|
notifications:
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
on_success: change
|
13
|
+
on_failure: change
|
data/Gemfile
CHANGED
@@ -7,9 +7,9 @@ group :development, :test do
|
|
7
7
|
gem "rake"
|
8
8
|
|
9
9
|
gem 'rspec-core', '~> 3'
|
10
|
-
gem 'rspec-expectations'
|
10
|
+
gem 'rspec-expectations'
|
11
|
+
gem 'rspec-mocks'
|
11
12
|
gem 'rspec-its'
|
12
|
-
gem "rr"
|
13
13
|
|
14
14
|
if RUBY_VERSION < "1.9"
|
15
15
|
gem 'timecop', '0.6.0'
|
@@ -18,7 +18,7 @@ group :development, :test do
|
|
18
18
|
gem 'timecop'
|
19
19
|
gem 'activesupport'
|
20
20
|
|
21
|
-
gem '
|
21
|
+
gem 'byebug'
|
22
22
|
end
|
23
23
|
|
24
24
|
gem 'simplecov', :require => false, :platform => :ruby_20
|
data/lib/yell.rb
CHANGED
@@ -22,7 +22,6 @@
|
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
24
|
module Yell #:nodoc:
|
25
|
-
|
26
25
|
# Holds all Yell severities
|
27
26
|
Severities = ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'UNKNOWN'].freeze
|
28
27
|
|
@@ -112,9 +111,7 @@ module Yell #:nodoc:
|
|
112
111
|
|
113
112
|
value.nil? ? options[:default] : value
|
114
113
|
end
|
115
|
-
|
116
114
|
end
|
117
|
-
|
118
115
|
end
|
119
116
|
|
120
117
|
# helpers
|
@@ -147,5 +144,3 @@ Yell.register :file, Yell::Adapters::File
|
|
147
144
|
Yell.register :datefile, Yell::Adapters::Datefile
|
148
145
|
Yell.register :stdout, Yell::Adapters::Stdout
|
149
146
|
Yell.register :stderr, Yell::Adapters::Stderr
|
150
|
-
|
151
|
-
|
data/lib/yell/adapters.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Yell #:nodoc:
|
3
|
-
|
4
3
|
# AdapterNotFound is raised whenever you want to instantiate an
|
5
4
|
# adapter that does not exist.
|
6
5
|
class AdapterNotFound < StandardError; end
|
@@ -9,7 +8,6 @@ module Yell #:nodoc:
|
|
9
8
|
# the logger. You should not have to call the corresponding classes
|
10
9
|
# directly.
|
11
10
|
module Adapters
|
12
|
-
|
13
11
|
class Collection
|
14
12
|
def initialize( options = {} )
|
15
13
|
@options = options
|
@@ -61,19 +59,18 @@ module Yell #:nodoc:
|
|
61
59
|
#
|
62
60
|
# @example A simple file adapter
|
63
61
|
# Yell::Adapters.new( :file )
|
64
|
-
def self.new(
|
65
|
-
return
|
62
|
+
def self.new( type, options = {}, &block )
|
63
|
+
return type if type.is_a?(Yell::Adapters::Base)
|
66
64
|
|
67
|
-
adapter = case
|
65
|
+
adapter = case type
|
68
66
|
when STDOUT then @adapters[:stdout]
|
69
67
|
when STDERR then @adapters[:stderr]
|
70
|
-
else @adapters[
|
68
|
+
else @adapters[type.to_sym]
|
71
69
|
end
|
72
70
|
|
73
|
-
raise AdapterNotFound.new(
|
71
|
+
raise AdapterNotFound.new(type) if adapter.nil?
|
74
72
|
adapter.new(options, &block)
|
75
73
|
end
|
76
|
-
|
77
74
|
end
|
78
75
|
end
|
79
76
|
|
data/lib/yell/adapters/io.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
module Yell #:nodoc:
|
4
4
|
module Adapters #:nodoc:
|
5
|
-
|
6
5
|
class Io < Yell::Adapters::Base
|
7
6
|
include Yell::Helpers::Formatter
|
8
7
|
|
@@ -94,9 +93,7 @@ module Yell #:nodoc:
|
|
94
93
|
def inspectables
|
95
94
|
super.concat [:formatter, :colors, :sync]
|
96
95
|
end
|
97
|
-
|
98
96
|
end
|
99
|
-
|
100
97
|
end
|
101
98
|
end
|
102
99
|
|
data/lib/yell/helpers/adapter.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
module Yell #:nodoc:
|
3
3
|
module Helpers #:nodoc:
|
4
4
|
module Adapter #:nodoc:
|
5
|
-
|
6
5
|
# Define an adapter to be used for logging.
|
7
6
|
#
|
8
7
|
# @example Standard adapter
|
@@ -31,7 +30,6 @@ module Yell #:nodoc:
|
|
31
30
|
@__adapters__
|
32
31
|
end
|
33
32
|
|
34
|
-
|
35
33
|
private
|
36
34
|
|
37
35
|
def reset!
|
@@ -39,8 +37,6 @@ module Yell #:nodoc:
|
|
39
37
|
|
40
38
|
super
|
41
39
|
end
|
42
|
-
|
43
40
|
end
|
44
41
|
end
|
45
42
|
end
|
46
|
-
|
data/lib/yell/loggable.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Yell #:nodoc:
|
4
|
-
|
5
4
|
# Include this module to add a logger to any class.
|
6
5
|
#
|
7
6
|
# When including this module, your class will have a :logger instance method
|
@@ -17,7 +16,6 @@ module Yell #:nodoc:
|
|
17
16
|
#
|
18
17
|
# Foo.new.logger.info "Hello World"
|
19
18
|
module Loggable
|
20
|
-
|
21
19
|
def self.included(base)
|
22
20
|
base.extend(ClassMethods)
|
23
21
|
end
|
@@ -31,7 +29,5 @@ module Yell #:nodoc:
|
|
31
29
|
def logger
|
32
30
|
self.class.logger
|
33
31
|
end
|
34
|
-
|
35
32
|
end
|
36
33
|
end
|
37
|
-
|
data/lib/yell/logger.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
2
|
require 'pathname'
|
4
3
|
|
5
4
|
module Yell #:nodoc:
|
6
|
-
|
7
5
|
# The +Yell::Logger+ is your entrypoint. Anything onwards is derived from here.
|
8
6
|
#
|
9
7
|
# A +Yell::Logger+ instance holds all your adapters and sends the log events
|
@@ -144,11 +142,12 @@ module Yell #:nodoc:
|
|
144
142
|
#
|
145
143
|
# @example
|
146
144
|
# extract!(:stdout => {:level => :info}, :stderr => {:level => :error})
|
147
|
-
def extract!( *
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
else
|
145
|
+
def extract!( *list )
|
146
|
+
list.each do |a|
|
147
|
+
if a.is_a?(Hash)
|
148
|
+
a.each { |t, o| adapter(t, o) }
|
149
|
+
else
|
150
|
+
adapter(a)
|
152
151
|
end
|
153
152
|
end
|
154
153
|
end
|
@@ -157,7 +156,6 @@ module Yell #:nodoc:
|
|
157
156
|
def inspectables
|
158
157
|
[:name] | super
|
159
158
|
end
|
160
|
-
|
161
159
|
end
|
162
160
|
end
|
163
161
|
|
data/lib/yell/version.rb
CHANGED
@@ -10,7 +10,8 @@ end
|
|
10
10
|
#
|
11
11
|
# We simulate the case when Rails 4 starts up its server
|
12
12
|
# and wants to append the log output.
|
13
|
-
describe "Compatibility to ActiveSupport::Logger",
|
13
|
+
describe "Compatibility to ActiveSupport::Logger",
|
14
|
+
:pending => (!defined?(ActiveSupport) || ActiveSupport::VERSION::MAJOR < 4) do
|
14
15
|
|
15
16
|
let!(:yell) { Yell.new($stdout, :format => "%m") }
|
16
17
|
|
@@ -25,8 +26,8 @@ describe "Compatibility to ActiveSupport::Logger", :pending => (!defined?(Active
|
|
25
26
|
end
|
26
27
|
|
27
28
|
it "should behave correctly" do
|
28
|
-
|
29
|
-
|
29
|
+
expect($stdout).to receive(:syswrite).with("Hello World\n") # yell
|
30
|
+
expect($stdout).to receive(:write).with("Hello World\n") # logger
|
30
31
|
|
31
32
|
yell.info "Hello World"
|
32
33
|
end
|
@@ -2,22 +2,20 @@ require 'spec_helper'
|
|
2
2
|
require 'logger'
|
3
3
|
|
4
4
|
describe "backwards compatible formatter" do
|
5
|
-
|
6
5
|
let(:time) { Time.now }
|
7
6
|
let(:formatter) { Yell::Formatter.new(Yell::DefaultFormat) }
|
8
7
|
let(:logger) { Logger.new($stdout) }
|
9
8
|
|
10
9
|
before do
|
11
10
|
Timecop.freeze(time)
|
12
|
-
|
13
11
|
logger.formatter = formatter
|
14
12
|
end
|
15
13
|
|
16
14
|
it "should format out the message correctly" do
|
17
|
-
|
15
|
+
expect($stdout).to(
|
16
|
+
receive(:write).with("#{time.iso8601} [ INFO] #{$$} : Hello World!\n")
|
17
|
+
)
|
18
18
|
|
19
19
|
logger.info "Hello World!"
|
20
20
|
end
|
21
|
-
|
22
21
|
end
|
23
|
-
|
data/spec/spec_helper.rb
CHANGED
@@ -5,14 +5,10 @@ ENV['YELL_ENV'] = 'test'
|
|
5
5
|
|
6
6
|
require 'rspec/core'
|
7
7
|
require 'rspec/expectations'
|
8
|
+
require 'rspec/mocks'
|
8
9
|
require 'rspec/its'
|
9
|
-
require 'rr'
|
10
10
|
require 'timecop'
|
11
|
-
|
12
|
-
begin
|
13
|
-
require 'pry'
|
14
|
-
rescue LoadError
|
15
|
-
end
|
11
|
+
require 'byebug'
|
16
12
|
|
17
13
|
begin
|
18
14
|
require 'coveralls'
|
@@ -34,8 +30,6 @@ end
|
|
34
30
|
require 'yell'
|
35
31
|
|
36
32
|
RSpec.configure do |config|
|
37
|
-
config.mock_framework = :rr
|
38
|
-
|
39
33
|
config.before :each do
|
40
34
|
Yell::Repository.loggers.clear
|
41
35
|
|
@@ -22,20 +22,20 @@ describe Yell::Adapters::Base do
|
|
22
22
|
|
23
23
|
context "#write" do
|
24
24
|
let(:logger) { Yell::Logger.new }
|
25
|
-
|
25
|
+
let(:adapter) { Yell::Adapters::Base.new(:level => 1) }
|
26
26
|
|
27
27
|
it "should delegate :event to :write!" do
|
28
28
|
event = Yell::Event.new(logger, 1, "Hello World!")
|
29
|
-
|
29
|
+
expect(adapter).to receive(:write!).with(event)
|
30
30
|
|
31
|
-
|
31
|
+
adapter.write(event)
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should not write when event does not have the right level" do
|
35
35
|
event = Yell::Event.new(logger, 0, "Hello World!")
|
36
|
-
|
36
|
+
expect(adapter).to_not receive(:write!)
|
37
37
|
|
38
|
-
|
38
|
+
adapter.write(event)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
@@ -4,7 +4,7 @@ describe Yell::Adapters::File do
|
|
4
4
|
let(:devnull) { File.new('/dev/null', 'w') }
|
5
5
|
|
6
6
|
before do
|
7
|
-
|
7
|
+
allow(File).to receive(:open) { devnull }
|
8
8
|
end
|
9
9
|
|
10
10
|
it { should be_kind_of(Yell::Adapters::Io) }
|
@@ -24,7 +24,10 @@ describe Yell::Adapters::File do
|
|
24
24
|
let(:adapter) { Yell::Adapters::File.new }
|
25
25
|
|
26
26
|
it "should print to file" do
|
27
|
-
|
27
|
+
expect(File).to(
|
28
|
+
receive(:open).
|
29
|
+
with(filename, File::WRONLY|File::APPEND|File::CREAT) { devnull }
|
30
|
+
)
|
28
31
|
|
29
32
|
adapter.write(event)
|
30
33
|
end
|
@@ -35,7 +38,10 @@ describe Yell::Adapters::File do
|
|
35
38
|
let(:adapter) { Yell::Adapters::File.new(:filename => filename) }
|
36
39
|
|
37
40
|
it "should print to file" do
|
38
|
-
|
41
|
+
expect(File).to(
|
42
|
+
receive(:open).
|
43
|
+
with(filename, File::WRONLY|File::APPEND|File::CREAT) { devnull }
|
44
|
+
)
|
39
45
|
|
40
46
|
adapter.write(event)
|
41
47
|
end
|
@@ -46,7 +52,10 @@ describe Yell::Adapters::File do
|
|
46
52
|
let(:adapter) { Yell::Adapters::File.new( :filename => pathname ) }
|
47
53
|
|
48
54
|
it "should accept pathanme as filename" do
|
49
|
-
|
55
|
+
expect(File).to(
|
56
|
+
receive(:open).
|
57
|
+
with(pathname.to_s, File::WRONLY|File::APPEND|File::CREAT) { devnull }
|
58
|
+
)
|
50
59
|
|
51
60
|
adapter.write(event)
|
52
61
|
end
|
@@ -56,7 +65,7 @@ describe Yell::Adapters::File do
|
|
56
65
|
let(:adapter) { Yell::Adapters::File.new }
|
57
66
|
|
58
67
|
it "should sync by default" do
|
59
|
-
|
68
|
+
expect(devnull).to receive(:sync=).with(true)
|
60
69
|
|
61
70
|
adapter.write(event)
|
62
71
|
end
|
@@ -64,7 +73,7 @@ describe Yell::Adapters::File do
|
|
64
73
|
it "pass the option to File" do
|
65
74
|
adapter.sync = false
|
66
75
|
|
67
|
-
|
76
|
+
expect(devnull).to receive(:sync=).with(false)
|
68
77
|
|
69
78
|
adapter.write(event)
|
70
79
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Yell::Adapters::Io do
|
4
|
-
|
5
4
|
it { should be_kind_of Yell::Adapters::Base }
|
6
5
|
|
7
6
|
context "initialize" do
|
@@ -51,22 +50,22 @@ describe Yell::Adapters::Io do
|
|
51
50
|
let(:stream) { File.new('/dev/null', 'w') }
|
52
51
|
|
53
52
|
before do
|
54
|
-
|
53
|
+
allow(adapter).to receive(:stream) { stream }
|
55
54
|
end
|
56
55
|
|
57
56
|
it "should format the message" do
|
58
|
-
|
57
|
+
expect(adapter.format).to(
|
58
|
+
receive(:call).with(event).and_call_original
|
59
|
+
)
|
59
60
|
|
60
61
|
adapter.write(event)
|
61
62
|
end
|
62
63
|
|
63
64
|
it "should print formatted message to stream" do
|
64
65
|
formatted = Yell::Formatter.new.call(event)
|
65
|
-
|
66
|
+
expect(stream).to receive(:syswrite).with(formatted)
|
66
67
|
|
67
68
|
adapter.write(event)
|
68
69
|
end
|
69
70
|
end
|
70
|
-
|
71
71
|
end
|
72
|
-
|
data/spec/yell/adapters_spec.rb
CHANGED
@@ -11,35 +11,33 @@ describe Yell::Adapters do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should accept STDOUT" do
|
14
|
-
|
14
|
+
expect(Yell::Adapters::Stdout).to receive(:new).with(anything)
|
15
15
|
|
16
16
|
Yell::Adapters.new(STDOUT)
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should accept STDERR" do
|
20
|
-
|
20
|
+
expect(Yell::Adapters::Stderr).to receive(:new).with(anything)
|
21
21
|
|
22
22
|
Yell::Adapters.new(STDERR)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should raise an unregistered adapter" do
|
26
26
|
expect {
|
27
|
-
Yell::Adapters.new
|
27
|
+
Yell::Adapters.new(:unknown)
|
28
28
|
}.to raise_error(Yell::AdapterNotFound)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
context ".register" do
|
33
|
-
let(:
|
34
|
-
let(:klass) {
|
35
|
-
|
36
|
-
before { Yell::Adapters.register(name, klass) }
|
33
|
+
let(:type) { :test }
|
34
|
+
let(:klass) { double }
|
37
35
|
|
38
36
|
it "should allow to being called from :new" do
|
39
|
-
|
37
|
+
Yell::Adapters.register(type, klass)
|
38
|
+
expect(klass).to receive(:new).with(anything)
|
40
39
|
|
41
|
-
Yell::Adapters.new(
|
40
|
+
Yell::Adapters.new(type)
|
42
41
|
end
|
43
42
|
end
|
44
|
-
|
45
43
|
end
|
data/spec/yell/dsl_spec.rb
CHANGED
data/spec/yell/formatter_spec.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Yell::Formatter do
|
4
|
-
|
5
4
|
let(:logger) { Yell::Logger.new(:stdout, :name => 'Yell') }
|
6
5
|
let(:message) { "Hello World!" }
|
7
6
|
let(:event) { Yell::Event.new(logger, 1, message) }
|
7
|
+
let(:time) { Time.now }
|
8
8
|
|
9
9
|
let(:pattern) { "%m" }
|
10
10
|
let(:formatter) { Yell::Formatter.new(pattern) }
|
11
11
|
|
12
|
-
let(:
|
13
|
-
|
14
|
-
subject { formatter.call(event) }
|
12
|
+
let(:output) { formatter.call(event) }
|
15
13
|
|
16
14
|
before do
|
17
15
|
Timecop.freeze(time)
|
@@ -20,101 +18,150 @@ describe Yell::Formatter do
|
|
20
18
|
describe "patterns" do
|
21
19
|
context "%m" do
|
22
20
|
let(:pattern) { "%m" }
|
23
|
-
|
21
|
+
|
22
|
+
it "returns correctly" do
|
23
|
+
expect(output).to eq("#{event.messages.join(' ')}\n")
|
24
|
+
end
|
24
25
|
end
|
25
26
|
|
26
27
|
context "%l" do
|
27
28
|
let(:pattern) { "%l" }
|
28
|
-
|
29
|
+
|
30
|
+
it "returns correctly" do
|
31
|
+
expect(output).to eq("#{Yell::Severities[event.level][0,1]}\n")
|
32
|
+
end
|
29
33
|
end
|
30
34
|
|
31
35
|
context "%L" do
|
32
36
|
let(:pattern) { "%L" }
|
33
|
-
|
37
|
+
|
38
|
+
it "returns correctly" do
|
39
|
+
expect(output).to eq("#{Yell::Severities[event.level]}\n")
|
40
|
+
end
|
34
41
|
end
|
35
42
|
|
36
43
|
context "%d" do
|
37
44
|
let(:pattern) { "%d" }
|
38
|
-
|
45
|
+
|
46
|
+
it "returns correctly" do
|
47
|
+
expect(output).to eq("#{event.time.iso8601}\n")
|
48
|
+
end
|
39
49
|
end
|
40
50
|
|
41
51
|
context "%p" do
|
42
52
|
let(:pattern) { "%p" }
|
43
|
-
|
53
|
+
|
54
|
+
it "returns correctly" do
|
55
|
+
expect(output).to eq("#{event.pid}\n")
|
56
|
+
end
|
44
57
|
end
|
45
58
|
|
46
59
|
context "%P" do
|
47
60
|
let(:pattern) { "%P" }
|
48
|
-
|
61
|
+
|
62
|
+
it "returns correctly" do
|
63
|
+
expect(output).to eq("#{event.progname}\n")
|
64
|
+
end
|
49
65
|
end
|
50
66
|
|
51
67
|
context "%t" do
|
52
68
|
let(:pattern) { "%t" }
|
53
|
-
|
69
|
+
|
70
|
+
it "returns correctly" do
|
71
|
+
expect(output).to eq("#{event.thread_id}\n")
|
72
|
+
end
|
54
73
|
end
|
55
74
|
|
56
75
|
context "%h" do
|
57
76
|
let(:pattern) { "%h" }
|
58
|
-
|
77
|
+
|
78
|
+
it "returns correctly" do
|
79
|
+
expect(output).to eq("#{event.hostname}\n")
|
80
|
+
end
|
59
81
|
end
|
60
82
|
|
61
83
|
context ":caller" do
|
62
84
|
let(:_caller) { [nil, nil, "/path/to/file.rb:123:in `test_method'"] }
|
63
85
|
|
64
86
|
before do
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
stub(e).method { "test_method" }
|
69
|
-
end
|
87
|
+
allow(event).to receive(:file) { "/path/to/file.rb" }
|
88
|
+
allow(event).to receive(:line) { "123" }
|
89
|
+
allow(event).to receive(:method) { "test_method" }
|
70
90
|
end
|
71
91
|
|
72
92
|
context "%F" do
|
73
93
|
let(:pattern) { "%F" }
|
74
|
-
|
94
|
+
|
95
|
+
it "returns correctly" do
|
96
|
+
expect(output).to eq("/path/to/file.rb\n")
|
97
|
+
end
|
75
98
|
end
|
76
99
|
|
77
100
|
context "%f" do
|
78
101
|
let(:pattern) { "%f" }
|
79
|
-
|
102
|
+
|
103
|
+
it "returns correctly" do
|
104
|
+
expect(output).to eq("file.rb\n")
|
105
|
+
end
|
80
106
|
end
|
81
107
|
|
82
108
|
context "%M" do
|
83
109
|
let(:pattern) { "%M" }
|
84
|
-
|
110
|
+
|
111
|
+
it "returns correctly" do
|
112
|
+
expect(output).to eq("test_method\n")
|
113
|
+
end
|
85
114
|
end
|
86
115
|
|
87
116
|
context "%n" do
|
88
117
|
let(:pattern) { "%n" }
|
89
|
-
|
118
|
+
|
119
|
+
it "returns correctly" do
|
120
|
+
expect(output).to eq("123\n")
|
121
|
+
end
|
90
122
|
end
|
91
123
|
end
|
92
124
|
|
93
125
|
context "%N" do
|
94
126
|
let(:pattern) { "%N" }
|
95
|
-
|
127
|
+
|
128
|
+
it "returns correctly" do
|
129
|
+
expect(output).to eq("Yell\n")
|
130
|
+
end
|
96
131
|
end
|
97
132
|
end
|
98
133
|
|
99
134
|
describe "presets" do
|
100
135
|
context "NoFormat" do
|
101
136
|
let(:pattern) { Yell::NoFormat }
|
102
|
-
|
137
|
+
|
138
|
+
it "Retrns correctly" do
|
139
|
+
expect(output).to eq("Hello World!\n")
|
140
|
+
end
|
103
141
|
end
|
104
142
|
|
105
143
|
context "DefaultFormat" do
|
106
144
|
let(:pattern) { Yell::DefaultFormat }
|
107
|
-
|
145
|
+
|
146
|
+
it "returns correctly" do
|
147
|
+
expect(output).to eq("#{time.iso8601} [ INFO] #{$$} : Hello World!\n")
|
148
|
+
end
|
108
149
|
end
|
109
150
|
|
110
151
|
context "BasicFormat" do
|
111
152
|
let(:pattern) { Yell::BasicFormat }
|
112
|
-
|
153
|
+
|
154
|
+
it "returns correctly" do
|
155
|
+
expect(output).to eq("I, #{time.iso8601} : Hello World!\n")
|
156
|
+
end
|
113
157
|
end
|
114
158
|
|
115
159
|
context "ExtendedFormat" do
|
116
160
|
let(:pattern) { Yell::ExtendedFormat }
|
117
|
-
|
161
|
+
|
162
|
+
it "Returns correctly" do
|
163
|
+
expect(output).to eq("#{time.iso8601} [ INFO] #{$$} #{Socket.gethostname} : Hello World!\n")
|
164
|
+
end
|
118
165
|
end
|
119
166
|
end
|
120
167
|
|
@@ -122,16 +169,20 @@ describe Yell::Formatter do
|
|
122
169
|
let(:message) { StandardError.new("This is an Exception") }
|
123
170
|
|
124
171
|
before do
|
125
|
-
|
172
|
+
allow(message).to receive(:backtrace) { ["backtrace"] }
|
126
173
|
end
|
127
174
|
|
128
|
-
it
|
175
|
+
it "returns correctly" do
|
176
|
+
expect(output).to eq("StandardError: This is an Exception\n\tbacktrace\n")
|
177
|
+
end
|
129
178
|
end
|
130
179
|
|
131
180
|
describe "Hash" do
|
132
181
|
let(:message) { {:test => 'message'} }
|
133
182
|
|
134
|
-
it
|
183
|
+
it "Returns correctly" do
|
184
|
+
expect(output).to eq("test: message\n")
|
185
|
+
end
|
135
186
|
end
|
136
187
|
|
137
188
|
describe "custom message modifiers" do
|
@@ -139,8 +190,8 @@ describe Yell::Formatter do
|
|
139
190
|
Yell::Formatter.new(pattern) { |f| f.modify(String) { |m| "Modified! #{m}" } }
|
140
191
|
end
|
141
192
|
|
142
|
-
it
|
193
|
+
it "Returns correctly" do
|
194
|
+
expect(output).to eq("Modified! #{message}\n")
|
195
|
+
end
|
143
196
|
end
|
144
|
-
|
145
197
|
end
|
146
|
-
|
data/spec/yell/loggable_spec.rb
CHANGED
@@ -6,15 +6,16 @@ end
|
|
6
6
|
|
7
7
|
describe Yell::Loggable do
|
8
8
|
let(:factory) { LoggableFactory.new }
|
9
|
-
subject { factory }
|
10
9
|
|
11
|
-
it
|
10
|
+
it "responds with logger" do
|
11
|
+
expect(factory).to respond_to(:logger)
|
12
|
+
end
|
12
13
|
|
13
14
|
it "should make a lookup in the Yell::Repository" do
|
14
|
-
|
15
|
+
expect(Yell::Repository).to(
|
16
|
+
receive(:[]).with(LoggableFactory)
|
17
|
+
)
|
15
18
|
|
16
19
|
factory.logger
|
17
20
|
end
|
18
|
-
|
19
21
|
end
|
20
|
-
|
data/spec/yell/logger_spec.rb
CHANGED
@@ -111,7 +111,9 @@ describe Yell::Logger do
|
|
111
111
|
|
112
112
|
context "initialize with a #filename" do
|
113
113
|
it "should call adapter with :file" do
|
114
|
-
|
114
|
+
expect(Yell::Adapters::File).to(
|
115
|
+
receive(:new).with(:filename => filename).and_call_original
|
116
|
+
)
|
115
117
|
|
116
118
|
Yell::Logger.new(filename)
|
117
119
|
end
|
@@ -121,14 +123,18 @@ describe Yell::Logger do
|
|
121
123
|
let(:pathname) { Pathname.new(filename) }
|
122
124
|
|
123
125
|
it "should call adapter with :file" do
|
124
|
-
|
126
|
+
expect(Yell::Adapters::File).to(
|
127
|
+
receive(:new).with(:filename => pathname).and_call_original
|
128
|
+
)
|
125
129
|
|
126
130
|
Yell::Logger.new(pathname)
|
127
131
|
end
|
128
132
|
end
|
129
133
|
|
130
134
|
context "initialize with a :stdout adapter" do
|
131
|
-
before
|
135
|
+
before do
|
136
|
+
expect(Yell::Adapters::Stdout).to receive(:new)
|
137
|
+
end
|
132
138
|
|
133
139
|
it "should call adapter with STDOUT" do
|
134
140
|
Yell::Logger.new(STDOUT)
|
@@ -140,7 +146,9 @@ describe Yell::Logger do
|
|
140
146
|
end
|
141
147
|
|
142
148
|
context "initialize with a :stderr adapter" do
|
143
|
-
before
|
149
|
+
before do
|
150
|
+
expect(Yell::Adapters::Stderr).to receive(:new)
|
151
|
+
end
|
144
152
|
|
145
153
|
it "should call adapter with STDERR" do
|
146
154
|
Yell::Logger.new(STDERR)
|
@@ -186,12 +194,22 @@ describe Yell::Logger do
|
|
186
194
|
|
187
195
|
context "initialize with #adapters option" do
|
188
196
|
it "should set adapters in logger correctly" do
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
197
|
+
expect(Yell::Adapters::Stdout).to(
|
198
|
+
receive(:new).
|
199
|
+
and_call_original
|
200
|
+
)
|
201
|
+
expect(Yell::Adapters::Stderr).to(
|
202
|
+
receive(:new).
|
203
|
+
with(hash_including(:level => :error)).
|
204
|
+
and_call_original
|
205
|
+
)
|
206
|
+
|
207
|
+
Yell::Logger.new(
|
208
|
+
:adapters => [
|
209
|
+
:stdout,
|
210
|
+
{:stderr => {:level => :error}}
|
211
|
+
]
|
212
|
+
)
|
195
213
|
end
|
196
214
|
end
|
197
215
|
|
@@ -203,8 +221,12 @@ describe Yell::Logger do
|
|
203
221
|
factory = LoggerFactory.new
|
204
222
|
factory.logger = logger
|
205
223
|
|
206
|
-
|
207
|
-
|
224
|
+
expect(stdout.send(:stream)).to(
|
225
|
+
receive(:syswrite).with("#{__FILE__}, 7: info\n")
|
226
|
+
)
|
227
|
+
expect(stdout.send(:stream)).to(
|
228
|
+
receive(:syswrite).with("#{__FILE__}, 11: add\n")
|
229
|
+
)
|
208
230
|
|
209
231
|
factory.info
|
210
232
|
factory.add
|
@@ -252,13 +274,13 @@ describe Yell::Logger do
|
|
252
274
|
let(:logger) { Yell::Logger.new(stdout, :silence => silence) }
|
253
275
|
|
254
276
|
it "should not pass a matching message to any adapter" do
|
255
|
-
|
277
|
+
expect(stdout).to_not receive(:write)
|
256
278
|
|
257
279
|
logger.info "this should not be logged"
|
258
280
|
end
|
259
281
|
|
260
282
|
it "should pass a non-matching message to any adapter" do
|
261
|
-
|
283
|
+
expect(stdout).to receive(:write).with(kind_of(Yell::Event))
|
262
284
|
|
263
285
|
logger.info "that should be logged"
|
264
286
|
end
|
@@ -23,8 +23,13 @@ describe Yell::Repository do
|
|
23
23
|
let!(:logger) { Yell.new(:stdout, :name => "Numeric") }
|
24
24
|
|
25
25
|
it "should raise with the correct :name when logger not found" do
|
26
|
-
|
27
|
-
|
26
|
+
expect(Yell::LoggerNotFound).to(
|
27
|
+
receive(:new).with(String).and_call_original
|
28
|
+
)
|
29
|
+
|
30
|
+
expect {
|
31
|
+
Yell::Repository[String]
|
32
|
+
}.to raise_error(Yell::LoggerNotFound)
|
28
33
|
end
|
29
34
|
|
30
35
|
it "should return the logger" do
|
data/spec/yell_spec.rb
CHANGED
@@ -33,7 +33,9 @@ describe Yell do
|
|
33
33
|
subject { Yell.load!('yell.yml') }
|
34
34
|
|
35
35
|
before do
|
36
|
-
|
36
|
+
expect(Yell::Configuration).to(
|
37
|
+
receive(:load!).with('yell.yml') { {} }
|
38
|
+
)
|
37
39
|
end
|
38
40
|
|
39
41
|
it "should be_kind_of Yell::Logger" do
|
@@ -45,7 +47,7 @@ describe Yell do
|
|
45
47
|
let(:name) { 'test' }
|
46
48
|
|
47
49
|
it "should delegate to the repository" do
|
48
|
-
|
50
|
+
expect(Yell::Repository).to receive(:[]).with(name)
|
49
51
|
|
50
52
|
Yell[name]
|
51
53
|
end
|
@@ -55,7 +57,9 @@ describe Yell do
|
|
55
57
|
let(:name) { 'test' }
|
56
58
|
|
57
59
|
it "should delegate to the repository" do
|
58
|
-
|
60
|
+
expect(Yell::Repository).to(
|
61
|
+
receive(:[]=).with(name, logger).and_call_original
|
62
|
+
)
|
59
63
|
|
60
64
|
Yell[name] = logger
|
61
65
|
end
|
@@ -70,8 +74,8 @@ describe Yell do
|
|
70
74
|
|
71
75
|
context "fallback to RACK_ENV" do
|
72
76
|
before do
|
73
|
-
|
74
|
-
|
77
|
+
expect(ENV).to receive(:key?).with('YELL_ENV') { false }
|
78
|
+
expect(ENV).to receive(:key?).with('RACK_ENV') { true }
|
75
79
|
|
76
80
|
ENV['RACK_ENV'] = 'rack'
|
77
81
|
end
|
@@ -85,9 +89,9 @@ describe Yell do
|
|
85
89
|
|
86
90
|
context "fallback to RAILS_ENV" do
|
87
91
|
before do
|
88
|
-
|
89
|
-
|
90
|
-
|
92
|
+
expect(ENV).to receive(:key?).with('YELL_ENV') { false }
|
93
|
+
expect(ENV).to receive(:key?).with('RACK_ENV') { false }
|
94
|
+
expect(ENV).to receive(:key?).with('RAILS_ENV') { true }
|
91
95
|
|
92
96
|
ENV['RAILS_ENV'] = 'rails'
|
93
97
|
end
|
@@ -101,9 +105,9 @@ describe Yell do
|
|
101
105
|
|
102
106
|
context "fallback to development" do
|
103
107
|
before do
|
104
|
-
|
105
|
-
|
106
|
-
|
108
|
+
expect(ENV).to receive(:key?).with('YELL_ENV') { false }
|
109
|
+
expect(ENV).to receive(:key?).with('RACK_ENV') { false }
|
110
|
+
expect(ENV).to receive(:key?).with('RAILS_ENV') { false }
|
107
111
|
end
|
108
112
|
|
109
113
|
it "should == 'development'" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rudolf Schmidt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Yell - Your Extensible Logging Library. Define multiple adapters, various
|
14
14
|
log level combinations or message formatting options like you've never done before
|