simplecov-lcov 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
- SHA1:
3
- metadata.gz: cc8a6e79e2c447469190f8627959b7cc705e7261
4
- data.tar.gz: 7b2d488756eaf1f269b16f91301ad93e343c08a3
2
+ SHA256:
3
+ metadata.gz: a02bb3733cd050cf8c6bb7390937c12a6658cf3d31d824a3a24d5769f0f475d6
4
+ data.tar.gz: 866c5bd282a2ba4727118755795d1da6f812b0b17c3de99276615883b3bcb0c0
5
5
  SHA512:
6
- metadata.gz: 2752794178b5b410f587f5db080fff262dd0fb5d85233518e4bf0f58d9baaaefd1f814f356b7ea8d8db9f00810572b1311c55a32310e463f0d5887372c89a148
7
- data.tar.gz: 0e41a7b80310684bf577d31e2c6ea0685001c5b62de7d60e175c62305b1e533183d4725e7478624316c43dea06af56baf772de988b309fdc0b4680791a9c6639
6
+ metadata.gz: cded646d4f8e1e1a785032ee6d2a796a49e58d55563aee0677276d1f784fcabada077a0790ceda1fd0b569f71618526efa9da6d4165f0c49c49e67a07297acdc
7
+ data.tar.gz: 349765f559c2a6e42a66be7a75d4b20f8ec8613114e338f3bb749bf1b2eec52f9e6d0ebfb6af18515e43e3c7a0af82aed9becba0241119b1beeed09762f77c1e
@@ -1,7 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - ruby-2.2.8
4
- - ruby-2.3.5
5
3
  - ruby-2.4.2
6
4
  - ruby-2.5.0
7
5
  - ruby-head
data/Gemfile CHANGED
@@ -8,9 +8,9 @@ source 'http://rubygems.org'
8
8
  group :development do
9
9
  gem 'rspec'
10
10
  gem 'rdoc'
11
+ gem 'rake'
11
12
  gem 'bundler'
12
- gem 'jeweler', '~> 2.3.0'
13
- gem 'simplecov'
13
+ gem 'simplecov', '~> 0.18'
14
14
  gem 'coveralls', require: false
15
15
  gem 'activesupport'
16
16
  end
@@ -7,9 +7,7 @@ Custom SimpleCov formatter to generate a lcov style coverage.
7
7
  [![Gem Version](https://badge.fury.io/rb/simplecov-lcov.svg)](http://badge.fury.io/rb/simplecov-lcov)
8
8
  [![Inline docs](http://inch-ci.org/github/fortissimo1997/simplecov-lcov.svg?branch=master)](http://inch-ci.org/github/fortissimo1997/simplecov-lcov)
9
9
  [![Code Climate](https://codeclimate.com/github/fortissimo1997/simplecov-lcov.png)](https://codeclimate.com/github/fortissimo1997/simplecov-lcov)
10
- [![Dependency Status](https://gemnasium.com/fortissimo1997/simplecov-lcov.svg)](https://gemnasium.com/fortissimo1997/simplecov-lcov)
11
10
  [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/fortissimo1997/simplecov-lcov/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/fortissimo1997/simplecov-lcov/?branch=master)
12
- [![simplecov-lcov API Documentation](https://www.omniref.com/ruby/gems/simplecov-lcov.png)](https://www.omniref.com/ruby/gems/simplecov-lcov)
13
11
 
14
12
  ## Usage
15
13
 
data/Rakefile CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'bundler'
5
+ require 'bundler/gem_tasks'
5
6
  begin
6
7
  Bundler.setup(:default, :development)
7
8
  rescue Bundler::BundlerError => e
@@ -11,20 +12,6 @@ rescue Bundler::BundlerError => e
11
12
  end
12
13
  require 'rake'
13
14
 
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
- gem.name = 'simplecov-lcov'
18
- gem.homepage = 'http://github.com/fortissimo1997/simplecov-lcov'
19
- gem.license = 'MIT'
20
- gem.summary = %Q{Custom SimpleCov formatter to generate a lcov style coverage.}
21
- gem.description = %Q{Custom SimpleCov formatter to generate a lcov style coverage.}
22
- gem.email = 'fortissimo1997@gmail.com'
23
- gem.authors = ['fortissimo1997']
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
28
15
  require 'rspec/core'
29
16
  require 'rspec/core/rake_task'
30
17
  RSpec::Core::RakeTask.new(:spec) do |spec|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 0.8.0
@@ -83,7 +83,29 @@ module SimpleCov
83
83
 
84
84
  def format_file(file)
85
85
  filename = file.filename.gsub("#{SimpleCov.root}/", './')
86
- "SF:#{filename}\n#{format_lines(file)}\nend_of_record\n"
86
+ pieces = []
87
+ pieces << "SF:#{filename}"
88
+ pieces << format_lines(file)
89
+
90
+ if SimpleCov.branch_coverage?
91
+ branch_data = format_branches(file)
92
+ pieces << branch_data if branch_data.length > 0
93
+ pieces << "BRF:#{file.total_branches.length}"
94
+ pieces << "BRH:#{file.covered_branches.length}"
95
+ end
96
+ pieces << "end_of_record"
97
+ pieces << ""
98
+ pieces.join("\n")
99
+ end
100
+
101
+ def format_branches(file)
102
+ branch_idx = 0
103
+ filtered_branches(file)
104
+ .map do |branch|
105
+ branch_idx += 1
106
+ format_branch(branch, branch_idx)
107
+ end
108
+ .join("\n")
87
109
  end
88
110
 
89
111
  def format_lines(file)
@@ -96,6 +118,15 @@ module SimpleCov
96
118
  file.lines.reject(&:never?).reject(&:skipped?)
97
119
  end
98
120
 
121
+ def filtered_branches(file)
122
+ file.branches.reject(&:skipped?)
123
+ end
124
+
125
+ def format_branch(branch, branch_idx)
126
+ taken = branch.coverage == 0 ? '-' : branch.coverage
127
+ "BRDA:#{branch.report_line},0,#{branch_idx},#{taken}"
128
+ end
129
+
99
130
  def format_line(line)
100
131
  "DA:#{line.number},#{line.coverage}"
101
132
  end
@@ -1,17 +1,14 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
5
2
  # stub: simplecov-lcov 0.7.0 ruby lib
6
3
 
7
4
  Gem::Specification.new do |s|
8
5
  s.name = "simplecov-lcov".freeze
9
- s.version = "0.7.0"
6
+ s.version = "0.8.0"
10
7
 
11
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
9
  s.require_paths = ["lib".freeze]
13
10
  s.authors = ["fortissimo1997".freeze]
14
- s.date = "2018-02-10"
11
+ s.date = "2020-02-18"
15
12
  s.description = "Custom SimpleCov formatter to generate a lcov style coverage.".freeze
16
13
  s.email = "fortissimo1997@gmail.com".freeze
17
14
  s.extra_rdoc_files = [
@@ -35,14 +32,16 @@ Gem::Specification.new do |s|
35
32
  "spec/configuration_spec.rb",
36
33
  "spec/fixtures/app/models/user.rb",
37
34
  "spec/fixtures/hoge.rb",
35
+ "spec/fixtures/lcov/spec-fixtures-app-models-user.rb.branch.lcov",
38
36
  "spec/fixtures/lcov/spec-fixtures-app-models-user.rb.lcov",
37
+ "spec/fixtures/lcov/spec-fixtures-hoge.rb.branch.lcov",
39
38
  "spec/fixtures/lcov/spec-fixtures-hoge.rb.lcov",
40
39
  "spec/simplecov-lcov_spec.rb",
41
40
  "spec/spec_helper.rb"
42
41
  ]
43
42
  s.homepage = "http://github.com/fortissimo1997/simplecov-lcov".freeze
44
43
  s.licenses = ["MIT".freeze]
45
- s.rubygems_version = "2.6.11".freeze
44
+ s.rubygems_version = "3.0.3".freeze
46
45
  s.summary = "Custom SimpleCov formatter to generate a lcov style coverage.".freeze
47
46
 
48
47
  if s.respond_to? :specification_version then
@@ -52,16 +51,16 @@ Gem::Specification.new do |s|
52
51
  s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
53
52
  s.add_development_dependency(%q<rdoc>.freeze, [">= 0"])
54
53
  s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
55
- s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
56
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
54
+ s.add_development_dependency(%q<rake>.freeze, [">= 0"])
55
+ s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.18"])
57
56
  s.add_development_dependency(%q<coveralls>.freeze, [">= 0"])
58
57
  s.add_development_dependency(%q<activesupport>.freeze, [">= 0"])
59
58
  else
60
59
  s.add_dependency(%q<rspec>.freeze, [">= 0"])
61
60
  s.add_dependency(%q<rdoc>.freeze, [">= 0"])
62
61
  s.add_dependency(%q<bundler>.freeze, [">= 0"])
63
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
64
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
62
+ s.add_dependency(%q<rake>.freeze, [">= 0"])
63
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.18"])
65
64
  s.add_dependency(%q<coveralls>.freeze, [">= 0"])
66
65
  s.add_dependency(%q<activesupport>.freeze, [">= 0"])
67
66
  end
@@ -69,8 +68,8 @@ Gem::Specification.new do |s|
69
68
  s.add_dependency(%q<rspec>.freeze, [">= 0"])
70
69
  s.add_dependency(%q<rdoc>.freeze, [">= 0"])
71
70
  s.add_dependency(%q<bundler>.freeze, [">= 0"])
72
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
73
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
71
+ s.add_dependency(%q<rake>.freeze, [">= 0"])
72
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.18"])
74
73
  s.add_dependency(%q<coveralls>.freeze, [">= 0"])
75
74
  s.add_dependency(%q<activesupport>.freeze, [">= 0"])
76
75
  end
@@ -7,10 +7,19 @@ class User
7
7
  end
8
8
 
9
9
  def bar
10
- puts 'bar'
10
+ @a = 'bar'
11
11
  end
12
12
 
13
13
  def baz(b)
14
- puts b
14
+ @a = b
15
+ end
16
+
17
+ def uncovered
18
+ @a = 'baz'
15
19
  end
16
20
  end
21
+
22
+ User.new.foo
23
+ User.new.foo
24
+ User.new.bar
25
+ User.new.baz 'hello'
@@ -7,6 +7,14 @@ class Hoge
7
7
  end
8
8
 
9
9
  def bar
10
- puts 'bar'
10
+ @a = 0.9 > 0.5 ? 'foo' : 'not foo'
11
+ @a = 'bar'
12
+ end
13
+
14
+ def uncovered
15
+ @a = 'baz'
11
16
  end
12
17
  end
18
+
19
+ Hoge.new(1)
20
+ Hoge.new(2).bar
@@ -0,0 +1,17 @@
1
+ SF:./spec/fixtures/app/models/user.rb
2
+ DA:4,1
3
+ DA:5,1
4
+ DA:6,2
5
+ DA:9,1
6
+ DA:10,1
7
+ DA:13,1
8
+ DA:14,1
9
+ DA:17,1
10
+ DA:18,0
11
+ DA:22,1
12
+ DA:23,1
13
+ DA:24,1
14
+ DA:25,1
15
+ BRF:0
16
+ BRH:0
17
+ end_of_record
@@ -1,13 +1,15 @@
1
1
  SF:./spec/fixtures/app/models/user.rb
2
- DA:4,2
3
- DA:5,2
2
+ DA:4,1
3
+ DA:5,1
4
4
  DA:6,2
5
- DA:7,2
6
- DA:9,0
7
- DA:10,0
8
- DA:11,0
5
+ DA:9,1
6
+ DA:10,1
9
7
  DA:13,1
10
- DA:14,0
11
- DA:15,0
12
- DA:16,1
8
+ DA:14,1
9
+ DA:17,1
10
+ DA:18,0
11
+ DA:22,1
12
+ DA:23,1
13
+ DA:24,1
14
+ DA:25,1
13
15
  end_of_record
@@ -0,0 +1,16 @@
1
+ SF:./spec/fixtures/hoge.rb
2
+ DA:4,1
3
+ DA:5,1
4
+ DA:6,2
5
+ DA:9,1
6
+ DA:10,1
7
+ DA:11,1
8
+ DA:14,1
9
+ DA:15,0
10
+ DA:19,1
11
+ DA:20,1
12
+ BRDA:10,0,1,1
13
+ BRDA:10,0,2,-
14
+ BRF:2
15
+ BRH:1
16
+ end_of_record
@@ -1,10 +1,12 @@
1
1
  SF:./spec/fixtures/hoge.rb
2
2
  DA:4,1
3
- DA:5,2
3
+ DA:5,1
4
4
  DA:6,2
5
- DA:7,1
6
- DA:9,0
7
- DA:10,0
8
- DA:11,0
9
- DA:12,1
5
+ DA:9,1
6
+ DA:10,1
7
+ DA:11,1
8
+ DA:14,1
9
+ DA:15,0
10
+ DA:19,1
11
+ DA:20,1
10
12
  end_of_record
@@ -3,23 +3,20 @@ require 'active_support/core_ext/kernel/reporting'
3
3
 
4
4
  module SimpleCov::Formatter
5
5
  describe LcovFormatter do
6
- describe '#format' do
7
- let(:expand_path) {
8
- lambda do |filename|
9
- File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', filename))
10
- end
11
- }
6
+ let(:branch_coverage_enabled) { false }
7
+ before do
8
+ SimpleCov.clear_coverage_criteria
9
+ SimpleCov.enable_coverage :branch if branch_coverage_enabled
10
+ ENV['COVERAGE'] && SimpleCov.start do
11
+ add_filter '/.rvm/'
12
+ end
12
13
 
13
- let(:simplecov_result_hash) {
14
- {
15
- expand_path.call('hoge.rb') => [nil, nil, nil, 1, 2, 2, 1, nil, 0, 0, 0, 1],
16
- expand_path.call('app/models/user.rb') => [nil, nil, nil, 2, 2, 2, 2, nil, 0, 0, 0, nil, 1, 0, 0, 1]
17
- }
18
- }
14
+ load 'fixtures/app/models/user.rb'
15
+ load 'fixtures/hoge.rb'
16
+ end
19
17
 
20
- let(:simplecov_result) {
21
- SimpleCov::Result.new(simplecov_result_hash)
22
- }
18
+ describe '#format' do
19
+ let(:simplecov_result) { SimpleCov.result }
23
20
 
24
21
  context 'generating report per file' do
25
22
  before {
@@ -50,6 +47,32 @@ module SimpleCov::Formatter
50
47
  }
51
48
  it { expect(File.read(output_path)).to eq(fixture) }
52
49
  end
50
+
51
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.5")
52
+ describe 'branch coverage enabled' do
53
+ let(:branch_coverage_enabled) { true }
54
+
55
+ describe 'spec-fixtures-hoge.rb.branch.lcov' do
56
+ let(:output_path) {
57
+ File.join(LcovFormatter.config.output_directory, 'spec-fixtures-hoge.rb.lcov')
58
+ }
59
+ let(:fixture) {
60
+ File.read("#{File.dirname(__FILE__)}/fixtures/lcov/spec-fixtures-hoge.rb.branch.lcov")
61
+ }
62
+ it { expect(File.read(output_path)).to eq(fixture) }
63
+ end
64
+
65
+ describe 'spec-fixtures-app-models-user.rb.branch.lcov' do
66
+ let(:output_path) {
67
+ File.join(LcovFormatter.config.output_directory, 'spec-fixtures-app-models-user.rb.lcov')
68
+ }
69
+ let(:fixture) {
70
+ File.read("#{File.dirname(__FILE__)}/fixtures/lcov/spec-fixtures-app-models-user.rb.branch.lcov")
71
+ }
72
+ it { expect(File.read(output_path)).to eq(fixture) }
73
+ end
74
+ end
75
+ end
53
76
  end
54
77
 
55
78
  context 'generating single file report' do
@@ -17,9 +17,6 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
17
17
  Coveralls::SimpleCov::Formatter
18
18
  ])
19
19
 
20
- ENV['COVERAGE'] && SimpleCov.start do
21
- add_filter '/.rvm/'
22
- end
23
20
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
24
21
  $LOAD_PATH.unshift(File.dirname(__FILE__))
25
22
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov-lcov
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
  - fortissimo1997
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-10 00:00:00.000000000 Z
11
+ date: 2020-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -53,33 +53,33 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: jeweler
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 2.3.0
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 2.3.0
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '0.18'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '0.18'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: coveralls
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -132,7 +132,9 @@ files:
132
132
  - spec/configuration_spec.rb
133
133
  - spec/fixtures/app/models/user.rb
134
134
  - spec/fixtures/hoge.rb
135
+ - spec/fixtures/lcov/spec-fixtures-app-models-user.rb.branch.lcov
135
136
  - spec/fixtures/lcov/spec-fixtures-app-models-user.rb.lcov
137
+ - spec/fixtures/lcov/spec-fixtures-hoge.rb.branch.lcov
136
138
  - spec/fixtures/lcov/spec-fixtures-hoge.rb.lcov
137
139
  - spec/simplecov-lcov_spec.rb
138
140
  - spec/spec_helper.rb
@@ -155,8 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
157
  - !ruby/object:Gem::Version
156
158
  version: '0'
157
159
  requirements: []
158
- rubyforge_project:
159
- rubygems_version: 2.6.11
160
+ rubygems_version: 3.1.2
160
161
  signing_key:
161
162
  specification_version: 4
162
163
  summary: Custom SimpleCov formatter to generate a lcov style coverage.