single_cov 0.7.0 → 0.8.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
  SHA1:
3
- metadata.gz: 7834a79c1226437c3b1da59799ac89d0f00a1a8d
4
- data.tar.gz: f458e6175feba9720a0c260552339b503bc7cbd2
3
+ metadata.gz: 5ff56ca222179db97c40135c3a77650bdb0e50d1
4
+ data.tar.gz: b5f22da478910a07fbefe85a0beec998ebea7838
5
5
  SHA512:
6
- metadata.gz: 0d152668983b6f7d1bad2e6f9a630fc47e71be701f37d1aa4c42a07c7fce0118ae06e4672cea695d68e49f588dad07db5a413666739453f543cb6afecf1631ae
7
- data.tar.gz: 4358e509409719d8f7faed8e41574edcc2bf7288452ff5416ba9bbca741f54f94ebe2ddc2e533cb4711d1fb9a2a5b3e566edae444aff2efcf3098a5bbe38b4d8
6
+ metadata.gz: f0abece5122f6edfa54926df42c59c6fea6e015fd6771a3f73a0dcc1633bf67785fed005578df3dc6e0e1db88c43b3c2fe39c0cebe3ffe9265a685c3560e0372
7
+ data.tar.gz: e42f89fd4233535a7b9fe6efe6d2a111bab0b6cf13987c25ea19bba559f0ce29f554a9b06d8f1a5b25e2e56f8479fd598a85b207b5ea6278dd5b34f03072664e
@@ -1,3 +1,3 @@
1
1
  module SingleCov
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
data/lib/single_cov.rb CHANGED
@@ -20,7 +20,13 @@ module SingleCov
20
20
  def all_covered?(result)
21
21
  errors = COVERAGES.map do |file, expected_uncovered|
22
22
  if coverage = result["#{root}/#{file}"]
23
- uncovered_lines = coverage.each_with_index.map { |c, i| "#{file}:#{i+1}" if c == 0 }.compact
23
+ lines = (coverage.is_a?(Hash) ? coverage.fetch(:lines) : coverage)
24
+ uncovered_lines = line_coverage(file, lines)
25
+
26
+ if branches = (coverage.is_a?(Hash) && coverage[:branches])
27
+ uncovered_lines += branch_coverage(file, branches)
28
+ end
29
+
24
30
  next if uncovered_lines.size == expected_uncovered
25
31
  warn_about_bad_coverage(file, expected_uncovered, uncovered_lines)
26
32
  else
@@ -58,10 +64,16 @@ module SingleCov
58
64
  end
59
65
  end
60
66
 
61
- def setup(framework, root: nil)
67
+ def setup(framework, root: nil, branches: false)
62
68
  if defined?(SimpleCov)
63
69
  raise "Load SimpleCov after SingleCov"
64
70
  end
71
+ if branches && RUBY_VERSION < "2.5.0"
72
+ warn "Branch coverage needs ruby 2.5.0"
73
+ @branches = false
74
+ else
75
+ @branches = branches
76
+ end
65
77
 
66
78
  @root = root if root
67
79
 
@@ -89,6 +101,16 @@ module SingleCov
89
101
 
90
102
  private
91
103
 
104
+ def line_coverage(file, coverage)
105
+ coverage.each_with_index.map { |c, i| "#{file}:#{i + 1}" if c == 0 }.compact
106
+ end
107
+
108
+ def branch_coverage(file, coverage)
109
+ coverage.each_value.flat_map do |branch_part|
110
+ branch_part.select { |_k, v| v == 0 }.map { |k, _| "#{file}:#{k[2]}:#{k[3]+1}-#{k[4]}:#{k[5]+1}" }
111
+ end
112
+ end
113
+
92
114
  def default_tests
93
115
  glob("{test,spec}/**/*_{test,spec}.rb")
94
116
  end
@@ -110,7 +132,11 @@ module SingleCov
110
132
  # SimpleCov might start coverage again, but that does not hurt ...
111
133
  def start_coverage_recording
112
134
  require 'coverage'
113
- Coverage.start
135
+ if @branches
136
+ Coverage.start(lines: true, branches: true)
137
+ else
138
+ Coverage.start
139
+ end
114
140
  end
115
141
 
116
142
  # not running rake or a whole folder
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: single_cov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-29 00:00:00.000000000 Z
11
+ date: 2018-02-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: michael@grosser.it
@@ -39,7 +39,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
39
  version: '0'
40
40
  requirements: []
41
41
  rubyforge_project:
42
- rubygems_version: 2.5.1
42
+ rubygems_version: 2.6.14
43
43
  signing_key:
44
44
  specification_version: 4
45
45
  summary: Actionable code coverage.