undercover 0.4.7 → 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: 208a99638c9f105ea5a9abde3de88efc756e4ca9f739246488b55a80a7118276
4
- data.tar.gz: c1a5926972f1404a0adbf570ef7b28678fb48ecbabe29f8b65469b09a2b4a25c
3
+ metadata.gz: ba2a988ce8b2ef9451615675538b268f4d663cb141288a646b2604785ea92dc6
4
+ data.tar.gz: 6822d32d0b2000e711194c0d595b2f69dcaa3020740db9613be8f6fceea1e4e9
5
5
  SHA512:
6
- metadata.gz: 69937cd20c436a78a403ba4b12eb52d727120771060de928617b81bcfa8c8010c2ef3af64ea0b986d9655b32934e70e33c9482b5d8b68b2149462c3933e143f7
7
- data.tar.gz: 9fe21bbb6cf9af2b45f51033eedb1fe75d744b6611c677c65c4052373251166ce54b870dc53f94b8b564aa7839963e3b038be3f36181a7a78c034583f209e9e8
6
+ metadata.gz: 8ada6a585eee4ff30f9a520dde96f0b3b74bd11ab05a9e7857b356da7c00519e81d36dda12ddd4c7afde81b23cb73bc1c88a35f2f559f1cf9a638c42eab48052
7
+ data.tar.gz: 6c846695987c6126e7db5c7c363e44756f57aaf34374157bd35c0e723469f705a625244e90818a39b07e5626df8b34f248796405f95a5c9ed884e4760af304f3
@@ -5,7 +5,7 @@ jobs:
5
5
  runs-on: ubuntu-latest
6
6
  strategy:
7
7
  matrix:
8
- ruby: ['3.2', '3.0', '2.7']
8
+ ruby: ['3.3', '3.0']
9
9
  steps:
10
10
  - uses: actions/checkout@v3
11
11
  with:
@@ -16,8 +16,7 @@ jobs:
16
16
  ruby-version: ${{ matrix.ruby }}
17
17
  - name: Build and test with Rake
18
18
  run: |
19
- gem install bundler -v 2.4.22
20
- gem install undercover --no-doc
19
+ gem install bundler undercover --no-doc
21
20
  bundle install --jobs 4 --retry 3
22
21
  bundle exec rake
23
22
  - name: undercover (local)
data/.rubocop.yml CHANGED
@@ -1,8 +1,9 @@
1
1
  AllCops:
2
2
  NewCops: enable
3
- TargetRubyVersion: 2.7.0
3
+ TargetRubyVersion: 3.0
4
4
  Exclude:
5
5
  - spec/fixtures/**/*
6
+ SuggestExtensions: false
6
7
 
7
8
  Style/RegexpLiteral:
8
9
  EnforcedStyle: slashes
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.3.0
data/CHANGELOG.md CHANGED
@@ -6,7 +6,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- # [0.4.7] - 2022-07-28
9
+ # [0.5.0] - 2024-01-09
10
+ ### Changed
11
+ - Drop ruby 2.x support, require ruby 3.x in gemspec
12
+ - Dev dependency updates
13
+
14
+ # [0.4.7] - 2024-01-08
10
15
  ### Fixed
11
16
  - [Update of one-line block is ignored](https://github.com/grodowski/undercover/pull/207) by [@lizhangyuh](https://github.com/lizhangyuh)
12
17
 
@@ -123,7 +128,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
123
128
  ### Added
124
129
  - First release of `undercover` 🎉
125
130
 
126
- [Unreleased]: https://github.com/grodowski/undercover/compare/v0.4.7...HEAD
131
+ [Unreleased]: https://github.com/grodowski/undercover/compare/v0.5.0...HEAD
132
+ [0.5.0]: https://github.com/grodowski/undercover/compare/v0.4.7...v0.5.0
127
133
  [0.4.7]: https://github.com/grodowski/undercover/compare/v0.4.6...v0.4.7
128
134
  [0.4.6]: https://github.com/grodowski/undercover/compare/v0.4.5...v0.4.6
129
135
  [0.4.5]: https://github.com/grodowski/undercover/compare/v0.4.4...v0.4.5
data/Gemfile CHANGED
@@ -3,3 +3,14 @@
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
+
7
+ gem 'base64'
8
+ gem 'bundler'
9
+ gem 'pry'
10
+ gem 'rake', '~> 13.0'
11
+ gem 'rspec', '~> 3.0'
12
+ gem 'rubocop'
13
+ gem 'simplecov'
14
+ gem 'simplecov-html'
15
+ gem 'simplecov-lcov', '~> 0.8'
16
+ gem 'timecop'
@@ -56,10 +56,10 @@ module Undercover
56
56
  end
57
57
 
58
58
  # TODO: refactor to a standalone validator (depending on changeset AND lcov)
59
- # TODO: add specs
60
59
  def validate(lcov_report_path)
61
60
  return :no_changes if files.empty?
62
- return :stale_coverage if last_modified > File.mtime(lcov_report_path)
61
+
62
+ :stale_coverage if last_modified > File.mtime(lcov_report_path)
63
63
  end
64
64
 
65
65
  private
@@ -17,21 +17,21 @@ module Undercover
17
17
  def formatted_warnings
18
18
  @results.map.with_index(1) do |res, idx|
19
19
  "🚨 #{idx}) node `#{res.node.name}` type: #{res.node.human_name},\n" +
20
- (' ' * pad_size) + "loc: #{res.file_path_with_lines}," \
21
- " coverage: #{res.coverage_f * 100}%\n" +
20
+ (' ' * pad_size) + "loc: #{res.file_path_with_lines}, " \
21
+ "coverage: #{res.coverage_f * 100}%\n" +
22
22
  res.pretty_print
23
23
  end
24
24
  end
25
25
 
26
26
  def success
27
- "#{Rainbow('undercover').bold.green}: ✅ No coverage" \
28
- ' is missing in latest changes'
27
+ "#{Rainbow('undercover').bold.green}: ✅ No coverage " \
28
+ 'is missing in latest changes'
29
29
  end
30
30
 
31
31
  def warnings_header
32
32
  "#{Rainbow('undercover').bold.red}: " \
33
- '👮‍♂️ some methods have no test coverage! Please add specs for' \
34
- ' methods listed below'
33
+ '👮‍♂️ some methods have no test coverage! Please add specs for ' \
34
+ 'methods listed below'
35
35
  end
36
36
 
37
37
  def pad_size
@@ -54,7 +54,7 @@ module Undercover
54
54
  lines[ln] = 0
55
55
  end
56
56
  end
57
- return 1.0 if lines.keys.size.zero?
57
+ return 1.0 if lines.keys.empty?
58
58
 
59
59
  (lines.values.sum.to_f / lines.keys.size).round(4)
60
60
  end
@@ -84,7 +84,7 @@ module Undercover
84
84
  pad = node.last_line.to_s.length
85
85
  pretty_print_lines.map do |covered, (num, line)|
86
86
  formatted_line = "#{num.to_s.rjust(pad)}: #{line}"
87
- if line.strip.length.zero?
87
+ if line.strip.empty?
88
88
  Rainbow(formatted_line).darkgray.dark
89
89
  elsif covered.nil?
90
90
  Rainbow(formatted_line).darkgray.dark + \
@@ -107,8 +107,8 @@ module Undercover
107
107
  end
108
108
 
109
109
  def inspect
110
- "#<Undercover::Report::Result:#{object_id}" \
111
- " name: #{node.name}, coverage: #{coverage_f}>"
110
+ "#<Undercover::Report::Result:#{object_id} " \
111
+ "name: #{node.name}, coverage: #{coverage_f}>"
112
112
  end
113
113
  alias to_s inspect
114
114
 
@@ -119,7 +119,7 @@ module Undercover
119
119
  branches = coverage.select { |cov| cov.size == 4 && cov[0] == line_number }
120
120
  count_covered = branches.count { |cov| cov[3].positive? }
121
121
 
122
- return '' if branches.size.zero?
122
+ return '' if branches.empty?
123
123
 
124
124
  if count_covered < branches.size
125
125
  Rainbow(' branches: ').italic.darkgray.dark + \
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Undercover
4
- VERSION = '0.4.7'
4
+ VERSION = '0.5.0'
5
5
  end
data/undercover.gemspec CHANGED
@@ -4,15 +4,14 @@ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'undercover/version'
6
6
 
7
- # rubocop:disable Metrics/BlockLength
8
7
  Gem::Specification.new do |spec|
9
8
  spec.name = 'undercover'
10
9
  spec.version = Undercover::VERSION
11
10
  spec.authors = ['Jan Grodowski']
12
11
  spec.email = ['jgrodowski@gmail.com']
13
12
 
14
- spec.summary = 'Actionable code coverage - detects untested' \
15
- ' code blocks in recent changes'
13
+ spec.summary = 'Actionable code coverage - detects untested ' \
14
+ 'code blocks in recent changes'
16
15
  spec.homepage = 'https://github.com/grodowski/undercover'
17
16
  spec.license = 'MIT'
18
17
  spec.metadata = {
@@ -26,20 +25,10 @@ Gem::Specification.new do |spec|
26
25
  spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
27
26
  spec.require_paths = ['lib']
28
27
 
29
- spec.required_ruby_version = '>= 2.7.0'
28
+ spec.required_ruby_version = '>= 3.0.0'
30
29
 
30
+ spec.add_dependency 'bigdecimal'
31
31
  spec.add_dependency 'imagen', '>= 0.1.8'
32
32
  spec.add_dependency 'rainbow', '>= 2.1', '< 4.0'
33
- spec.add_dependency 'rugged', '>= 0.27', '< 1.7'
34
-
35
- spec.add_development_dependency 'bundler'
36
- spec.add_development_dependency 'pry'
37
- spec.add_development_dependency 'rake', '~> 13.0'
38
- spec.add_development_dependency 'rspec', '~> 3.0'
39
- spec.add_development_dependency 'rubocop', '~> 1.28.2'
40
- spec.add_development_dependency 'simplecov'
41
- spec.add_development_dependency 'simplecov-html'
42
- spec.add_development_dependency 'simplecov-lcov', '~> 0.8'
43
- spec.add_development_dependency 'timecop'
33
+ spec.add_dependency 'rugged', '>= 0.27', '< 1.8'
44
34
  end
45
- # rubocop:enable Metrics/BlockLength
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: undercover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Grodowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-08 00:00:00.000000000 Z
11
+ date: 2024-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bigdecimal
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: imagen
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +67,7 @@ dependencies:
53
67
  version: '0.27'
54
68
  - - "<"
55
69
  - !ruby/object:Gem::Version
56
- version: '1.7'
70
+ version: '1.8'
57
71
  type: :runtime
58
72
  prerelease: false
59
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,133 +77,7 @@ dependencies:
63
77
  version: '0.27'
64
78
  - - "<"
65
79
  - !ruby/object:Gem::Version
66
- version: '1.7'
67
- - !ruby/object:Gem::Dependency
68
- name: bundler
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: '0'
74
- type: :development
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: '0'
81
- - !ruby/object:Gem::Dependency
82
- name: pry
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- version: '0'
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- - !ruby/object:Gem::Dependency
96
- name: rake
97
- requirement: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '13.0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '13.0'
109
- - !ruby/object:Gem::Dependency
110
- name: rspec
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '3.0'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '3.0'
123
- - !ruby/object:Gem::Dependency
124
- name: rubocop
125
- requirement: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: 1.28.2
130
- type: :development
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: 1.28.2
137
- - !ruby/object:Gem::Dependency
138
- name: simplecov
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: '0'
144
- type: :development
145
- prerelease: false
146
- version_requirements: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- version: '0'
151
- - !ruby/object:Gem::Dependency
152
- name: simplecov-html
153
- requirement: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
157
- version: '0'
158
- type: :development
159
- prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- version: '0'
165
- - !ruby/object:Gem::Dependency
166
- name: simplecov-lcov
167
- requirement: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - "~>"
170
- - !ruby/object:Gem::Version
171
- version: '0.8'
172
- type: :development
173
- prerelease: false
174
- version_requirements: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - "~>"
177
- - !ruby/object:Gem::Version
178
- version: '0.8'
179
- - !ruby/object:Gem::Dependency
180
- name: timecop
181
- requirement: !ruby/object:Gem::Requirement
182
- requirements:
183
- - - ">="
184
- - !ruby/object:Gem::Version
185
- version: '0'
186
- type: :development
187
- prerelease: false
188
- version_requirements: !ruby/object:Gem::Requirement
189
- requirements:
190
- - - ">="
191
- - !ruby/object:Gem::Version
192
- version: '0'
80
+ version: '1.8'
193
81
  description:
194
82
  email:
195
83
  - jgrodowski@gmail.com
@@ -205,6 +93,7 @@ files:
205
93
  - ".overcommit.yml"
206
94
  - ".rspec"
207
95
  - ".rubocop.yml"
96
+ - ".tool-versions"
208
97
  - CHANGELOG.md
209
98
  - Gemfile
210
99
  - LICENSE.txt
@@ -240,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
240
129
  requirements:
241
130
  - - ">="
242
131
  - !ruby/object:Gem::Version
243
- version: 2.7.0
132
+ version: 3.0.0
244
133
  required_rubygems_version: !ruby/object:Gem::Requirement
245
134
  requirements:
246
135
  - - ">="