simplecov-console 0.6.0 → 0.7.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: bf41260176ece548059c1fff6db115552f4ff1a6655ab63575e488dfc2318739
4
- data.tar.gz: 404ddb9d0b0a6f023046fdf7f52ab4accd496cc759f37c696d22c73df9a5d194
3
+ metadata.gz: 598ac9ff4a2aab65354e06424d3e33647cb2ffc94acef55e41c06dacc770b4cc
4
+ data.tar.gz: de3d31bc67c9e295710911f0c8d0fdc1edd23c1784c48416bcaf481c3b58095b
5
5
  SHA512:
6
- metadata.gz: 2e66ac79cbdf147451f2d6cb27666cd9b9a9cafc4c440adf6cc5975af38423f850260ffd3c40410a59e10ebc33b2e23438255c196ae1412a84647d10fb5350a0
7
- data.tar.gz: 0c9e6517b4a51a435c02f2a3e96def76c7d9bf0724f725a679555a67f90b2fce7c788d0ebb464217458c48e91559e8a92837c164b91139769b6f55f93a7d3ae5
6
+ metadata.gz: 404d96b20f0dfb5abf1b1004738fdaa1675514f780f5bca0e89396feecdd9a2c1ed8032cecf2810b15ed3abc442a75b617f9c476c4bd8831bf32e7d725169c42
7
+ data.tar.gz: 57d40a7ddb72a87e1f561209f67021cf49f5bd4ed016da026c15ebae43aaea16594a3e21069cc894a4fd3f36066380e55fe42096d41b56743b1f69dc28174a88
data/README.md CHANGED
@@ -91,8 +91,52 @@ SimpleCov::Formatter::Console.table_options = {:style => {:width => 200}}
91
91
  SimpleCov.formatter = SimpleCov::Formatter::Console
92
92
  ```
93
93
 
94
+ ### Block output style
95
+
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':
98
+
99
+ ```ruby
100
+ SimpleCov::Formatter::Console.output_style = 'block'
101
+ SimpleCov.formatter = SimpleCov::Formatter::Console
102
+ ```
103
+
104
+ Example output:
105
+
106
+ ```text
107
+ COVERAGE: 82.34% -- 2345/2848 lines in 111 files
108
+
109
+ showing bottom (worst) 5 of 69 files
110
+
111
+ file: lib/bixby/api/websocket_server.rb
112
+ coverage: 22.73% (17/22 lines)
113
+ missed: 11, 14, 17-18, 20-22, 24, 28-30, 32, 36-...
114
+
115
+ file: app/models/role.rb
116
+ coverage: 30.77% (9/13 lines)
117
+ missed: 28-34, 36-37
118
+
119
+ file: lib/bixby/modules/metrics/rescan.rb
120
+ coverage: 32.14% (19/28 lines)
121
+ missed: 19-23, 27-31, 33-37, 39-41, 43
122
+
123
+ file: lib/archie/mail.rb
124
+ coverage: 42.86% (8/14 lines)
125
+ missed: 6-8, 12-15, 22
126
+
127
+ file: lib/archie/controller.rb
128
+ coverage: 44.00% (28/50 lines)
129
+ missed: 18-21, 23, 27-30, 32, 38-40, 44-45, 48-4...
130
+
131
+ 42 file(s) with 100% coverage not shown
132
+ ```
133
+
94
134
  ## History
95
135
 
136
+ ### 0.7 (2020.03.04)
137
+
138
+ - Added new 'block' style output option - thanks [@hpainter](https://github.com/hpainter)! ([#15](https://github.com/chetan/simplecov-console/issues/15))
139
+
96
140
  ### 0.6 (2019.11.08)
97
141
 
98
142
  - Added new config options: `sort`, `show_covered`, and `max_rows`
@@ -114,5 +158,5 @@ SimpleCov.formatter = SimpleCov::Formatter::Console
114
158
 
115
159
  ### Copyright
116
160
 
117
- Copyright (c) 2019 Chetan Sarva. See LICENSE.txt for
161
+ Copyright (c) 2020 Chetan Sarva. See LICENSE.txt for
118
162
  further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
@@ -5,7 +5,7 @@ class SimpleCov::Formatter::Console
5
5
 
6
6
  VERSION = IO.read(File.expand_path("../../VERSION", __FILE__)).strip
7
7
 
8
- ATTRIBUTES = [:table_options, :use_colors, :max_rows, :show_covered, :sort]
8
+ ATTRIBUTES = [:table_options, :use_colors, :max_rows, :show_covered, :sort, :output_style]
9
9
  class << self
10
10
  attr_accessor(*ATTRIBUTES)
11
11
  end
@@ -23,6 +23,9 @@ class SimpleCov::Formatter::Console
23
23
  # configure sort from SORT env var
24
24
  SimpleCov::Formatter::Console.sort = ENV.fetch('SORT', 'coverage')
25
25
 
26
+ # configure output format ('table', 'block')
27
+ SimpleCov::Formatter::Console.output_style = ENV.fetch('OUTPUT_STYLE', 'table')
28
+
26
29
  def format(result)
27
30
 
28
31
  root = nil
@@ -66,33 +69,15 @@ class SimpleCov::Formatter::Console
66
69
  end
67
70
  end
68
71
 
69
- table = files.map do |f|
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
- ]
77
- end
78
-
79
72
  max_rows = SimpleCov::Formatter::Console.max_rows
80
73
 
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)
74
+ if ![-1, nil].include?(max_rows) && files.size > max_rows then
75
+ puts "showing bottom (worst) #{max_rows} of #{files.size} files"
76
+ files = files.slice(0, max_rows)
84
77
  end
85
78
 
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
95
-
79
+ puts send(SimpleCov::Formatter::Console.output_style << "_output",files,root)
80
+
96
81
  if covered_files > 0 then
97
82
  puts "#{covered_files} file(s) with 100% coverage not shown"
98
83
  end
@@ -149,4 +134,42 @@ class SimpleCov::Formatter::Console
149
134
  end
150
135
  end
151
136
 
137
+ # format per-file results output using Terminal::Table
138
+ def table_output(files, root)
139
+ table = files.map do |f|
140
+ [
141
+ colorize(pct(f)),
142
+ f.filename.gsub(root + "/", ''),
143
+ f.lines_of_code,
144
+ f.missed_lines.count,
145
+ missed(f.missed_lines).join(", ")
146
+ ]
147
+ end
148
+
149
+ table_options = SimpleCov::Formatter::Console.table_options || {}
150
+ if !table_options.kind_of?(Hash) then
151
+ raise ArgumentError.new("SimpleCov::Formatter::Console.table_options must be a Hash")
152
+ end
153
+
154
+ headings = %w{ coverage file lines missed missing }
155
+
156
+ opts = table_options.merge({:headings => headings, :rows => table})
157
+ Terminal::Table.new(opts)
158
+ end
159
+
160
+ # format per-file results output as plain text blocks
161
+ def block_output(files, root)
162
+ blocks = []
163
+ files.each do |f|
164
+ block = []
165
+ block << sprintf("%8.8s: %s", 'file', f.filename.gsub(root + "/", ''))
166
+ block << sprintf("%8.8s: %s (%d/%d lines)", 'coverage',
167
+ colorize(sprintf("%.2f%%", f.covered_percent)),
168
+ f.covered_lines.count, f.lines_of_code)
169
+ block << sprintf("%8.8s: %s", 'missed', missed(f.missed_lines).join(", "))
170
+ blocks << block.join("\n")
171
+ end
172
+ "\n" << blocks.join("\n\n") << "\n\n"
173
+ end
174
+
152
175
  end
@@ -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.6.0 ruby lib
5
+ # stub: simplecov-console 0.7.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "simplecov-console".freeze
9
- s.version = "0.6.0"
9
+ s.version = "0.7.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 = "2019-11-08"
14
+ s.date = "2020-03-03"
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 = [
@@ -2,7 +2,17 @@ require 'helper'
2
2
 
3
3
  class TestSimplecovConsole < MiniTest::Test
4
4
 
5
- Source = Struct.new(:line_number)
5
+ # mock for SimpleCov::SourceFile::Line
6
+ Line = Struct.new(:line_number)
7
+
8
+ # mock for SimpleCov::SourceFile
9
+ SourceFile = Struct.new(
10
+ :filename,
11
+ :lines_of_code,
12
+ :covered_lines,
13
+ :missed_lines,
14
+ :covered_percent
15
+ )
6
16
 
7
17
  def setup
8
18
  @console = SimpleCov::Formatter::Console.new
@@ -14,9 +24,29 @@ class TestSimplecovConsole < MiniTest::Test
14
24
  end
15
25
 
16
26
  def test_missed
17
- missed_lines = [Source.new(1), Source.new(2),
18
- Source.new(3), Source.new(5)]
27
+ missed_lines = [Line.new(1), Line.new(2),
28
+ Line.new(3), Line.new(5)]
19
29
  expected_result = ["1-3", "5"]
20
30
  assert_equal @console.missed(missed_lines), expected_result
21
31
  end
32
+
33
+ def test_table_output
34
+ SimpleCov::Formatter::Console.output_style = 'table'
35
+ files = [
36
+ SourceFile.new('foo.rb',5,[2,3],[Line.new(1), Line.new(4), Line.new(5)],40.0)
37
+ ]
38
+ actual = @console.table_output(files,'/')
39
+ assert actual.is_a? Terminal::Table
40
+ assert_equal 1, actual.rows.count
41
+ end
42
+
43
+ def test_block_output
44
+ SimpleCov::Formatter::Console.use_colors = false
45
+ SimpleCov::Formatter::Console.output_style = 'block'
46
+ files = [
47
+ SourceFile.new('foo.rb',5,[2,3],[Line.new(1), Line.new(4), Line.new(5)],40.0)
48
+ ]
49
+ expected = "\n file: foo.rb\ncoverage: 40.00% (2/5 lines)\n missed: 1, 4-5\n\n"
50
+ assert_equal expected, @console.block_output(files,'/')
51
+ end
22
52
  end
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.6.0
4
+ version: 0.7.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: 2019-11-08 00:00:00.000000000 Z
11
+ date: 2020-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov