undercover 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +20 -1
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +3 -0
- data/README.md +8 -5
- data/lib/undercover/lcov_parser.rb +18 -0
- data/lib/undercover/version.rb +1 -1
- data/undercover.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bff312e0fdc1d61bc1ac46a49812fe490bc57d095f660ba38df00686b1d08a28
|
4
|
+
data.tar.gz: b8df1a289dd957868632ecb1aea06033b6945e75357163f1007136ccae94d9b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4fee8956df8fd10483e7c6af403859c1e93775fe8d322b3709f22d38b14cbcd4139aea072692eb5bb754f1d581ebf7123352b63d5641c0f7810ee9ba3a577a2
|
7
|
+
data.tar.gz: 1dfced71df7fb571add736bb31877ae5c3116796c3c3a888db9e3e1d6f8c7ad92809f47dce700ead01064299706a6edf0347d8333ba8218ec8696512de5ca854
|
data/.github/workflows/ruby.yml
CHANGED
@@ -5,7 +5,7 @@ jobs:
|
|
5
5
|
runs-on: ubuntu-latest
|
6
6
|
strategy:
|
7
7
|
matrix:
|
8
|
-
ruby: ['3.
|
8
|
+
ruby: ['3.2', '3.0', '2.7']
|
9
9
|
steps:
|
10
10
|
- uses: actions/checkout@v1
|
11
11
|
- name: Set up Ruby ${{ matrix.ruby }}
|
@@ -17,5 +17,24 @@ jobs:
|
|
17
17
|
gem install bundler undercover --no-doc
|
18
18
|
bundle install --jobs 4 --retry 3
|
19
19
|
bundle exec rake
|
20
|
+
- name: undercover (local)
|
21
|
+
run: |
|
20
22
|
git fetch origin master:master
|
21
23
|
undercover --compare master
|
24
|
+
- uses: actions/upload-artifact@v2
|
25
|
+
with:
|
26
|
+
name: undercover.lcov
|
27
|
+
path: coverage/lcov/undercover.lcov
|
28
|
+
coverage:
|
29
|
+
runs-on: ubuntu-latest
|
30
|
+
needs: build
|
31
|
+
steps:
|
32
|
+
- uses: actions/download-artifact@v2
|
33
|
+
with:
|
34
|
+
name: undercover.lcov
|
35
|
+
- name: Upload coverage
|
36
|
+
run: |
|
37
|
+
ruby -e "$(curl -s https://undercover-ci.com/uploader.rb)" -- \
|
38
|
+
--repo grodowski/undercover \
|
39
|
+
--commit $GITHUB_SHA \
|
40
|
+
--lcov /home/runner/work/undercover/undercover/undercover.lcov
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
# undercover 👮♂️
|
2
2
|
|
3
|
-
|
3
|
+
[![Build Status](https://github.com/grodowski/undercover/actions/workflows/ruby.yml/badge.svg)](https://github.com/grodowski/undercover/actions)
|
4
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/b403feed68a18c072ec5/maintainability)](https://codeclimate.com/github/grodowski/undercover/maintainability)
|
5
|
+
![Downloads](https://img.shields.io/gem/dt/undercover)
|
6
|
+
|
7
|
+
`undercover` examines git diffs and warns about Ruby methods, classes and blocks that **were changed without sufficient test coverage**.
|
8
|
+
|
9
|
+
Works with CI/CD and automated pull request review, as well as locally using the CLI to help you reduce the number of defects caused by untested code changes.
|
4
10
|
|
5
|
-
- Visit **[https://undercover-ci.com](https://undercover-ci.com)** to set up
|
11
|
+
- Visit **[https://undercover-ci.com](https://undercover-ci.com)** to set up code review checks with the GitHub App, or use one of the [CI integrations](#code-review-integrations)
|
6
12
|
- Learn how to find untested code changes locally with the [CLI](#usage)
|
7
13
|
|
8
14
|
A sample output of `undercover` ran before a commit may look like this:
|
@@ -13,9 +19,6 @@ And like this, given that specs were added:
|
|
13
19
|
|
14
20
|
![screenshot success](docs/screenshot_success.png)
|
15
21
|
|
16
|
-
[![Build Status](https://action-badges.now.sh/grodowski/undercover)](https://github.com/grodowski/undercover/actions)
|
17
|
-
[![Maintainability](https://api.codeclimate.com/v1/badges/b403feed68a18c072ec5/maintainability)](https://codeclimate.com/github/grodowski/undercover/maintainability)
|
18
|
-
|
19
22
|
## Installation
|
20
23
|
|
21
24
|
Add this line to your application's Gemfile:
|
@@ -29,6 +29,24 @@ module Undercover
|
|
29
29
|
coverage || []
|
30
30
|
end
|
31
31
|
|
32
|
+
def total_coverage
|
33
|
+
all_lines = source_files.values.flatten(1)
|
34
|
+
return 0 if all_lines.empty?
|
35
|
+
|
36
|
+
all_lines = all_lines.select { _1.size == 2 }
|
37
|
+
total_f = all_lines.select { |_line_no, hits| hits.positive? }.size.to_f / all_lines.size
|
38
|
+
total_f.round(3)
|
39
|
+
end
|
40
|
+
|
41
|
+
def total_branch_coverage
|
42
|
+
all_lines = source_files.values.flatten(1)
|
43
|
+
return 0 if all_lines.empty?
|
44
|
+
|
45
|
+
all_branches = all_lines.select { _1.size == 4 }
|
46
|
+
total_f = all_branches.select { |_l_no, _block_no, _br_no, hits| hits.positive? }.size.to_f / all_branches.size
|
47
|
+
total_f.round(3)
|
48
|
+
end
|
49
|
+
|
32
50
|
private
|
33
51
|
|
34
52
|
# rubocop:disable Metrics/MethodLength, Style/SpecialGlobalVars, Metrics/AbcSize
|
data/lib/undercover/version.rb
CHANGED
data/undercover.gemspec
CHANGED
@@ -26,11 +26,11 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
27
27
|
spec.require_paths = ['lib']
|
28
28
|
|
29
|
-
spec.required_ruby_version = '>= 2.
|
29
|
+
spec.required_ruby_version = '>= 2.7.0'
|
30
30
|
|
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.
|
33
|
+
spec.add_dependency 'rugged', '>= 0.27', '< 1.7'
|
34
34
|
|
35
35
|
spec.add_development_dependency 'bundler'
|
36
36
|
spec.add_development_dependency 'pry'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: undercover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Grodowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: imagen
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
version: '0.27'
|
54
54
|
- - "<"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '1.
|
56
|
+
version: '1.7'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -63,7 +63,7 @@ dependencies:
|
|
63
63
|
version: '0.27'
|
64
64
|
- - "<"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '1.
|
66
|
+
version: '1.7'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: bundler
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,14 +240,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
240
240
|
requirements:
|
241
241
|
- - ">="
|
242
242
|
- !ruby/object:Gem::Version
|
243
|
-
version: 2.
|
243
|
+
version: 2.7.0
|
244
244
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
245
245
|
requirements:
|
246
246
|
- - ">="
|
247
247
|
- !ruby/object:Gem::Version
|
248
248
|
version: '0'
|
249
249
|
requirements: []
|
250
|
-
rubygems_version: 3.
|
250
|
+
rubygems_version: 3.4.1
|
251
251
|
signing_key:
|
252
252
|
specification_version: 4
|
253
253
|
summary: Actionable code coverage - detects untested code blocks in recent changes
|