pronto-undercover 0.2.0 → 0.4.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: 548420a442b234b3b1f27d2487bf4737d831f1bd190ec611d523921acaec03d3
4
- data.tar.gz: ba2c46649307c3cbec11a1ce01e2609231593796ad5d97b299ffd58a684ffbc4
3
+ metadata.gz: 106ca0f66d48253f7f4a3fc13996c652c1e1fa5047eae367dff4b29c1ddd7146
4
+ data.tar.gz: 39bb9eeece218c6cf88b5583a6a87063dc437d8b4c05921bda364991cfa32e08
5
5
  SHA512:
6
- metadata.gz: d1de1b50badeef015e2dedeb979a2967945e4c6affb7d4324dfaa65d767d0508305eb59ad094ba3e4561b67dcc9efd931f0fcd4a02d537000b2deac0897d4e15
7
- data.tar.gz: 4e6f1cedd2e5de4c7e316a69e2f06bdcf5b1f513bcf9e7cede2873a632c3d245d1c16dc538909ced697e66df1834dda1ef36aaa7ff066b7477f995651c211186
6
+ metadata.gz: 15d2def61ba5f92fb2fcd0e901933f809c6f088b2789e2e235375e23dcba8a079f4850f024c330c60e2fcf0cb1e36ed65975920c40d13c59ef59c6a5bf571a58
7
+ data.tar.gz: ee5412b17eef77b424e93dc8a75c49bfc7c8b4eb3c73968b59e4d613614e8f88802d79290ba86953177aff92476d3436e1ba75bac037cfd2c788c700853fead1
@@ -0,0 +1,21 @@
1
+ name: Ruby
2
+ on: [push, pull_request]
3
+ jobs:
4
+ build:
5
+ runs-on: ubuntu-latest
6
+ strategy:
7
+ matrix:
8
+ ruby: ['3.4', '3.0']
9
+ steps:
10
+ - uses: actions/checkout@v1
11
+ - name: Set up Ruby ${{ matrix.ruby }}
12
+ uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: ${{ matrix.ruby }}
15
+ - name: Build and test with Rake
16
+ run: |
17
+ gem install bundler undercover --no-doc
18
+ bundle install --jobs 4 --retry 3
19
+ bundle exec rake
20
+ git fetch origin master:master
21
+ undercover --compare master
data/.gitignore CHANGED
@@ -12,6 +12,7 @@ Gemfile.lock
12
12
  # rspec failure tracking
13
13
  .rspec_status
14
14
 
15
+ .tool-versions
15
16
  .rbenv-gemsets
16
17
  .ruby-version
17
18
  .ruby-gemset
data/.rubocop.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.5
3
3
  NewCops: enable
4
+ SuggestExtensions: false
4
5
 
5
6
  Style/RegexpLiteral:
6
7
  EnforcedStyle: slashes
@@ -13,7 +14,7 @@ Layout/SpaceInsideHashLiteralBraces:
13
14
  Enabled: true
14
15
  EnforcedStyle: no_space
15
16
 
16
- Metrics/LineLength:
17
+ Layout/LineLength:
17
18
  Enabled: True
18
19
  Max: 100
19
20
 
data/CHANGELOG.md CHANGED
@@ -6,9 +6,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.4.0] - 2025-11-15
10
+ ### Added
11
+ - Update `undercover` to `0.8.2`
12
+
13
+ ## [0.3.0] - 2025-07-13
14
+ ### Added
15
+ - Update `undercover` to `0.7.3`, support new options and JSON formatter
16
+
9
17
  ## [0.2.0] - 2021-10-19
10
18
  ### Added
11
- - Update `undercover` to `0.4.3`, now with coverage support (@korrs)
19
+ - Update `undercover` to `0.4.3`, now with branch coverage support (@korrs)
12
20
 
13
21
  ## [0.1.6] - 2020-02-06
14
22
  ### Changed
@@ -25,7 +33,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
25
33
  ### Changed
26
34
  - support `pronto >= 0.9`
27
35
 
28
- [Unreleased]: https://github.com/grodowski/pronto-undercover/compare/v0.2.0...HEAD
36
+ [Unreleased]: https://github.com/grodowski/pronto-undercover/compare/v0.4.0...HEAD
37
+ [0.4.0]: https://github.com/grodowski/pronto-undercover/compare/v0.3.0...v0.4.0
38
+ [0.3.0]: https://github.com/grodowski/pronto-undercover/compare/v0.2.0...v0.3.0
29
39
  [0.2.0]: https://github.com/grodowski/pronto-undercover/compare/v0.1.6...v0.2.0
30
40
  [0.1.6]: https://github.com/grodowski/pronto-undercover/compare/v0.1.5...v0.1.6
31
41
  [0.1.5]: https://github.com/grodowski/pronto-undercover/compare/v0.1.4...v0.1.5
data/Gemfile CHANGED
@@ -6,3 +6,13 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
7
  # Specify your gem's dependencies in pronto-undercover.gemspec
8
8
  gemspec
9
+
10
+ gem 'pry'
11
+ gem 'rake', '~> 13.0'
12
+ gem 'rspec', '~> 3.0'
13
+ gem 'rubocop'
14
+ gem 'ruby-lsp-rspec', require: false
15
+ gem 'simplecov'
16
+ gem 'simplecov-html'
17
+ gem 'simplecov-lcov'
18
+ gem 'timecop'
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- [![Build Status](https://travis-ci.org/grodowski/pronto-undercover.svg?branch=master)](https://travis-ci.org/grodowski/pronto-undercover)
1
+ [![Build Status](https://github.com/grodowski/pronto-undercover/actions/workflows/ruby.yml/badge.svg)](https://github.com/grodowski/pronto-undercover/actions)
2
+ ![Downloads](https://img.shields.io/gem/dt/pronto-undercover)
2
3
 
3
4
  # Pronto::Undercover
4
5
 
@@ -28,11 +29,17 @@ Available options:
28
29
 
29
30
  ```
30
31
  # .pronto.yml
32
+ runners:
33
+ # ...other runners
34
+ - undercover
31
35
  # ...other configuration
32
36
  pronto-undercover:
33
37
  path: path/to/project
38
+ simplecov: path/to/project/coverage.json
39
+ include-files: lib/**/*.rb,app/**/*.rb
40
+ exclude-files: db/*,spec/*
34
41
  lcov: path/to/project/coverage/report.lcov
35
- ruby-syntax: ruby19
42
+ ruby-syntax: ruby34
36
43
  ```
37
44
 
38
45
  ## License
data/Rakefile CHANGED
@@ -4,7 +4,10 @@ require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
5
  require 'rubocop/rake_task'
6
6
 
7
+ desc 'Run RuboCop'
7
8
  RuboCop::RakeTask.new(:rubocop)
9
+
10
+ desc 'Run Tests'
8
11
  RSpec::Core::RakeTask.new(:spec)
9
12
 
10
13
  task default: %i[rubocop spec]
@@ -29,6 +29,9 @@ module Pronto
29
29
 
30
30
  def each_changed_line
31
31
  @patches.each do |patch|
32
+ filepath = patch.delta.new_file[:path]
33
+ next if @filter_set && !@filter_set.include?(filepath)
34
+
32
35
  patch.added_lines.each do |line|
33
36
  yield patch.delta.new_file[:path].to_s, line.new_lineno
34
37
  end
@@ -37,7 +40,12 @@ module Pronto
37
40
 
38
41
  def validate(lcov_report_path)
39
42
  return :no_changes if file_paths.empty?
40
- return :stale_coverage if last_modified > File.mtime(lcov_report_path)
43
+
44
+ :stale_coverage if last_modified > File.mtime(lcov_report_path)
45
+ end
46
+
47
+ def filter_with(filter_set)
48
+ @filter_set = filter_set
41
49
  end
42
50
  end
43
51
  end
@@ -17,7 +17,7 @@ module Pronto
17
17
 
18
18
  # @return Array[Pronto::Message]
19
19
  def run
20
- return [] if !@patches || @patches.count.zero?
20
+ return [] if !@patches || @patches.none?
21
21
 
22
22
  @patches
23
23
  .select { |patch| valid_patch?(patch) }
@@ -43,9 +43,9 @@ module Pronto
43
43
  .map do |line|
44
44
  lines = untested_lines_for(warning)
45
45
  path = line.patch.delta.new_file[:path]
46
- msg = "#{warning.node.human_name} #{warning.node.name} missing tests" \
47
- " for line#{'s' if lines.size > 1} #{lines.join(', ')}" \
48
- " (coverage: #{warning.coverage_f})"
46
+ msg = "#{warning.node.human_name} #{warning.node.name} missing tests " \
47
+ "for line#{'s' if lines.size > 1} #{lines.join(', ')} " \
48
+ "(coverage: #{warning.coverage_f})"
49
49
  Message.new(path, line, DEFAULT_LEVEL, msg, nil, self.class)
50
50
  end
51
51
  end
@@ -54,10 +54,20 @@ module Pronto
54
54
 
55
55
  def undercover_warnings
56
56
  @undercover_warnings ||= ::Undercover::Report.new(
57
- @patch_changeset, undercover_options
57
+ @patch_changeset, undercover_options, coverage_adapter
58
58
  ).build.flagged_results
59
59
  end
60
60
 
61
+ def coverage_adapter
62
+ if undercover_options.simplecov_resultset
63
+ ::Undercover::SimplecovResultAdapter.parse(File.open(undercover_options.simplecov_resultset),
64
+ undercover_options)
65
+ else
66
+ # TODO: lcov will be deprecated end of 2025 and we'll be able to refactor harder
67
+ ::Undercover::LcovParser.parse(File.open(undercover_options.lcov), undercover_options)
68
+ end
69
+ end
70
+
61
71
  def offending_line_numbers(patch)
62
72
  patch_lines = patch.added_lines.map(&:new_lineno)
63
73
  path = patch.new_file_full_path.to_s
@@ -75,15 +85,23 @@ module Pronto
75
85
  end.compact
76
86
  end
77
87
 
88
+ OPTS_MAPPING = { # rubocop:disable Lint/UselessConstantScoping
89
+ 'exclude-files' => '-x',
90
+ 'include-files' => '-f',
91
+ 'max-warnings' => '-w',
92
+ 'simplecov' => '-s',
93
+ 'lcov' => '-l',
94
+ 'ruby-syntax' => '-r',
95
+ 'path' => '-p'
96
+ }.freeze
97
+
78
98
  def undercover_options
79
99
  config = Pronto::ConfigFile.new.to_h['pronto-undercover']
80
100
  return ::Undercover::Options.new.parse([]) unless config
81
101
 
82
102
  opts = []
83
- opts << "-l#{config['lcov']}" if config['lcov']
84
- opts << "-r#{config['ruby-syntax']}" if config['ruby-syntax']
85
- opts << "-p#{config['path']}" if config['path']
86
- ::Undercover::Options.new.parse(opts)
103
+ OPTS_MAPPING.each { |key, flag| opts << "#{flag}#{config[key]}" if config[key] }
104
+ @undercover_options ||= ::Undercover::Options.new.parse(opts)
87
105
  end
88
106
  end
89
107
  end
data/lib/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Pronto
4
4
  module UndercoverVersion
5
- VERSION = '0.2.0'
5
+ VERSION = '0.4.0'
6
6
  end
7
7
  end
@@ -20,14 +20,12 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
  spec.required_ruby_version = '>= 2.5'
22
22
 
23
- spec.add_dependency 'pronto', '>= 0.9', '< 0.12'
24
- spec.add_dependency 'undercover', '~> 0.4.3'
25
- spec.add_development_dependency 'pry'
26
- spec.add_development_dependency 'rake', '~> 13.0'
27
- spec.add_development_dependency 'rspec', '~> 3.0'
28
- spec.add_development_dependency 'rubocop'
29
- spec.add_development_dependency 'simplecov'
30
- spec.add_development_dependency 'simplecov-html'
31
- spec.add_development_dependency 'simplecov-lcov'
32
- spec.add_development_dependency 'timecop'
23
+ spec.add_dependency 'pronto', '>= 0.11', '< 0.12'
24
+ spec.add_dependency 'undercover', '~> 0.8'
25
+
26
+ spec.add_dependency 'base64'
27
+ spec.add_dependency 'bigdecimal'
28
+ spec.add_dependency 'csv'
29
+
30
+ spec.metadata['rubygems_mfa_required'] = 'true'
33
31
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pronto-undercover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Grodowski
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-10-19 00:00:00.000000000 Z
10
+ date: 2025-11-15 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pronto
@@ -16,7 +15,7 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '0.9'
18
+ version: '0.11'
20
19
  - - "<"
21
20
  - !ruby/object:Gem::Version
22
21
  version: '0.12'
@@ -26,7 +25,7 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- version: '0.9'
28
+ version: '0.11'
30
29
  - - "<"
31
30
  - !ruby/object:Gem::Version
32
31
  version: '0.12'
@@ -36,92 +35,22 @@ dependencies:
36
35
  requirements:
37
36
  - - "~>"
38
37
  - !ruby/object:Gem::Version
39
- version: 0.4.3
38
+ version: '0.8'
40
39
  type: :runtime
41
40
  prerelease: false
42
41
  version_requirements: !ruby/object:Gem::Requirement
43
42
  requirements:
44
43
  - - "~>"
45
44
  - !ruby/object:Gem::Version
46
- version: 0.4.3
45
+ version: '0.8'
47
46
  - !ruby/object:Gem::Dependency
48
- name: pry
47
+ name: base64
49
48
  requirement: !ruby/object:Gem::Requirement
50
49
  requirements:
51
50
  - - ">="
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: rake
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '13.0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '13.0'
75
- - !ruby/object:Gem::Dependency
76
- name: rspec
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '3.0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '3.0'
89
- - !ruby/object:Gem::Dependency
90
- name: rubocop
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: simplecov
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- - !ruby/object:Gem::Dependency
118
- name: simplecov-html
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :development
53
+ type: :runtime
125
54
  prerelease: false
126
55
  version_requirements: !ruby/object:Gem::Requirement
127
56
  requirements:
@@ -129,13 +58,13 @@ dependencies:
129
58
  - !ruby/object:Gem::Version
130
59
  version: '0'
131
60
  - !ruby/object:Gem::Dependency
132
- name: simplecov-lcov
61
+ name: bigdecimal
133
62
  requirement: !ruby/object:Gem::Requirement
134
63
  requirements:
135
64
  - - ">="
136
65
  - !ruby/object:Gem::Version
137
66
  version: '0'
138
- type: :development
67
+ type: :runtime
139
68
  prerelease: false
140
69
  version_requirements: !ruby/object:Gem::Requirement
141
70
  requirements:
@@ -143,20 +72,19 @@ dependencies:
143
72
  - !ruby/object:Gem::Version
144
73
  version: '0'
145
74
  - !ruby/object:Gem::Dependency
146
- name: timecop
75
+ name: csv
147
76
  requirement: !ruby/object:Gem::Requirement
148
77
  requirements:
149
78
  - - ">="
150
79
  - !ruby/object:Gem::Version
151
80
  version: '0'
152
- type: :development
81
+ type: :runtime
153
82
  prerelease: false
154
83
  version_requirements: !ruby/object:Gem::Requirement
155
84
  requirements:
156
85
  - - ">="
157
86
  - !ruby/object:Gem::Version
158
87
  version: '0'
159
- description:
160
88
  email:
161
89
  - jgrodowski@gmail.com
162
90
  executables: []
@@ -164,10 +92,10 @@ extensions: []
164
92
  extra_rdoc_files: []
165
93
  files:
166
94
  - ".github/dependabot.yml"
95
+ - ".github/workflows/ruby.yml"
167
96
  - ".gitignore"
168
97
  - ".rspec"
169
98
  - ".rubocop.yml"
170
- - ".travis.yml"
171
99
  - CHANGELOG.md
172
100
  - Gemfile
173
101
  - LICENSE.txt
@@ -180,8 +108,8 @@ files:
180
108
  homepage: https://github.com/grodowski/pronto-undercover
181
109
  licenses:
182
110
  - MIT
183
- metadata: {}
184
- post_install_message:
111
+ metadata:
112
+ rubygems_mfa_required: 'true'
185
113
  rdoc_options: []
186
114
  require_paths:
187
115
  - lib
@@ -196,8 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
124
  - !ruby/object:Gem::Version
197
125
  version: '0'
198
126
  requirements: []
199
- rubygems_version: 3.2.22
200
- signing_key:
127
+ rubygems_version: 3.6.2
201
128
  specification_version: 4
202
129
  summary: Pronto runner for Undercover - actionable code coverage
203
130
  test_files: []
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- language: ruby
2
- dist: focal
3
- rvm:
4
- - 2.7.1
5
- - 2.6.6
6
- - 2.5.8
7
- - 3.0.2
8
- before_install:
9
- - gem install bundler undercover
10
- - gem update --system
11
- script:
12
- - bundle exec rake
13
- - git pull origin master:master
14
- - undercover --compare master