yell 2.2.0 → 2.2.1

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.
@@ -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
-