simplecov_linter_formatter 0.1.0 → 0.2.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 +4 -4
- data/CHANGELOG.md +6 -1
- data/Gemfile.lock +2 -1
- data/README.md +56 -5
- data/docs/assets/all-summary.png +0 -0
- data/docs/assets/colors-summary.png +0 -0
- data/docs/assets/no-bg-summary.png +0 -0
- data/docs/assets/own-changes-summary.png +0 -0
- data/docs/assets/report-example.png +0 -0
- data/docs/assets/sorted-summary.png +0 -0
- data/lib/simplecov_linter_formatter/file_line.rb +63 -0
- data/lib/simplecov_linter_formatter/formatters/source_file_formatter.rb +16 -4
- data/lib/simplecov_linter_formatter/formatters/text_lines_formatter.rb +3 -4
- data/lib/simplecov_linter_formatter/summary_builder.rb +127 -0
- data/lib/simplecov_linter_formatter/text_lines_filter.rb +35 -8
- data/lib/simplecov_linter_formatter/version.rb +1 -1
- data/lib/simplecov_linter_formatter.rb +72 -11
- data/simplecov_linter_formatter.gemspec +2 -0
- metadata +24 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f1ca65ad6bdacc453fa5df9593826cf34106da48e60886fd8ff69fccc523cad
|
4
|
+
data.tar.gz: e7b97571b7de89cf5babfde9695d06fcac5b3bb492f2e22036e1c566590b0d3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2336fa2a71a62a6f60e99b82bbe1721254aa43269cfc362d97712190490d915d982e55a4d1f15914f433c50ff2d1fb823e6cc158d6967da906e976f51d424049
|
7
|
+
data.tar.gz: df7616fa9792a3ac67b84275430f523a8984c2066901c84ead8c5179ce2529010bdb421b6795c58298ef8446544d49889c43b11f02ea3a8cddb774a2d367c384
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,12 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
-
###
|
5
|
+
### v0.2.0
|
6
|
+
|
7
|
+
#### Added
|
8
|
+
|
9
|
+
* Add on screen summary report.
|
10
|
+
* Use `git diff` if `reviewdog` is not installed.
|
6
11
|
|
7
12
|
### v0.1.0
|
8
13
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -5,9 +5,21 @@
|
|
5
5
|
|
6
6
|
Linter formatter for SimpleCov code coverage tool
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
***Note: To learn more about SimpleCov, check out the main repo at [https://github.com/simplecov-ruby/simplecov](https://github.com/colszowka/simplecov)***
|
9
|
+
|
10
|
+
This formatter has two features:
|
11
|
+
|
12
|
+
1) It generates a json file to feed the [VSCode SimpleCov plugin](https://github.com/anykeyh/simplecov-vscode).
|
13
|
+
|
14
|
+
The plugin uses by default the json file produced by simplecov but, with this gem, we can filter the file to show code coverage related to our changes.
|
15
|
+
|
16
|
+
<img src="./docs/assets/not-covered.png" witdh="300" />
|
17
|
+
<img src="./docs/assets/partial-cov.png" witdh="300" />
|
18
|
+
<img src="./docs/assets/covered.png" witdh="300" />
|
19
|
+
|
20
|
+
2) It shows a code coverage report on screen.
|
21
|
+
|
22
|
+
<img src="./docs/assets/report-example.png" witdh="300" />
|
11
23
|
|
12
24
|
## Installation
|
13
25
|
|
@@ -17,6 +29,8 @@ Linter formatter for SimpleCov code coverage tool
|
|
17
29
|
brew install reviewdog/tap/reviewdog
|
18
30
|
```
|
19
31
|
|
32
|
+
> You can avoid this step and `git status` will be used to filter results instead.
|
33
|
+
|
20
34
|
- Install [VSCode SimpleCov plugin](https://github.com/anykeyh/simplecov-vscode)
|
21
35
|
|
22
36
|
You need to configure `SimpleCovLinterFormatter.json_filename = '.resultset.json'` to use the extension's default configuration.
|
@@ -41,8 +55,10 @@ Add the formatter to your `spec/spec_helper.rb`.
|
|
41
55
|
require 'simplecov'
|
42
56
|
require 'simplecov_linter_formatter'
|
43
57
|
|
44
|
-
SimpleCovLinterFormatter.
|
45
|
-
|
58
|
+
SimpleCovLinterFormatter.setup do |config|
|
59
|
+
config.json_filename = '.resultset.json'
|
60
|
+
config.scope = :all
|
61
|
+
end
|
46
62
|
|
47
63
|
SimpleCov.start 'rails' do
|
48
64
|
# ...
|
@@ -58,6 +74,41 @@ end
|
|
58
74
|
|
59
75
|
If you configure `SimpleCovLinterFormatter.scope = :own_changes` instead of `:all` you will see coverage warnings related to your changes only (it uses `git diff`).
|
60
76
|
|
77
|
+
### Summary Report
|
78
|
+
|
79
|
+
- Turn on the on screen report with option: `SimpleCovLinterFormatter.summary_enabled = true`
|
80
|
+
- Scope variation will affect the report:
|
81
|
+
- `SimpleCovLinterFormatter.scope = :all`
|
82
|
+
|
83
|
+
<img src="./docs/assets/all-summary.png" witdh="300" />
|
84
|
+
|
85
|
+
- `SimpleCovLinterFormatter.scope = :own_changes`
|
86
|
+
|
87
|
+
<img src="./docs/assets/own-changes-summary.png" witdh="300" />
|
88
|
+
|
89
|
+
- Sort by `:alphabet` or, the default, `:coverage` option with `SimpleCovLinterFormatter.summary_files_sorting = :alphabet`
|
90
|
+
|
91
|
+
<img src="./docs/assets/sorted-summary.png" witdh="300" />
|
92
|
+
|
93
|
+
- Change the look of the report:
|
94
|
+
- Turn off the background with `SimpleCovLinterFormatter.summary_enabled_bg = false`
|
95
|
+
|
96
|
+
<img src="./docs/assets/no-bg-summary.png" witdh="300" />
|
97
|
+
|
98
|
+
- Change colors:
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
SimpleCovLinterFormatter.setup do |config|
|
102
|
+
config.summary_enabled_bg = true # you need enabled background
|
103
|
+
config.summary_covered_bg_color = :lightblue
|
104
|
+
config.summary_not_covered_bg_color = :pink
|
105
|
+
config.summary_text_color = :black
|
106
|
+
end
|
107
|
+
```
|
108
|
+
|
109
|
+
<img src="./docs/assets/colors-summary.png" witdh="300" />
|
110
|
+
|
111
|
+
|
61
112
|
## Testing
|
62
113
|
|
63
114
|
To run the specs you need to execute, **in the root path of the gem**, the following command:
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module SimpleCovLinterFormatter
|
2
|
+
class FileLine
|
3
|
+
attr_reader :file_name
|
4
|
+
|
5
|
+
def initialize(line)
|
6
|
+
@line = line
|
7
|
+
assign_attributes
|
8
|
+
end
|
9
|
+
|
10
|
+
def status
|
11
|
+
@status.to_sym
|
12
|
+
end
|
13
|
+
|
14
|
+
def line_number
|
15
|
+
@line_number.to_i
|
16
|
+
end
|
17
|
+
|
18
|
+
def line_number_idx
|
19
|
+
line_number - 1
|
20
|
+
end
|
21
|
+
|
22
|
+
def column
|
23
|
+
@column.to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
def lines_count
|
27
|
+
@lines_count.to_i
|
28
|
+
end
|
29
|
+
|
30
|
+
def percentage
|
31
|
+
@percentage.to_f
|
32
|
+
end
|
33
|
+
|
34
|
+
def file_short_name
|
35
|
+
@file_short_name ||= file_name.gsub(project_path, "")
|
36
|
+
end
|
37
|
+
|
38
|
+
def file_int_percentage
|
39
|
+
@file_int_percentage ||= percentage.to_i
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def project_path
|
45
|
+
root_path = ""
|
46
|
+
return root_path unless Object.const_defined?('Rails')
|
47
|
+
return root_path unless Rails.respond_to?(:root)
|
48
|
+
|
49
|
+
Rails.root.to_s
|
50
|
+
rescue NameError
|
51
|
+
""
|
52
|
+
end
|
53
|
+
|
54
|
+
def assign_attributes
|
55
|
+
@file_name, @line_number, @column, status_lines_count = @line.split(
|
56
|
+
SimpleCovLinterFormatter::LINE_SECTIONS_DIVIDER
|
57
|
+
)
|
58
|
+
@status, @lines_count, @percentage = status_lines_count.split(
|
59
|
+
SimpleCovLinterFormatter::MSG_DIVIDER
|
60
|
+
)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -8,19 +8,31 @@ module SimpleCovLinterFormatter
|
|
8
8
|
|
9
9
|
def format
|
10
10
|
lines.map do |line|
|
11
|
-
|
11
|
+
build_line_text(line)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
def
|
17
|
+
def build_line_text(line)
|
18
18
|
[
|
19
19
|
@source_file.filename,
|
20
20
|
line.line_number,
|
21
21
|
FILE_COLUMN,
|
22
|
-
|
23
|
-
].map(&:to_s).join(
|
22
|
+
build_line_msg(line)
|
23
|
+
].map(&:to_s).join(SimpleCovLinterFormatter::LINE_SECTIONS_DIVIDER)
|
24
|
+
end
|
25
|
+
|
26
|
+
def build_line_msg(line)
|
27
|
+
[
|
28
|
+
line.status,
|
29
|
+
lines_count,
|
30
|
+
stats.percent
|
31
|
+
].map(&:to_s).join(SimpleCovLinterFormatter::MSG_DIVIDER)
|
32
|
+
end
|
33
|
+
|
34
|
+
def stats
|
35
|
+
@stats ||= @source_file.coverage_statistics[:line]
|
24
36
|
end
|
25
37
|
|
26
38
|
def lines_count
|
@@ -19,10 +19,9 @@ module SimpleCovLinterFormatter
|
|
19
19
|
result = {}
|
20
20
|
|
21
21
|
@lines.each do |line|
|
22
|
-
|
23
|
-
|
24
|
-
result[file_name]
|
25
|
-
result[file_name][:lines][line_number.to_i - 1] = status.to_sym == :missed ? 0 : nil
|
22
|
+
file = SimpleCovLinterFormatter::FileLine.new(line)
|
23
|
+
result[file.file_name] ||= { lines: [nil] * file.lines_count }
|
24
|
+
result[file.file_name][:lines][file.line_number_idx] = file.status == :missed ? 0 : nil
|
26
25
|
end
|
27
26
|
|
28
27
|
result
|
@@ -0,0 +1,127 @@
|
|
1
|
+
module SimpleCovLinterFormatter
|
2
|
+
class SummaryBuilder
|
3
|
+
PERCENT_TEXT_SIZE = 3
|
4
|
+
|
5
|
+
def initialize(lines)
|
6
|
+
@lines = lines
|
7
|
+
@largest_file_name = 0
|
8
|
+
@largest_percentage = 0
|
9
|
+
end
|
10
|
+
|
11
|
+
def build
|
12
|
+
body = build_body
|
13
|
+
return body if body == ""
|
14
|
+
|
15
|
+
"#{build_title}\n#{body}#{divider}"
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def build_title
|
21
|
+
"SimpleCov Report - #{build_coverage_title}:\n#{divider}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def divider
|
25
|
+
'-' * report_width
|
26
|
+
end
|
27
|
+
|
28
|
+
def report_width
|
29
|
+
@largest_file_name + @largest_percentage + PERCENT_TEXT_SIZE
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_coverage_title
|
33
|
+
if SimpleCovLinterFormatter.cover_all?
|
34
|
+
return "Total Coverage"
|
35
|
+
end
|
36
|
+
|
37
|
+
"Own Changes"
|
38
|
+
end
|
39
|
+
|
40
|
+
def build_body
|
41
|
+
result = ""
|
42
|
+
|
43
|
+
files.each do |file|
|
44
|
+
result += "#{build_line_output(file)}\n"
|
45
|
+
end
|
46
|
+
|
47
|
+
result
|
48
|
+
end
|
49
|
+
|
50
|
+
def files
|
51
|
+
unique_files = []
|
52
|
+
added_files = {}
|
53
|
+
|
54
|
+
@lines.each do |line|
|
55
|
+
file = SimpleCovLinterFormatter::FileLine.new(line)
|
56
|
+
next if added_files[file.file_short_name]
|
57
|
+
|
58
|
+
unique_files << file
|
59
|
+
added_files[file.file_short_name] = true
|
60
|
+
file_size = file.file_short_name.size
|
61
|
+
file_percentage = file.file_int_percentage.to_s.size
|
62
|
+
@largest_file_name = file_size if file_size > @largest_file_name
|
63
|
+
@largest_percentage = file_percentage if file_percentage > @largest_percentage
|
64
|
+
end
|
65
|
+
|
66
|
+
sort_files(unique_files)
|
67
|
+
end
|
68
|
+
|
69
|
+
def sort_files(files)
|
70
|
+
sorting_strategy = if SimpleCovLinterFormatter.summary_coverage_sorting?
|
71
|
+
Proc.new { |file| [file.percentage, file.file_short_name] }
|
72
|
+
else
|
73
|
+
Proc.new { |file| file.file_short_name }
|
74
|
+
end
|
75
|
+
files.sort_by { |file| sorting_strategy.call(file) }
|
76
|
+
end
|
77
|
+
|
78
|
+
def build_line_output(file)
|
79
|
+
file_name = adjusted_file_name(file)
|
80
|
+
covered_size = @largest_file_name * file.percentage / 100.0
|
81
|
+
covered_text = colorize_text(
|
82
|
+
covered_size.zero? ? "" : file_name[0..(covered_size - 1)],
|
83
|
+
:summary_covered_bg_color
|
84
|
+
)
|
85
|
+
not_covered_text = colorize_text(
|
86
|
+
file_name[covered_size..-1],
|
87
|
+
:summary_not_covered_bg_color
|
88
|
+
)
|
89
|
+
"#{build_percentage_output(file)} #{covered_text}#{not_covered_text}"
|
90
|
+
end
|
91
|
+
|
92
|
+
def colorize_text(text, bg_option)
|
93
|
+
text = Rainbow(text).color(SimpleCovLinterFormatter.summary_text_color)
|
94
|
+
return text unless SimpleCovLinterFormatter.summary_enabled_bg
|
95
|
+
|
96
|
+
text.bg(SimpleCovLinterFormatter.send(bg_option))
|
97
|
+
end
|
98
|
+
|
99
|
+
def build_percentage_output(file)
|
100
|
+
percentage_size = file.file_int_percentage.to_s.size
|
101
|
+
diff = @largest_percentage - percentage_size
|
102
|
+
Rainbow("#{' ' * diff}#{file.file_int_percentage} %").send(
|
103
|
+
get_percetage_color(file.file_int_percentage)
|
104
|
+
)
|
105
|
+
end
|
106
|
+
|
107
|
+
def get_percetage_color(percentage)
|
108
|
+
case percentage
|
109
|
+
when 100
|
110
|
+
:green
|
111
|
+
when 0
|
112
|
+
:red
|
113
|
+
else
|
114
|
+
:yellow
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def adjusted_file_name(file)
|
119
|
+
diff = @largest_file_name - file.file_short_name.size
|
120
|
+
file.file_short_name + (" " * diff)
|
121
|
+
end
|
122
|
+
|
123
|
+
def covered_size(file)
|
124
|
+
@largest_file_name * file.percentage / 100.0
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -5,24 +5,51 @@ module SimpleCovLinterFormatter
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def filter
|
8
|
-
|
9
|
-
|
8
|
+
return [] if text_content == ""
|
9
|
+
return filter_with_reviewdog if reviewdog?
|
10
|
+
|
11
|
+
filter_with_git_status
|
10
12
|
end
|
11
13
|
|
12
14
|
private
|
13
15
|
|
14
|
-
def
|
15
|
-
|
16
|
+
def reviewdog?
|
17
|
+
silence_stream($stdout) { !!system("reviewdog --version") }
|
18
|
+
end
|
19
|
+
|
20
|
+
def filter_with_reviewdog
|
21
|
+
`echo "#{text_content}" | reviewdog -efm="#{efm_param}" -diff="git diff"`.to_s.split("\n")
|
22
|
+
end
|
23
|
+
|
24
|
+
def efm_param
|
25
|
+
%w{%f %l %c %m}.join(SimpleCovLinterFormatter::LINE_SECTIONS_DIVIDER)
|
26
|
+
end
|
27
|
+
|
28
|
+
def filter_with_git_status
|
29
|
+
status_files = status_to_lines(`git status --porcelain`)
|
30
|
+
regexp = /#{status_files.join('|')}/
|
31
|
+
@text_lines.grep(regexp)
|
32
|
+
end
|
16
33
|
|
17
|
-
|
34
|
+
def status_to_lines(status)
|
35
|
+
status.split("\n").map do |change|
|
36
|
+
file = change.split(" ").last
|
37
|
+
file.end_with?("/") ? nil : file
|
38
|
+
end.compact
|
18
39
|
end
|
19
40
|
|
20
41
|
def text_content
|
21
|
-
@text_content ||= @text_lines.join(
|
42
|
+
@text_content ||= @text_lines.join("\n")
|
22
43
|
end
|
23
44
|
|
24
|
-
def
|
25
|
-
|
45
|
+
def silence_stream(stream)
|
46
|
+
old_stream = stream.dup
|
47
|
+
stream.reopen(File::NULL)
|
48
|
+
stream.sync = true
|
49
|
+
yield
|
50
|
+
ensure
|
51
|
+
stream.reopen(old_stream)
|
52
|
+
old_stream.close
|
26
53
|
end
|
27
54
|
end
|
28
55
|
end
|
@@ -1,35 +1,89 @@
|
|
1
|
+
require 'rainbow'
|
2
|
+
|
1
3
|
require 'simplecov_linter_formatter/version'
|
4
|
+
require 'simplecov_linter_formatter/file_line'
|
2
5
|
require 'simplecov_linter_formatter/formatters/result_formatter'
|
3
6
|
require 'simplecov_linter_formatter/formatters/source_file_formatter'
|
4
7
|
require 'simplecov_linter_formatter/formatters/text_lines_formatter'
|
5
8
|
require 'simplecov_linter_formatter/exporters/json_result_exporter'
|
6
9
|
require 'simplecov_linter_formatter/text_lines_filter'
|
10
|
+
require 'simplecov_linter_formatter/summary_builder'
|
7
11
|
|
8
12
|
module SimpleCovLinterFormatter
|
13
|
+
extend self
|
14
|
+
|
9
15
|
SCOPES = [:all, :own_changes]
|
16
|
+
SORTING_MODES = [:coverage, :alphabet]
|
17
|
+
MSG_DIVIDER = "-"
|
18
|
+
LINE_SECTIONS_DIVIDER = ":"
|
10
19
|
|
11
|
-
|
12
|
-
|
13
|
-
|
20
|
+
attr_writer(
|
21
|
+
:json_filename,
|
22
|
+
:summary_covered_bg_color,
|
23
|
+
:summary_not_covered_bg_color,
|
24
|
+
:summary_text_color,
|
25
|
+
:summary_enabled_bg,
|
26
|
+
:summary_enabled
|
27
|
+
)
|
14
28
|
|
15
|
-
def
|
29
|
+
def json_filename
|
16
30
|
@json_filename || 'coverage.linter.json'
|
17
31
|
end
|
18
32
|
|
19
|
-
def
|
33
|
+
def scope=(value)
|
34
|
+
if !SCOPES.include?(value.to_sym)
|
35
|
+
raise "Invalid scope. Must be one of: #{SCOPES.map(&:to_s).join(', ')}"
|
36
|
+
end
|
37
|
+
|
38
|
+
@scope = value
|
39
|
+
end
|
40
|
+
|
41
|
+
def scope
|
42
|
+
(@scope || :all).to_sym
|
43
|
+
end
|
44
|
+
|
45
|
+
def cover_all?
|
20
46
|
scope == :all
|
21
47
|
end
|
22
48
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
49
|
+
def summary_enabled
|
50
|
+
!!@summary_enabled
|
51
|
+
end
|
52
|
+
|
53
|
+
def summary_files_sorting=(value)
|
54
|
+
if !SORTING_MODES.include?(value.to_sym)
|
55
|
+
raise "Invalid summary_files_sorting. Must be one of: #{SORTING_MODES.map(&:to_s).join(', ')}"
|
26
56
|
end
|
27
57
|
|
28
|
-
@
|
58
|
+
@summary_files_sorting = value
|
59
|
+
end
|
60
|
+
|
61
|
+
def summary_files_sorting
|
62
|
+
(@summary_files_sorting || :coverage).to_sym
|
63
|
+
end
|
64
|
+
|
65
|
+
def summary_coverage_sorting?
|
66
|
+
summary_files_sorting == :coverage
|
67
|
+
end
|
68
|
+
|
69
|
+
def summary_enabled_bg
|
70
|
+
!!@summary_enabled_bg
|
71
|
+
end
|
72
|
+
|
73
|
+
def summary_covered_bg_color
|
74
|
+
(@summary_covered_bg_color || :darkgreen).to_sym
|
29
75
|
end
|
30
76
|
|
31
|
-
def
|
32
|
-
@
|
77
|
+
def summary_not_covered_bg_color
|
78
|
+
(@summary_not_covered_bg_color || :firebrick).to_sym
|
79
|
+
end
|
80
|
+
|
81
|
+
def summary_text_color
|
82
|
+
(@summary_text_color || :white).to_sym
|
83
|
+
end
|
84
|
+
|
85
|
+
def setup
|
86
|
+
yield self
|
33
87
|
end
|
34
88
|
end
|
35
89
|
|
@@ -38,6 +92,7 @@ module SimpleCov
|
|
38
92
|
class LinterFormatter
|
39
93
|
def format(simplecov_result)
|
40
94
|
text_lines = get_text_lines(simplecov_result)
|
95
|
+
show_coverage_summary(text_lines)
|
41
96
|
hash_result = format_text_lines(simplecov_result.command_name, text_lines)
|
42
97
|
export_to_json(hash_result)
|
43
98
|
nil
|
@@ -52,6 +107,12 @@ module SimpleCov
|
|
52
107
|
filter_text_lines(text_lines)
|
53
108
|
end
|
54
109
|
|
110
|
+
def show_coverage_summary(text_lines)
|
111
|
+
return unless SimpleCovLinterFormatter.summary_enabled
|
112
|
+
|
113
|
+
puts(SimpleCovLinterFormatter::SummaryBuilder.new(text_lines).build)
|
114
|
+
end
|
115
|
+
|
55
116
|
def filter_text_lines(text_lines)
|
56
117
|
SimpleCovLinterFormatter::TextLinesFilter.new(text_lines).filter
|
57
118
|
end
|
@@ -17,6 +17,8 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
+
spec.add_dependency "rainbow"
|
21
|
+
|
20
22
|
spec.add_development_dependency "bundler", "~> 2.2.15"
|
21
23
|
spec.add_development_dependency "guard-rspec"
|
22
24
|
spec.add_development_dependency "pry"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplecov_linter_formatter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Platanus
|
@@ -9,8 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-10-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rainbow
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: bundler
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,14 +176,22 @@ files:
|
|
162
176
|
- Rakefile
|
163
177
|
- bin/console
|
164
178
|
- bin/setup
|
179
|
+
- docs/assets/all-summary.png
|
180
|
+
- docs/assets/colors-summary.png
|
165
181
|
- docs/assets/covered.png
|
182
|
+
- docs/assets/no-bg-summary.png
|
166
183
|
- docs/assets/not-covered.png
|
184
|
+
- docs/assets/own-changes-summary.png
|
167
185
|
- docs/assets/partial-cov.png
|
186
|
+
- docs/assets/report-example.png
|
187
|
+
- docs/assets/sorted-summary.png
|
168
188
|
- lib/simplecov_linter_formatter.rb
|
169
189
|
- lib/simplecov_linter_formatter/exporters/json_result_exporter.rb
|
190
|
+
- lib/simplecov_linter_formatter/file_line.rb
|
170
191
|
- lib/simplecov_linter_formatter/formatters/result_formatter.rb
|
171
192
|
- lib/simplecov_linter_formatter/formatters/source_file_formatter.rb
|
172
193
|
- lib/simplecov_linter_formatter/formatters/text_lines_formatter.rb
|
194
|
+
- lib/simplecov_linter_formatter/summary_builder.rb
|
173
195
|
- lib/simplecov_linter_formatter/text_lines_filter.rb
|
174
196
|
- lib/simplecov_linter_formatter/version.rb
|
175
197
|
- simplecov_linter_formatter.gemspec
|