loga 1.4.0 → 2.0.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.
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Loga::ServiceVersionStrategies do
4
+ describe '#call' do
5
+ context 'when GIT is available' do
6
+ before do
7
+ allow(described_class::SCM_GIT).to receive(:call).and_return("2776b9c\n")
8
+ end
9
+
10
+ it 'returns the git sha' do
11
+ expect(subject.call).to eql('2776b9c')
12
+ end
13
+ end
14
+
15
+ context 'when REVISION file is available' do
16
+ before do
17
+ allow(described_class::SCM_GIT).to receive(:call).and_return(nil)
18
+ allow(File).to receive(:read).with('REVISION').and_return("2776b9c\n")
19
+ end
20
+
21
+ it 'returns the file content' do
22
+ expect(subject.call).to eql('2776b9c')
23
+ end
24
+ end
25
+
26
+ context 'when both GIT and REVISION file are unavailable' do
27
+ before do
28
+ allow(described_class::SCM_GIT).to receive(:call).and_return(nil)
29
+ allow(described_class::REVISION_FILE).to receive(:call).and_return(nil)
30
+ end
31
+
32
+ it 'returns a default value' do
33
+ expect(subject.call).to eql('unknown.sha')
34
+ end
35
+ end
36
+ end
37
+ end
@@ -3,39 +3,76 @@ require 'spec_helper'
3
3
  describe Loga do
4
4
  before { described_class.reset }
5
5
 
6
- describe '.configuration' do
7
- specify { expect(subject.configuration).to be_instance_of(Loga::Configuration) }
8
-
9
- it 'memoizes the result' do
10
- expect(subject.configuration).to equal(subject.configuration)
11
- end
6
+ let(:config_missing_class) { described_class::ConfigurationError }
7
+ let(:config_missing_msg) do
8
+ 'Loga has not been configured. Configure with Loga.configure(options)'
12
9
  end
10
+ let(:options) { { service_name: 'hello_world_app' } }
11
+ let(:framework_options) { { format: 'gelf' } }
13
12
 
14
13
  describe '.configure' do
15
14
  it 'configures Loga' do
16
- expect { |b| subject.configure(&b) }.to yield_with_args(subject.configuration)
15
+ expect(Loga::Configuration).to receive(:new).with(options, {}).and_call_original
16
+ subject.configure(options)
17
+ end
18
+
19
+ context 'when framework options provided' do
20
+ it 'configures Loga' do
21
+ expect(Loga::Configuration)
22
+ .to receive(:new).with(options, framework_options).and_call_original
23
+ subject.configure(options, framework_options)
24
+ end
25
+ end
26
+
27
+ context 'when configure twice' do
28
+ before { subject.configure(options) }
29
+
30
+ it 'raises an error' do
31
+ expect { subject.configure(options) }
32
+ .to raise_error(config_missing_class, 'Loga has already been configured')
33
+ end
17
34
  end
18
35
  end
19
36
 
20
- describe '.initialize!' do
21
- it 'initializes Loga' do
22
- expect { subject.initialize! }.to_not raise_error
37
+ describe '.configuration' do
38
+ context 'when Loga is not configured' do
39
+ it 'raises an error' do
40
+ expect { subject.configuration }
41
+ .to raise_error(config_missing_class, config_missing_msg)
42
+ end
43
+ end
44
+
45
+ context 'when Loga is configured' do
46
+ before { subject.configure(options) }
47
+
48
+ it 'returns the configuration' do
49
+ expect(subject.configuration.service_name).to eql(options[:service_name])
50
+ end
23
51
  end
24
52
  end
25
53
 
26
54
  describe '.logger' do
27
- context 'when Loga is not initialized' do
28
- specify { expect(subject.logger).to be_nil }
55
+ context 'when Loga is not configured' do
56
+ it 'raises an error' do
57
+ expect { subject.logger }
58
+ .to raise_error(config_missing_class, config_missing_msg)
59
+ end
29
60
  end
30
- context 'when Loga is initialized' do
31
- before { Loga.initialize! }
61
+
62
+ context 'when Loga is configured' do
63
+ before { subject.configure(options) }
32
64
  specify { expect(subject.logger).to be_kind_of(Logger) }
33
65
  end
34
66
  end
35
67
 
36
68
  describe '.reset' do
69
+ before { subject.configure(options) }
70
+
37
71
  it 'resets the configuration' do
38
- expect { subject.reset }.to change { subject.configuration.object_id }
72
+ expect do
73
+ subject.reset
74
+ subject.configure(options)
75
+ end.to change { subject.configuration.object_id }
39
76
  end
40
77
  end
41
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loga
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Funding Circle
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 3.0.0
117
+ version: 3.5.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 3.0.0
124
+ version: 3.5.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +150,48 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: guard
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.13'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '2.13'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard-rubocop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.2'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.2'
181
+ - !ruby/object:Gem::Dependency
182
+ name: guard-rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 4.7.3
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 4.7.3
153
195
  description: Log aggregation through unified logging middleware, while respecting
154
196
  the original log format.
155
197
  email:
@@ -161,9 +203,11 @@ files:
161
203
  - ".gitignore"
162
204
  - ".rspec"
163
205
  - ".rubocop.yml"
164
- - ".rubocop_todo.yml"
165
206
  - Appraisals
207
+ - CHANGELOG.md
166
208
  - Gemfile
209
+ - Guardfile
210
+ - LICENSE.txt
167
211
  - README.md
168
212
  - Rakefile
169
213
  - circle.yml
@@ -184,7 +228,7 @@ files:
184
228
  - lib/loga/rack/request.rb
185
229
  - lib/loga/rack/request_id.rb
186
230
  - lib/loga/railtie.rb
187
- - lib/loga/revision_strategy.rb
231
+ - lib/loga/service_version_strategies.rb
188
232
  - lib/loga/tagged_logging.rb
189
233
  - lib/loga/utilities.rb
190
234
  - lib/loga/version.rb
@@ -297,11 +341,12 @@ files:
297
341
  - spec/unit/loga/parameter_filter_spec.rb
298
342
  - spec/unit/loga/rack/logger_spec.rb
299
343
  - spec/unit/loga/rack/request_spec.rb
300
- - spec/unit/loga/revision_strategy_spec.rb
344
+ - spec/unit/loga/service_version_strategies_spec.rb
301
345
  - spec/unit/loga/utilities_spec.rb
302
346
  - spec/unit/loga_spec.rb
303
347
  homepage: https://github.com/FundingCircle/loga
304
- licenses: []
348
+ licenses:
349
+ - BSD-3-Clause
305
350
  metadata: {}
306
351
  post_install_message:
307
352
  rdoc_options: []
@@ -432,7 +477,7 @@ test_files:
432
477
  - spec/unit/loga/parameter_filter_spec.rb
433
478
  - spec/unit/loga/rack/logger_spec.rb
434
479
  - spec/unit/loga/rack/request_spec.rb
435
- - spec/unit/loga/revision_strategy_spec.rb
480
+ - spec/unit/loga/service_version_strategies_spec.rb
436
481
  - spec/unit/loga/utilities_spec.rb
437
482
  - spec/unit/loga_spec.rb
438
483
  has_rdoc:
@@ -1,33 +0,0 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-06-18 23:19:09 +0100 using RuboCop version 0.30.1.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
7
-
8
- # Offense count: 2
9
- Lint/HandleExceptions:
10
- Enabled: false
11
-
12
- # Offense count: 2
13
- Lint/RescueException:
14
- Enabled: false
15
-
16
- # Offense count: 4
17
- Metrics/AbcSize:
18
- Max: 29
19
-
20
- # Offense count: 16
21
- # Configuration parameters: AllowURI, URISchemes.
22
- Metrics/LineLength:
23
- Max: 93
24
-
25
- # Offense count: 8
26
- # Configuration parameters: CountComments.
27
- Metrics/MethodLength:
28
- Max: 22
29
-
30
- # Offense count: 14
31
- Style/Documentation:
32
- Enabled: false
33
-
@@ -1,32 +0,0 @@
1
- # rubocop:disable Style/SpecialGlobalVars
2
- require 'active_support/core_ext/object/blank'
3
-
4
- module Loga
5
- class RevisionStrategy
6
- DEFAULT_REVISION = 'unknown.sha'.freeze
7
-
8
- class << self
9
- def call(service_version = :git)
10
- if service_version == :git
11
- fetch_from_git || read_from_file || DEFAULT_REVISION
12
- elsif service_version.blank?
13
- DEFAULT_REVISION
14
- else
15
- service_version.strip
16
- end
17
- end
18
-
19
- def fetch_from_git
20
- sha1_hash = `git rev-parse --short HEAD`
21
- $?.exitstatus == 0 ? sha1_hash.strip : false
22
- end
23
-
24
- def read_from_file
25
- File.read('REVISION').strip
26
- rescue Errno::ENOENT
27
- false
28
- end
29
- end
30
- end
31
- end
32
- # rubocop:enable Style/SpecialGlobalVars
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Loga::RevisionStrategy do
4
- describe '.call' do
5
- it 'uses :git as default argument' do
6
- expect(Loga::RevisionStrategy.call).to match(/\h+/)
7
- end
8
-
9
- it "returns 'unknown.sha' when argument is empty string" do
10
- expect(Loga::RevisionStrategy.call('')).to eq('unknown.sha')
11
- end
12
-
13
- context 'called with :git argument' do
14
- it 'fetches the service version from git' do
15
- expect(Loga::RevisionStrategy.call(:git)).to match(/\h+/)
16
- end
17
-
18
- it 'reads the REVISION file when no git repo' do
19
- allow(Loga::RevisionStrategy).to receive(:fetch_from_git) { false }
20
- expect(File).to receive(:read).with('REVISION').and_return('sha1_hash')
21
- expect(Loga::RevisionStrategy.call(:git)).to eq('sha1_hash')
22
- end
23
-
24
- it "returns 'unknown.sha' otherwise" do
25
- allow(Loga::RevisionStrategy).to receive(:fetch_from_git) { false }
26
- allow(Loga::RevisionStrategy).to receive(:read_from_file) { false }
27
- expect(Loga::RevisionStrategy.call(:git)).to eq('unknown.sha')
28
- end
29
- end
30
-
31
- context 'called with anything else' do
32
- it 'returns the argument called with' do
33
- expect(Loga::RevisionStrategy.call('foobar')).to eq('foobar')
34
- end
35
-
36
- it 'strips any leading and trailing whitespace' do
37
- expect(Loga::RevisionStrategy.call("\t foobar\r\n ")).to eq('foobar')
38
- end
39
- end
40
- end
41
- end