yell 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,43 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yell::Adapters::Base do
4
-
5
- context "initialize" do
6
- context ":level" do
7
- let(:level) { Yell::Level.new(:warn) }
8
-
9
- it "should set the level" do
10
- adapter = Yell::Adapters::Base.new(:level => level)
11
-
12
- expect(adapter.level).to eq(level)
13
- end
14
-
15
- it "should set the level when block was given" do
16
- adapter = Yell::Adapters::Base.new { |a| a.level = level }
17
-
18
- expect(adapter.level).to eq(level)
19
- end
20
- end
21
- end
22
-
23
- context "#write" do
24
- let(:logger) { Yell::Logger.new }
25
- let(:adapter) { Yell::Adapters::Base.new(:level => 1) }
26
-
27
- it "should delegate :event to :write!" do
28
- event = Yell::Event.new(logger, 1, "Hello World!")
29
- expect(adapter).to receive(:write!).with(event)
30
-
31
- adapter.write(event)
32
- end
33
-
34
- it "should not write when event does not have the right level" do
35
- event = Yell::Event.new(logger, 0, "Hello World!")
36
- expect(adapter).to_not receive(:write!)
37
-
38
- adapter.write(event)
39
- end
40
- end
41
-
42
- end
43
-
@@ -1,168 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yell::Adapters::Datefile do
4
- let(:logger) { Yell::Logger.new }
5
- let(:message) { "Hello World" }
6
- let(:event) { Yell::Event.new(logger, 1, message) }
7
-
8
- let(:today) { Time.now }
9
- let(:tomorrow) { Time.now + 86400 }
10
-
11
- let(:filename) { fixture_path + '/test.log' }
12
- let(:today_filename) { fixture_path + "/test.#{today.strftime(Yell::Adapters::Datefile::DefaultDatePattern)}.log" }
13
- let(:tomorrow_filename) { fixture_path + "/test.#{tomorrow.strftime(Yell::Adapters::Datefile::DefaultDatePattern)}.log" }
14
-
15
- let(:adapter) { Yell::Adapters::Datefile.new(:filename => filename, :format => "%m") }
16
-
17
- before do
18
- Timecop.freeze(today)
19
- end
20
-
21
- it { should be_kind_of Yell::Adapters::File }
22
-
23
- describe "#write" do
24
- let(:today_lines) { File.readlines(today_filename) }
25
-
26
- before do
27
- adapter.write(event)
28
- end
29
-
30
- it "should be output to filename with date pattern" do
31
- expect(File.exist?(today_filename)).to be_truthy
32
-
33
- expect(today_lines.size).to eq(2) # includes header line
34
- expect(today_lines.last).to match(message)
35
- end
36
-
37
- it "should output to the same file" do
38
- adapter.write(event)
39
-
40
- expect(File.exist?(today_filename)).to be_truthy
41
- expect(today_lines.size).to eq(3) # includes header line
42
- end
43
-
44
- it "should not open file handle again" do
45
- expect(File).to_not receive(:open)
46
-
47
- adapter.write(event)
48
- end
49
-
50
- context "on rollover" do
51
- let(:tomorrow_lines) { File.readlines(tomorrow_filename) }
52
-
53
- before do
54
- Timecop.freeze(tomorrow) { adapter.write(event) }
55
- end
56
-
57
- it "should rotate file" do
58
- expect(File.exist?(tomorrow_filename)).to be_truthy
59
-
60
- expect(tomorrow_lines.size).to eq(2) # includes header line
61
- expect(tomorrow_lines.last).to match(message)
62
- end
63
- end
64
- end
65
-
66
- describe "#keep" do
67
- before do
68
- adapter.symlink = false # to not taint the Dir
69
- adapter.keep = 2
70
-
71
- adapter.write(event)
72
- end
73
-
74
- it "should keep the specified number or files upon rollover" do
75
- expect(Dir[fixture_path + '/*.log'].size).to eq(1)
76
-
77
- Timecop.freeze(tomorrow) { adapter.write(event) }
78
- expect(Dir[fixture_path + '/*.log'].size).to eq(2)
79
-
80
- Timecop.freeze(tomorrow + 86400 ) { adapter.write(event) }
81
- expect(Dir[fixture_path + '/*.log'].size).to eq(2)
82
- end
83
- end
84
-
85
- describe "#symlink" do
86
- context "when true (default)" do
87
- before do
88
- adapter.write(event)
89
- end
90
-
91
- it "should be created on the original filename" do
92
- expect(File.symlink?(filename)).to be_truthy
93
- expect(File.readlink(filename)).to eq(today_filename)
94
- end
95
-
96
- it "should be recreated upon rollover" do
97
- Timecop.freeze(tomorrow) { adapter.write(event) }
98
-
99
- expect(File.symlink?(filename)).to be_truthy
100
- expect(File.readlink(filename)).to eq(tomorrow_filename)
101
- end
102
- end
103
-
104
- context "when false" do
105
- before do
106
- adapter.symlink = false
107
- end
108
-
109
- it "should not create the sylink the original filename" do
110
- adapter.write( event )
111
-
112
- expect(File.symlink?(filename)).to be_falsey
113
- end
114
- end
115
- end
116
-
117
- describe "#header" do
118
- let(:header) { File.open(today_filename, &:readline) }
119
-
120
- context "when true (default)" do
121
- before do
122
- adapter.write(event)
123
- end
124
-
125
- it "should be written" do
126
- expect(header).to match(Yell::Adapters::Datefile::HeaderRegexp)
127
- end
128
-
129
- it "should be rewritten upon rollover" do
130
- Timecop.freeze(tomorrow) { adapter.write(event) }
131
-
132
- expect(File.symlink?(filename)).to be_truthy
133
- expect(File.readlink(filename)).to eq(tomorrow_filename)
134
- end
135
- end
136
-
137
- context "when false" do
138
- before do
139
- adapter.header = false
140
- end
141
-
142
- it "should not be written" do
143
- adapter.write(event)
144
-
145
- expect(header).to eq("Hello World\n")
146
- end
147
- end
148
- end
149
-
150
- context "another adapter with the same :filename" do
151
- let(:another_adapter) { Yell::Adapters::Datefile.new(:filename => filename) }
152
-
153
- before do
154
- adapter.write(event)
155
- end
156
-
157
- it "should not write the header again" do
158
- another_adapter.write(event)
159
-
160
- # 1: header
161
- # 2: adapter write
162
- # 3: another_adapter: write
163
- expect(File.readlines(today_filename).size).to eq(3)
164
- end
165
- end
166
-
167
- end
168
-
@@ -1,84 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yell::Adapters::File do
4
- let(:devnull) { File.new('/dev/null', 'w') }
5
-
6
- before do
7
- allow(File).to receive(:open) { devnull }
8
- end
9
-
10
- it { should be_kind_of(Yell::Adapters::Io) }
11
-
12
- context "#stream" do
13
- subject { Yell::Adapters::File.new.send(:stream) }
14
-
15
- it { should be_kind_of(File) }
16
- end
17
-
18
- context "#write" do
19
- let(:logger) { Yell::Logger.new }
20
- let(:event) { Yell::Event.new(logger, 1, "Hello World") }
21
-
22
- context "default filename" do
23
- let(:filename) { File.expand_path "#{Yell.env}.log" }
24
- let(:adapter) { Yell::Adapters::File.new }
25
-
26
- it "should print to file" do
27
- expect(File).to(
28
- receive(:open).
29
- with(filename, File::WRONLY|File::APPEND|File::CREAT) { devnull }
30
- )
31
-
32
- adapter.write(event)
33
- end
34
- end
35
-
36
- context "with given :filename" do
37
- let(:filename) { fixture_path + '/filename.log' }
38
- let(:adapter) { Yell::Adapters::File.new(:filename => filename) }
39
-
40
- it "should print to file" do
41
- expect(File).to(
42
- receive(:open).
43
- with(filename, File::WRONLY|File::APPEND|File::CREAT) { devnull }
44
- )
45
-
46
- adapter.write(event)
47
- end
48
- end
49
-
50
- context "with given :pathname" do
51
- let(:pathname) { Pathname.new(fixture_path).join('filename.log') }
52
- let(:adapter) { Yell::Adapters::File.new( :filename => pathname ) }
53
-
54
- it "should accept pathanme as filename" do
55
- expect(File).to(
56
- receive(:open).
57
- with(pathname.to_s, File::WRONLY|File::APPEND|File::CREAT) { devnull }
58
- )
59
-
60
- adapter.write(event)
61
- end
62
- end
63
-
64
- context "#sync" do
65
- let(:adapter) { Yell::Adapters::File.new }
66
-
67
- it "should sync by default" do
68
- expect(devnull).to receive(:sync=).with(true)
69
-
70
- adapter.write(event)
71
- end
72
-
73
- it "pass the option to File" do
74
- adapter.sync = false
75
-
76
- expect(devnull).to receive(:sync=).with(false)
77
-
78
- adapter.write(event)
79
- end
80
- end
81
- end
82
-
83
- end
84
-
@@ -1,71 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yell::Adapters::Io do
4
- it { should be_kind_of Yell::Adapters::Base }
5
-
6
- context "initialize" do
7
- it "should set default :format" do
8
- adapter = Yell::Adapters::Io.new
9
-
10
- expect(adapter.format).to be_kind_of(Yell::Formatter)
11
- end
12
-
13
- context ":level" do
14
- let(:level) { Yell::Level.new(:warn) }
15
-
16
- it "should set the level" do
17
- adapter = Yell::Adapters::Io.new(:level => level)
18
-
19
- expect(adapter.level).to eq(level)
20
- end
21
-
22
- it "should set the level when block was given" do
23
- adapter = Yell::Adapters::Io.new { |a| a.level = level }
24
-
25
- expect(adapter.level).to eq(level)
26
- end
27
- end
28
-
29
- context ":format" do
30
- let(:format) { Yell::Formatter.new }
31
-
32
- it "should set the level" do
33
- adapter = Yell::Adapters::Io.new(:format => format)
34
-
35
- expect(adapter.format).to eq(format)
36
- end
37
-
38
- it "should set the level when block was given" do
39
- adapter = Yell::Adapters::Io.new { |a| a.format = format }
40
-
41
- expect(adapter.format).to eq(format)
42
- end
43
- end
44
- end
45
-
46
- context "#write" do
47
- let(:logger) { Yell::Logger.new }
48
- let(:event) { Yell::Event.new(logger, 1, "Hello World") }
49
- let(:adapter) { Yell::Adapters::Io.new }
50
- let(:stream) { File.new('/dev/null', 'w') }
51
-
52
- before do
53
- allow(adapter).to receive(:stream) { stream }
54
- end
55
-
56
- it "should format the message" do
57
- expect(adapter.format).to(
58
- receive(:call).with(event).and_call_original
59
- )
60
-
61
- adapter.write(event)
62
- end
63
-
64
- it "should print formatted message to stream" do
65
- formatted = Yell::Formatter.new.call(event)
66
- expect(stream).to receive(:syswrite).with(formatted)
67
-
68
- adapter.write(event)
69
- end
70
- end
71
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yell::Adapters::Stdout do
4
-
5
- it { should be_kind_of(Yell::Adapters::Io) }
6
-
7
- context "#stream" do
8
- subject { Yell::Adapters::Stdout.new.send :stream }
9
-
10
- it { should be_kind_of(IO) }
11
- end
12
-
13
- end
14
-
15
- describe Yell::Adapters::Stderr do
16
-
17
- it { should be_kind_of(Yell::Adapters::Io) }
18
-
19
- context "#stream" do
20
- subject { Yell::Adapters::Stderr.new.send(:stream) }
21
-
22
- it { should be_kind_of(IO) }
23
- end
24
-
25
- end
26
-
@@ -1,43 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yell::Adapters do
4
-
5
- context ".new" do
6
- it "should accept an adapter instance" do
7
- stdout = Yell::Adapters::Stdout.new
8
- adapter = Yell::Adapters.new(stdout)
9
-
10
- expect(adapter).to eq(stdout)
11
- end
12
-
13
- it "should accept STDOUT" do
14
- expect(Yell::Adapters::Stdout).to receive(:new).with(anything)
15
-
16
- Yell::Adapters.new(STDOUT)
17
- end
18
-
19
- it "should accept STDERR" do
20
- expect(Yell::Adapters::Stderr).to receive(:new).with(anything)
21
-
22
- Yell::Adapters.new(STDERR)
23
- end
24
-
25
- it "should raise an unregistered adapter" do
26
- expect {
27
- Yell::Adapters.new(:unknown)
28
- }.to raise_error(Yell::AdapterNotFound)
29
- end
30
- end
31
-
32
- context ".register" do
33
- let(:type) { :test }
34
- let(:klass) { double }
35
-
36
- it "should allow to being called from :new" do
37
- Yell::Adapters.register(type, klass)
38
- expect(klass).to receive(:new).with(anything)
39
-
40
- Yell::Adapters.new(type)
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yell::Configuration do
4
-
5
- describe ".load!" do
6
- let(:file) { fixture_path + '/yell.yml' }
7
- let(:config) { Yell::Configuration.load!(file) }
8
-
9
- subject { config }
10
-
11
- it { should be_kind_of(Hash) }
12
- it { should have_key(:level) }
13
- it { should have_key(:adapters) }
14
-
15
- context ":level" do
16
- subject { config[:level] }
17
-
18
- it { should eq("info") }
19
- end
20
-
21
- context ":adapters" do
22
- subject { config[:adapters] }
23
-
24
- it { should be_kind_of(Array) }
25
-
26
- # stdout
27
- it { expect(subject.first).to eq(:stdout) }
28
-
29
- # stderr
30
- it { expect(subject.last).to be_kind_of(Hash) }
31
- it { expect(subject.last).to eq(:stderr => {:level => 'gte.error'}) }
32
- end
33
- end
34
-
35
- end
36
-