simplecov-console 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c972c40225a8d1890e1a1b9d9e6cda1d55c9b7ec6e07e504dbd01e24ff834a10
4
- data.tar.gz: b3ae36a6ee1500cceb6a7ee53f3d3d56246c143836ef8cc76169f8e51dd5a87a
3
+ metadata.gz: 816c658af1a3631341c32bc6de8c315c9630dabc514f2afaafce3e5d2a08c4c5
4
+ data.tar.gz: 91eb4d147fdda1bd77860ed0ee7cf407baec1882fd56075a5092850663eaec14
5
5
  SHA512:
6
- metadata.gz: 0eefb3cffa6fe189951d47c978ae6a728fb5919a0f9eaaef62bedea886721379c470d81f9c0c57f4e5b87a0b6b14f31693a74e98c3a2fd016ea8364bed76b8b6
7
- data.tar.gz: 7415cb6326ec3cbd80de5b34a068acffc1220f4e2c9def4b6e230adc660cf1ad8486e2febe92e1e5e0ea7eea6467622fdd26eba2a2f2e4d1a9d3361ba3674fde
6
+ metadata.gz: 76945af6f21860703b3c0e5f0e78bb24d9411698fd6bc98576e03eadd2bc5d86e60600539ee081f26003431e06d35d5fde4f47b604b4880974a401954da914b1
7
+ data.tar.gz: 60a05bd402183c8797523df22d8f3c947f650f059ec18ad2a02420639c821224d007b6f2eaf57696ca0776aec359d2e6265be1591f77c38f43338ddcbadb8714
data/README.md CHANGED
@@ -47,58 +47,96 @@ showing bottom (worst) 15 of 69 files
47
47
 
48
48
  ## Configuration
49
49
 
50
- ### Disabling colorized output
50
+ simplecov-console is configurable through environment variables and/or via Ruby
51
+ code, generally in your test helper or setup file.
51
52
 
52
- Simply export `NO_COLOR=1` and colors will be disabled.
53
+ ### Options
54
+
55
+ ```ruby
56
+ SimpleCov::Formatter::Console.sort = 'path' # sort by file path
57
+ SimpleCov::Formatter::Console.show_covered = true # show all files in coverage report
58
+ SimpleCov::Formatter::Console.max_rows = 15 # integer
59
+ SimpleCov::Formatter::Console.max_lines = 5 # integer
60
+ SimpleCov::Formatter::Console.missing_len = 20 # integer
61
+ SimpleCov::Formatter::Console.output_style = 'block' # 'table' (default) or 'block'
62
+ SimpleCov::Formatter::Console.table_options = {:style => {:width => 200}}
63
+ ```
64
+
65
+ Note that all options except `table_options` can also be set via env var using
66
+ the uppercase name, e.g., `MAX_ROWS`.
67
+
68
+ #### Disabling colorized output
69
+
70
+ Color support is active by default. To disable, export `NO_COLOR=1`:
53
71
 
54
72
  ```sh
55
73
  NO_COLOR=1 rake test
56
74
  ```
57
75
 
58
- ### Sorting the output
76
+ #### Sorting the output
59
77
 
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:
78
+ By default the coverage report sorts by coverage % in descending order. To
79
+ sort alphabetically by path:
61
80
 
62
81
  ```ruby
63
82
  SimpleCov::Formatter::Console.sort = 'path' # sort by file path
64
83
  ```
65
84
 
66
- ### Showing covered files
85
+ #### Showing covered files
67
86
 
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:
87
+ By default, fully covered files are excluded from the report. To include them:
69
88
 
70
89
  ```ruby
71
90
  SimpleCov::Formatter::Console.show_covered = true # show all files in coverage report
72
91
  ```
73
92
 
74
- ### Maximum rows displayed
93
+ #### Maximum rows displayed
75
94
 
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:
95
+ By default, a maximum of 15 files with the worst coverage are displayed in the
96
+ report. To override this limit:
77
97
 
78
98
  ```ruby
79
- SimpleCov::Formatter::Console.max_rows = # some number
99
+ SimpleCov::Formatter::Console.max_rows = 20 # integer
80
100
  ```
81
101
 
82
- Setting a value of `-1` or `nil` will show all of the files.
102
+ Setting a value of `-1` or `nil` (in Ruby) will show all files.
83
103
 
84
- ### Table options
104
+ #### Maximum lines displayed
85
105
 
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:
106
+ By default, all missing lines will be included for each displayed file. For
107
+ large source files with poor coverage, this may become unwieldy. To show fewer
108
+ groups of lines:
109
+
110
+ ```ruby
111
+ SimpleCov::Formatter::Console.max_lines = 5 # integer
112
+ ```
113
+
114
+ #### Maximum length of missing lines
115
+
116
+ As an alternative to the above `max_lines` option, you may limit the missing
117
+ lines output by number of characters:
118
+
119
+ ```ruby
120
+ SimpleCov::Formatter::Console.missing_len = 20 # integer
121
+ ```
122
+
123
+ #### Table options
124
+
125
+ In some cases, you may need to pass some options to `TerminalTable.new`. For
126
+ example, if the filenames truncate so much that you can't read them, try
127
+ increasing the table width:
88
128
 
89
129
  ```ruby
90
130
  SimpleCov::Formatter::Console.table_options = {:style => {:width => 200}}
91
- SimpleCov.formatter = SimpleCov::Formatter::Console
92
131
  ```
93
132
 
94
- ### Block output style
133
+ #### Block output style
95
134
 
96
- As an alternative to the default table output format, results can be printed as plain text blocks instead by setting
97
- the formatter `output_style` to 'block':
135
+ As an alternative to the default table output format, a simpler block format is
136
+ also available:
98
137
 
99
138
  ```ruby
100
139
  SimpleCov::Formatter::Console.output_style = 'block'
101
- SimpleCov.formatter = SimpleCov::Formatter::Console
102
140
  ```
103
141
 
104
142
  Example output:
@@ -133,7 +171,9 @@ coverage: 44.00% (28/50 lines)
133
171
 
134
172
  ### Branch Coverage Support
135
173
 
136
- When branch coverage is [enabled in simplecov](https://github.com/simplecov-ruby/simplecov/tree/818bc2547842a90c607b4fec834320766a8686de#branch-coverage-ruby--25), branch info will automatically be displayed in the output:
174
+ When branch coverage is [enabled in
175
+ simplecov](https://github.com/simplecov-ruby/simplecov/tree/818bc2547842a90c607b4fec834320766a8686de#branch-coverage-ruby--25),
176
+ branch info will automatically be displayed in the output:
137
177
 
138
178
  ```text
139
179
  COVERAGE: 78.26% -- 18/23 lines in 2 files
@@ -148,6 +188,10 @@ BRANCH COVERAGE: 83.33% -- 5/6 branches in 2 branches
148
188
 
149
189
  ## History
150
190
 
191
+ ### 0.9 (2021.01.21)
192
+
193
+ - Added support for limiting number of lines shown
194
+
151
195
  ### 0.8 (2020.11.11)
152
196
 
153
197
  - Added support for branch coverage - thanks [@robotdana!](https://github.com/robotdana) ([#19](https://github.com/chetan/simplecov-console/pull/19))
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.0
1
+ 0.9.0
@@ -4,7 +4,9 @@ class SimpleCov::Formatter::Console
4
4
 
5
5
  VERSION = IO.read(File.expand_path("../../VERSION", __FILE__)).strip
6
6
 
7
- ATTRIBUTES = [:table_options, :use_colors, :max_rows, :show_covered, :sort, :output_style]
7
+ ATTRIBUTES = [:table_options, :use_colors, :max_rows, :max_lines,
8
+ :missing_len, :show_covered, :sort, :output_style]
9
+
8
10
  class << self
9
11
  attr_accessor(*ATTRIBUTES)
10
12
  end
@@ -16,6 +18,10 @@ class SimpleCov::Formatter::Console
16
18
  # configure max rows from MAX_ROWS env var
17
19
  SimpleCov::Formatter::Console.max_rows = ENV.fetch('MAX_ROWS', 15).to_i
18
20
 
21
+ # configure max lines per row and missing len
22
+ SimpleCov::Formatter::Console.max_lines = ENV.fetch('MAX_LINES', 0).to_i
23
+ SimpleCov::Formatter::Console.missing_len = ENV.fetch('MISSING_LEN', 0).to_i
24
+
19
25
  # configure show_covered from SHOW_COVERED env var
20
26
  SimpleCov::Formatter::Console.show_covered = ENV.fetch('SHOW_COVERED', 'false') == 'true'
21
27
 
@@ -77,7 +83,7 @@ class SimpleCov::Formatter::Console
77
83
  files = result.files.sort_by(&:covered_percent)
78
84
  end
79
85
  else
80
- files = result.files
86
+ files = result.files.to_a
81
87
  end
82
88
 
83
89
  covered_files = 0
@@ -117,6 +123,11 @@ class SimpleCov::Formatter::Console
117
123
  end
118
124
  end
119
125
 
126
+ # Group missed lines for better display
127
+ #
128
+ # @param [Array<SimpleCov::SourceFile::Line>] missed array of missed lines reported by SimpleCov
129
+ #
130
+ # @return [Array<String>] Missing groups of lines
120
131
  def missed(missed_lines)
121
132
  groups = {}
122
133
  base = nil
@@ -142,9 +153,25 @@ class SimpleCov::Formatter::Console
142
153
  end
143
154
  end
144
155
 
156
+ if SimpleCov::Formatter::Console.max_lines > 0 then
157
+ # show at most N missing groups of lines
158
+ group_str = group_str[0, SimpleCov::Formatter::Console.max_lines] << "..."
159
+ end
160
+
145
161
  group_str
146
162
  end
147
163
 
164
+ # Truncate string to at most N chars (as defined by missing_len)
165
+ def trunc(str)
166
+ return str if str.include?("...") # already truncated, skip
167
+
168
+ len = SimpleCov::Formatter::Console.missing_len
169
+ if len > 0 && str.size > len then
170
+ str = str[0, len].gsub(/,(\s+)?$/, '') + ' ...'
171
+ end
172
+ str
173
+ end
174
+
148
175
  def pct(number)
149
176
  sprintf("%6.2f%%", number)
150
177
  end
@@ -11,7 +11,7 @@ class SimpleCov::Formatter::Console
11
11
  block << sprintf("%8.8s: %s (%d/%d lines)", 'coverage',
12
12
  colorize(sprintf("%.2f%%", f.covered_percent)),
13
13
  f.covered_lines.count, f.lines_of_code)
14
- block << sprintf("%8.8s: %s", 'missed', missed(f.missed_lines).join(", "))
14
+ block << sprintf("%8.8s: %s", 'missed', trunc(missed(f.missed_lines).join(", ")))
15
15
  if show_branch
16
16
  block << sprintf("%8.8s: %s (%d/%d branches)", 'branches',
17
17
  colorize(sprintf("%.2f%%", f.coverage_statistics[:branch].percent)),
@@ -11,7 +11,7 @@ class SimpleCov::Formatter::Console
11
11
  f.filename.gsub(root + "/", ''),
12
12
  f.lines_of_code,
13
13
  f.missed_lines.count,
14
- missed(f.missed_lines).join(", "),
14
+ trunc(missed(f.missed_lines).join(", ")),
15
15
  ]
16
16
  if show_branch
17
17
  row += [
@@ -2,16 +2,16 @@
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.8.0 ruby lib
5
+ # stub: simplecov-console 0.9.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "simplecov-console".freeze
9
- s.version = "0.8.0"
9
+ s.version = "0.9.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Chetan Sarva".freeze]
14
- s.date = "2020-11-11"
14
+ s.date = "2021-01-21"
15
15
  s.description = "Simple console output formatter for SimpleCov".freeze
16
16
  s.email = "chetan@pixelcop.net".freeze
17
17
  s.extra_rdoc_files = [
@@ -40,6 +40,7 @@ class TestSimplecovConsole < MiniTest::Test
40
40
 
41
41
  def teardown
42
42
  SimpleCov::Formatter::Console.output_style = 'table'
43
+ SimpleCov::Formatter::Console.max_lines = 0
43
44
  end
44
45
 
45
46
  def test_defined
@@ -51,7 +52,15 @@ class TestSimplecovConsole < MiniTest::Test
51
52
  missed_lines = [Line.new(1), Line.new(2),
52
53
  Line.new(3), Line.new(5)]
53
54
  expected_result = ["1-3", "5"]
54
- assert_equal @console.missed(missed_lines), expected_result
55
+ assert_equal expected_result, @console.missed(missed_lines)
56
+ end
57
+
58
+ def test_max_missed
59
+ SimpleCov::Formatter::Console.max_lines = 1
60
+ missed_lines = [Line.new(1), Line.new(2),
61
+ Line.new(3), Line.new(5)]
62
+ expected_result = ["1-3", "..."]
63
+ assert_equal expected_result, @console.missed(missed_lines)
55
64
  end
56
65
 
57
66
  def test_table_output
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.8.0
4
+ version: 0.9.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: 2020-11-11 00:00:00.000000000 Z
11
+ date: 2021-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov