simplecov-lcov 0.7.0 → 0.8.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
- 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.