loog 0.3.1 → 0.5.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
  SHA256:
3
- metadata.gz: a2662abfce60be64b01efbd3ed10c270b3c428acd81c0836e78404d0117a4fa7
4
- data.tar.gz: be86fa2d1456d366135e778f8c8da1d67ef1690b0625fa5a7656e28cac13e757
3
+ metadata.gz: cea04c3238de13e46a75055d845151bc907c33e7f50c34a48574f66f7cf27f07
4
+ data.tar.gz: f6024f8ed1224ae10c09e280d9948ab5a0a1d04e92ac58aed1f198b4beb934a7
5
5
  SHA512:
6
- metadata.gz: 35804d417e1054e73f031ce1f3a2cad69d5765b8fdace16f8812b2f1dc61efd371eb59a090e3d4b274efed7e7544d9e688b1171702c5226ce26665cb23c34de5
7
- data.tar.gz: 46c6b5bc84b603a64a62e6506de8bbbcefb52f264a9b1962b1d20b92cca78c219b5d806051d3daae2bbb2243e4577188467362c0f5cff5069cee8b9b1ebe1544
6
+ metadata.gz: 3bf3a37ccbcaa2f9569622329dbd1134851571151fb56701a1f5bd151deec3e514f2120a39f43892b629450b4a5fb7574dcd87526d0ff65d5bc093c3524b5da5
7
+ data.tar.gz: 8994f5542b0a63ed5f7526e47884e30163df2f081a7c0524cb746294af7c2f5d68b16d4befe55ab88fd5144e60d86329522424a8567c17682e33ab280fbf14a7
@@ -13,7 +13,7 @@ jobs:
13
13
  strategy:
14
14
  matrix:
15
15
  os: [ubuntu-20.04]
16
- ruby: [2.6]
16
+ ruby: [2.7, 3.0]
17
17
  runs-on: ${{ matrix.os }}
18
18
  steps:
19
19
  - uses: actions/checkout@v3
data/.rultor.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  docker:
2
- image: yegor256/rultor-image:1.9.1
2
+ image: yegor256/rultor-image:1.21.0
3
3
  assets:
4
4
  rubygems.yml: yegor256/home#assets/rubygems.yml
5
5
  install: |
data/Gemfile CHANGED
@@ -22,3 +22,10 @@
22
22
 
23
23
  source 'https://rubygems.org'
24
24
  gemspec
25
+
26
+ gem 'minitest', '5.19.0', require: false
27
+ gem 'rake', '13.0.6', require: false
28
+ gem 'rdoc', '6.5.0', require: false
29
+ gem 'rubocop', '1.54.2', require: false
30
+ gem 'rubocop-rspec', '2.22.0', require: false
31
+ gem 'simplecov', '0.22.0', require: false
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  <img src="/logo.svg" width="64px" height="64px"/>
2
2
 
3
- [![Managed by Zerocracy](https://www.0crat.com/badge/C3RFVLU72.svg)](https://www.0crat.com/p/C3RFVLU72)
4
3
  [![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org)
5
4
  [![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/loog)](http://www.rultor.com/p/yegor256/loog)
6
5
  [![We recommend RubyMine](https://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)
@@ -32,7 +31,9 @@ The gem is basically a provider of a few pre-configured loggers, which
32
31
  you can use for production (`Loog::REGULAR`) or for testing (`Loog::VERBOSE`).
33
32
  You can also shut it up with `Loog::NULL`.
34
33
 
35
- That's it.
34
+ There is also `Logger::Buffer` class that you can use for testing.
35
+ It accumulates all log calls and then returns the entire output
36
+ through the `to_s()` method.
36
37
 
37
38
  ## How to contribute
38
39
 
data/lib/loog.rb CHANGED
@@ -46,7 +46,7 @@ module Loog
46
46
  when 'DEBUG'
47
47
  prefix = 'D: '
48
48
  end
49
- "#{prefix}#{msg.to_s.rstrip.gsub(/\n/, "\n#{' ' * prefix.length}")}\n"
49
+ "#{prefix}#{msg.to_s.rstrip.gsub("\n", "\n#{' ' * prefix.length}")}\n"
50
50
  end
51
51
 
52
52
  # Short formatter
@@ -86,4 +86,26 @@ module Loog
86
86
  ERRORS.level = Logger::ERROR
87
87
  ERRORS.formatter = COMPACT
88
88
  ERRORS.freeze
89
+
90
+ # Accumulator of everything. This class may be used
91
+ # for testing, when it's necessary to accumulate all log
92
+ # messages in one place and then "assert" the presence
93
+ # of certain strings inside them.
94
+ class Buffer < Logger
95
+ def initialize(formatter: Loog::SHORT)
96
+ super(
97
+ $stdout,
98
+ level: Logger::DEBUG,
99
+ formatter: proc do |severity, time, target, msg|
100
+ @lines.push(formatter.call(severity, time, target, msg))
101
+ ''
102
+ end
103
+ )
104
+ @lines = []
105
+ end
106
+
107
+ def to_s
108
+ @lines.join("\n")
109
+ end
110
+ end
89
111
  end
data/loog.gemspec CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
27
27
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
28
28
  s.required_ruby_version = '>=2.3'
29
29
  s.name = 'loog'
30
- s.version = '0.3.1'
30
+ s.version = '0.5.0'
31
31
  s.license = 'MIT'
32
32
  s.summary = 'Object-oriented logging wrapper'
33
33
  s.description = 'Object-oriented wrapper for Ruby default logging facility'
@@ -37,11 +37,5 @@ Gem::Specification.new do |s|
37
37
  s.files = `git ls-files`.split($RS)
38
38
  s.rdoc_options = ['--charset=UTF-8']
39
39
  s.extra_rdoc_files = ['README.md']
40
- s.add_development_dependency 'codecov', '0.6.0'
41
- s.add_development_dependency 'minitest', '5.18.0'
42
- s.add_development_dependency 'rake', '13.0.6'
43
- s.add_development_dependency 'rdoc', '6.5.0'
44
- s.add_development_dependency 'rubocop', '1.48.1'
45
- s.add_development_dependency 'rubocop-rspec', '2.19.0'
46
40
  s.metadata['rubygems_mfa_required'] = 'true'
47
41
  end
data/test/test__helper.rb CHANGED
@@ -24,7 +24,3 @@ $stdout.sync = true
24
24
 
25
25
  require 'simplecov'
26
26
  SimpleCov.start
27
- if ENV['CI'] == 'true'
28
- require 'codecov'
29
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
30
- end
data/test/test_loog.rb CHANGED
@@ -37,4 +37,19 @@ class LoogTest < Minitest::Test
37
37
  def test_null_logging
38
38
  Loog::NULL.info('Should not be visible')
39
39
  end
40
+
41
+ def test_buffering
42
+ b = Loog::Buffer.new(formatter: Loog::FULL)
43
+ b.debug('Hello, world!')
44
+ stdout = b.to_s
45
+ assert(stdout.include?('Hello'))
46
+ assert(stdout.include?('DEBUG'))
47
+ end
48
+
49
+ def test_quiet_buffering
50
+ b = Loog::Buffer.new
51
+ msg = 'Hey, друг!'
52
+ b.info(msg)
53
+ assert_equal(b.to_s, "#{msg}\n")
54
+ end
40
55
  end
metadata CHANGED
@@ -1,99 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-22 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: codecov
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '='
18
- - !ruby/object:Gem::Version
19
- version: 0.6.0
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 0.6.0
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 5.18.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 5.18.0
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 13.0.6
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 13.0.6
55
- - !ruby/object:Gem::Dependency
56
- name: rdoc
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 6.5.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 6.5.0
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 1.48.1
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 1.48.1
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop-rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 2.19.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 2.19.0
11
+ date: 2023-07-28 00:00:00.000000000 Z
12
+ dependencies: []
97
13
  description: Object-oriented wrapper for Ruby default logging facility
98
14
  email: yegor256@gmail.com
99
15
  executables: []
@@ -147,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
63
  - !ruby/object:Gem::Version
148
64
  version: '0'
149
65
  requirements: []
150
- rubygems_version: 3.1.2
66
+ rubygems_version: 3.2.15
151
67
  signing_key:
152
68
  specification_version: 4
153
69
  summary: Object-oriented logging wrapper