simplecov-console 0.3.1 → 0.6.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 +5 -5
- data/Gemfile +1 -1
- data/README.md +63 -6
- data/VERSION +1 -1
- data/lib/simplecov-console.rb +68 -28
- data/simplecov-console.gemspec +34 -34
- data/test/helper.rb +9 -19
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bf41260176ece548059c1fff6db115552f4ff1a6655ab63575e488dfc2318739
|
4
|
+
data.tar.gz: 404ddb9d0b0a6f023046fdf7f52ab4accd496cc759f37c696d22c73df9a5d194
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e66ac79cbdf147451f2d6cb27666cd9b9a9cafc4c440adf6cc5975af38423f850260ffd3c40410a59e10ebc33b2e23438255c196ae1412a84647d10fb5350a0
|
7
|
+
data.tar.gz: 0c9e6517b4a51a435c02f2a3e96def76c7d9bf0724f725a679555a67f90b2fce7c788d0ebb464217458c48e91559e8a92837c164b91139769b6f55f93a7d3ae5
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
A simple console output formatter for SimpleCov
|
4
4
|
|
5
|
-
|
5
|
+
## Usage
|
6
6
|
|
7
7
|
```bash
|
8
8
|
$ gem install simplecov-console
|
@@ -11,14 +11,15 @@ $ gem install simplecov-console
|
|
11
11
|
```ruby
|
12
12
|
SimpleCov.formatter = SimpleCov::Formatter::Console
|
13
13
|
# or
|
14
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
14
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
|
15
15
|
SimpleCov::Formatter::HTMLFormatter,
|
16
16
|
SimpleCov::Formatter::Console,
|
17
|
-
]
|
17
|
+
])
|
18
18
|
```
|
19
19
|
|
20
20
|
Example output:
|
21
|
-
|
21
|
+
|
22
|
+
```text
|
22
23
|
COVERAGE: 82.34% -- 2345/2848 lines in 111 files
|
23
24
|
|
24
25
|
showing bottom (worst) 15 of 69 files
|
@@ -44,8 +45,64 @@ showing bottom (worst) 15 of 69 files
|
|
44
45
|
42 file(s) with 100% coverage not shown
|
45
46
|
```
|
46
47
|
|
48
|
+
## Configuration
|
49
|
+
|
50
|
+
### Disabling colorized output
|
51
|
+
|
52
|
+
Simply export `NO_COLOR=1` and colors will be disabled.
|
53
|
+
|
54
|
+
```sh
|
55
|
+
NO_COLOR=1 rake test
|
56
|
+
```
|
57
|
+
|
58
|
+
### Sorting the output
|
59
|
+
|
60
|
+
By default the coverage report is sorted by coverage % in descending order. To sort alphabetically by path, set the `SORT` environment variable to "path", or add the following to your test helper:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
SimpleCov::Formatter::Console.sort = 'path' # sort by file path
|
64
|
+
```
|
65
|
+
|
66
|
+
### Showing covered files
|
67
|
+
|
68
|
+
By default, fully covered files are excluded from the report. To show them, set the `SHOW_COVERED` environment variable to `true` or add the following to your test helper:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
SimpleCov::Formatter::Console.show_covered = true # show all files in coverage report
|
72
|
+
```
|
73
|
+
|
74
|
+
### Maximum rows displayed
|
75
|
+
|
76
|
+
By default, a maximum of 15 files with the worst coverage are displayed in the report. You can override this limit by setting the `MAX_ROWS` environment variable, or adding the following to your test helper:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
SimpleCov::Formatter::Console.max_rows = # some number
|
80
|
+
```
|
81
|
+
|
82
|
+
Setting a value of `-1` or `nil` will show all of the files.
|
83
|
+
|
84
|
+
### Table options
|
85
|
+
|
86
|
+
In some cases, you may need to pass some options to `TerminalTable.new`. For example, if the filenames are
|
87
|
+
truncated so much that you can't read them. In that case, you can add a line like this when setting the formatter:
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
SimpleCov::Formatter::Console.table_options = {:style => {:width => 200}}
|
91
|
+
SimpleCov.formatter = SimpleCov::Formatter::Console
|
92
|
+
```
|
93
|
+
|
94
|
+
## History
|
95
|
+
|
96
|
+
### 0.6 (2019.11.08)
|
97
|
+
|
98
|
+
- Added new config options: `sort`, `show_covered`, and `max_rows`
|
99
|
+
|
100
|
+
### 0.5 (2019.05.24)
|
101
|
+
|
102
|
+
- Replaced `hirb` gem with `terminal-table` due to multiple warnings thrown ([#11](https://github.com/chetan/simplecov-console/issues/11))
|
103
|
+
- Support [disabling colorized](https://no-color.org/) output via `NO_COLOR` env var
|
47
104
|
|
48
|
-
|
105
|
+
## Contributing
|
49
106
|
|
50
107
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
51
108
|
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
@@ -57,5 +114,5 @@ showing bottom (worst) 15 of 69 files
|
|
57
114
|
|
58
115
|
### Copyright
|
59
116
|
|
60
|
-
Copyright (c)
|
117
|
+
Copyright (c) 2019 Chetan Sarva. See LICENSE.txt for
|
61
118
|
further details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/simplecov-console.rb
CHANGED
@@ -1,9 +1,27 @@
|
|
1
|
-
require '
|
1
|
+
require 'terminal-table'
|
2
2
|
require 'ansi/code'
|
3
3
|
|
4
4
|
class SimpleCov::Formatter::Console
|
5
5
|
|
6
|
-
VERSION =
|
6
|
+
VERSION = IO.read(File.expand_path("../../VERSION", __FILE__)).strip
|
7
|
+
|
8
|
+
ATTRIBUTES = [:table_options, :use_colors, :max_rows, :show_covered, :sort]
|
9
|
+
class << self
|
10
|
+
attr_accessor(*ATTRIBUTES)
|
11
|
+
end
|
12
|
+
|
13
|
+
# enable colors unless NO_COLOR=1
|
14
|
+
SimpleCov::Formatter::Console.use_colors =
|
15
|
+
(ENV['NO_COLOR'].nil? or ENV['NO_COLOR'].empty?) ? true : false
|
16
|
+
|
17
|
+
# configure max rows from MAX_ROWS env var
|
18
|
+
SimpleCov::Formatter::Console.max_rows = ENV.fetch('MAX_ROWS', 15).to_i
|
19
|
+
|
20
|
+
# configure show_covered from SHOW_COVERED env var
|
21
|
+
SimpleCov::Formatter::Console.show_covered = ENV.fetch('SHOW_COVERED', 'false') == 'true'
|
22
|
+
|
23
|
+
# configure sort from SORT env var
|
24
|
+
SimpleCov::Formatter::Console.sort = ENV.fetch('SORT', 'coverage')
|
7
25
|
|
8
26
|
def format(result)
|
9
27
|
|
@@ -26,38 +44,54 @@ class SimpleCov::Formatter::Console
|
|
26
44
|
return
|
27
45
|
end
|
28
46
|
|
29
|
-
|
47
|
+
if SimpleCov::Formatter::Console.sort == 'coverage'
|
48
|
+
files = result.files.sort{ |a,b| a.covered_percent <=> b.covered_percent }
|
49
|
+
else
|
50
|
+
files = result.files
|
51
|
+
end
|
30
52
|
|
31
53
|
covered_files = 0
|
32
|
-
files.select!{ |file|
|
33
|
-
if file.covered_percent == 100 then
|
34
|
-
covered_files += 1
|
35
|
-
false
|
36
|
-
else
|
37
|
-
true
|
38
|
-
end
|
39
|
-
}
|
40
54
|
|
41
|
-
|
42
|
-
|
55
|
+
unless SimpleCov::Formatter::Console.show_covered
|
56
|
+
files.select!{ |file|
|
57
|
+
if file.covered_percent == 100 then
|
58
|
+
covered_files += 1
|
59
|
+
false
|
60
|
+
else
|
61
|
+
true
|
62
|
+
end
|
63
|
+
}
|
64
|
+
if files.nil? or files.empty? then
|
65
|
+
return
|
66
|
+
end
|
43
67
|
end
|
44
68
|
|
45
69
|
table = files.map do |f|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
70
|
+
[
|
71
|
+
colorize(pct(f)),
|
72
|
+
f.filename.gsub(root + "/", ''),
|
73
|
+
f.lines_of_code,
|
74
|
+
f.missed_lines.count,
|
75
|
+
missed(f.missed_lines).join(", ")
|
76
|
+
]
|
51
77
|
end
|
52
78
|
|
53
|
-
|
54
|
-
|
55
|
-
|
79
|
+
max_rows = SimpleCov::Formatter::Console.max_rows
|
80
|
+
|
81
|
+
if ![-1, nil].include?(max_rows) && table.size > max_rows then
|
82
|
+
puts "showing bottom (worst) #{max_rows} of #{table.size} files"
|
83
|
+
table = table.slice(0, max_rows)
|
56
84
|
end
|
57
85
|
|
58
|
-
|
59
|
-
|
60
|
-
|
86
|
+
table_options = SimpleCov::Formatter::Console.table_options || {}
|
87
|
+
if !table_options.kind_of?(Hash) then
|
88
|
+
raise ArgumentError.new("SimpleCov::Formatter::Console.table_options must be a Hash")
|
89
|
+
end
|
90
|
+
headings = %w{ coverage file lines missed missing }
|
91
|
+
|
92
|
+
opts = table_options.merge({:headings => headings, :rows => table})
|
93
|
+
t = Terminal::Table.new(opts)
|
94
|
+
puts t
|
61
95
|
|
62
96
|
if covered_files > 0 then
|
63
97
|
puts "#{covered_files} file(s) with 100% coverage not shown"
|
@@ -82,11 +116,11 @@ class SimpleCov::Formatter::Console
|
|
82
116
|
end
|
83
117
|
|
84
118
|
group_str = []
|
85
|
-
groups.map do |
|
86
|
-
if
|
87
|
-
group_str << "#{
|
119
|
+
groups.map do |starting_line, length|
|
120
|
+
if length > 0
|
121
|
+
group_str << "#{starting_line}-#{starting_line + length}"
|
88
122
|
else
|
89
|
-
group_str << "#{
|
123
|
+
group_str << "#{starting_line}"
|
90
124
|
end
|
91
125
|
end
|
92
126
|
|
@@ -97,7 +131,13 @@ class SimpleCov::Formatter::Console
|
|
97
131
|
sprintf("%6.2f%%", obj.covered_percent)
|
98
132
|
end
|
99
133
|
|
134
|
+
def use_colors?
|
135
|
+
SimpleCov::Formatter::Console.use_colors
|
136
|
+
end
|
137
|
+
|
100
138
|
def colorize(s)
|
139
|
+
return s if !use_colors?
|
140
|
+
|
101
141
|
s =~ /([\d.]+)/
|
102
142
|
n = $1.to_f
|
103
143
|
if n >= 90 then
|
data/simplecov-console.gemspec
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: simplecov-console 0.
|
5
|
+
# stub: simplecov-console 0.6.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
|
-
s.name = "simplecov-console"
|
9
|
-
s.version = "0.
|
8
|
+
s.name = "simplecov-console".freeze
|
9
|
+
s.version = "0.6.0"
|
10
10
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["Chetan Sarva"]
|
14
|
-
s.date = "
|
15
|
-
s.description = "Simple console output formatter for SimpleCov"
|
16
|
-
s.email = "chetan@pixelcop.net"
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib".freeze]
|
13
|
+
s.authors = ["Chetan Sarva".freeze]
|
14
|
+
s.date = "2019-11-08"
|
15
|
+
s.description = "Simple console output formatter for SimpleCov".freeze
|
16
|
+
s.email = "chetan@pixelcop.net".freeze
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE.txt",
|
19
19
|
"README.md"
|
@@ -30,39 +30,39 @@ Gem::Specification.new do |s|
|
|
30
30
|
"test/helper.rb",
|
31
31
|
"test/test_simplecov-console.rb"
|
32
32
|
]
|
33
|
-
s.homepage = "http://github.com/chetan/simplecov-console"
|
34
|
-
s.licenses = ["MIT"]
|
35
|
-
s.rubygems_version = "
|
36
|
-
s.summary = "Simple console output formatter"
|
33
|
+
s.homepage = "http://github.com/chetan/simplecov-console".freeze
|
34
|
+
s.licenses = ["MIT".freeze]
|
35
|
+
s.rubygems_version = "3.0.2".freeze
|
36
|
+
s.summary = "Simple console output formatter".freeze
|
37
37
|
|
38
38
|
if s.respond_to? :specification_version then
|
39
39
|
s.specification_version = 4
|
40
40
|
|
41
41
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
|
-
s.add_runtime_dependency(%q<simplecov
|
43
|
-
s.add_runtime_dependency(%q<
|
44
|
-
s.add_runtime_dependency(%q<ansi
|
45
|
-
s.add_development_dependency(%q<minitest
|
46
|
-
s.add_development_dependency(%q<yard
|
47
|
-
s.add_development_dependency(%q<bundler
|
48
|
-
s.add_development_dependency(%q<juwelier
|
42
|
+
s.add_runtime_dependency(%q<simplecov>.freeze, [">= 0"])
|
43
|
+
s.add_runtime_dependency(%q<terminal-table>.freeze, [">= 0"])
|
44
|
+
s.add_runtime_dependency(%q<ansi>.freeze, [">= 0"])
|
45
|
+
s.add_development_dependency(%q<minitest>.freeze, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<yard>.freeze, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<bundler>.freeze, ["~> 1.2"])
|
48
|
+
s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
|
49
49
|
else
|
50
|
-
s.add_dependency(%q<simplecov
|
51
|
-
s.add_dependency(%q<
|
52
|
-
s.add_dependency(%q<ansi
|
53
|
-
s.add_dependency(%q<minitest
|
54
|
-
s.add_dependency(%q<yard
|
55
|
-
s.add_dependency(%q<bundler
|
56
|
-
s.add_dependency(%q<juwelier
|
50
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
51
|
+
s.add_dependency(%q<terminal-table>.freeze, [">= 0"])
|
52
|
+
s.add_dependency(%q<ansi>.freeze, [">= 0"])
|
53
|
+
s.add_dependency(%q<minitest>.freeze, [">= 0"])
|
54
|
+
s.add_dependency(%q<yard>.freeze, [">= 0"])
|
55
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 1.2"])
|
56
|
+
s.add_dependency(%q<juwelier>.freeze, [">= 0"])
|
57
57
|
end
|
58
58
|
else
|
59
|
-
s.add_dependency(%q<simplecov
|
60
|
-
s.add_dependency(%q<
|
61
|
-
s.add_dependency(%q<ansi
|
62
|
-
s.add_dependency(%q<minitest
|
63
|
-
s.add_dependency(%q<yard
|
64
|
-
s.add_dependency(%q<bundler
|
65
|
-
s.add_dependency(%q<juwelier
|
59
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
60
|
+
s.add_dependency(%q<terminal-table>.freeze, [">= 0"])
|
61
|
+
s.add_dependency(%q<ansi>.freeze, [">= 0"])
|
62
|
+
s.add_dependency(%q<minitest>.freeze, [">= 0"])
|
63
|
+
s.add_dependency(%q<yard>.freeze, [">= 0"])
|
64
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 1.2"])
|
65
|
+
s.add_dependency(%q<juwelier>.freeze, [">= 0"])
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
data/test/helper.rb
CHANGED
@@ -1,25 +1,15 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require "simplecov"
|
11
|
-
require "minitest/autorun"
|
12
1
|
|
13
|
-
$LOAD_PATH.
|
14
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
15
|
-
require 'simplecov-console'
|
2
|
+
$LOAD_PATH.push(File.expand_path("../../lib", __FILE__))
|
16
3
|
|
17
|
-
|
18
|
-
|
4
|
+
require "bundler/setup"
|
5
|
+
require "simplecov"
|
6
|
+
require "simplecov-console"
|
19
7
|
|
20
|
-
SimpleCov.formatter = SimpleCov::Formatter::Console
|
21
8
|
SimpleCov.start do
|
22
|
-
|
9
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
|
10
|
+
SimpleCov::Formatter::HTMLFormatter,
|
11
|
+
SimpleCov::Formatter::Console
|
12
|
+
])
|
23
13
|
end
|
24
14
|
|
25
|
-
|
15
|
+
require "minitest/autorun"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplecov-console
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chetan Sarva
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simplecov
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: terminal-table
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -145,8 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
147
|
requirements: []
|
148
|
-
|
149
|
-
rubygems_version: 2.5.1
|
148
|
+
rubygems_version: 3.0.2
|
150
149
|
signing_key:
|
151
150
|
specification_version: 4
|
152
151
|
summary: Simple console output formatter
|