simplecov 0.16.1 → 0.21.2

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.
Files changed (50) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +107 -407
  3. data/README.md +378 -126
  4. data/doc/alternate-formatters.md +21 -1
  5. data/doc/commercial-services.md +5 -0
  6. data/lib/minitest/simplecov_plugin.rb +15 -0
  7. data/lib/simplecov/combine/branches_combiner.rb +32 -0
  8. data/lib/simplecov/combine/files_combiner.rb +24 -0
  9. data/lib/simplecov/combine/lines_combiner.rb +43 -0
  10. data/lib/simplecov/combine/results_combiner.rb +60 -0
  11. data/lib/simplecov/combine.rb +30 -0
  12. data/lib/simplecov/command_guesser.rb +6 -3
  13. data/lib/simplecov/configuration.rb +191 -15
  14. data/lib/simplecov/coverage_statistics.rb +56 -0
  15. data/lib/simplecov/default_formatter.rb +20 -0
  16. data/lib/simplecov/defaults.rb +15 -12
  17. data/lib/simplecov/exit_codes/exit_code_handling.rb +29 -0
  18. data/lib/simplecov/exit_codes/maximum_coverage_drop_check.rb +83 -0
  19. data/lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb +54 -0
  20. data/lib/simplecov/exit_codes/minimum_overall_coverage_check.rb +53 -0
  21. data/lib/simplecov/exit_codes.rb +5 -0
  22. data/lib/simplecov/file_list.rb +72 -13
  23. data/lib/simplecov/filter.rb +9 -6
  24. data/lib/simplecov/formatter/multi_formatter.rb +5 -7
  25. data/lib/simplecov/formatter/simple_formatter.rb +4 -4
  26. data/lib/simplecov/formatter.rb +2 -2
  27. data/lib/simplecov/last_run.rb +3 -1
  28. data/lib/simplecov/lines_classifier.rb +5 -5
  29. data/lib/simplecov/no_defaults.rb +1 -1
  30. data/lib/simplecov/process.rb +19 -0
  31. data/lib/simplecov/profiles/hidden_filter.rb +5 -0
  32. data/lib/simplecov/profiles/rails.rb +1 -1
  33. data/lib/simplecov/profiles.rb +9 -7
  34. data/lib/simplecov/result.rb +18 -12
  35. data/lib/simplecov/result_adapter.rb +30 -0
  36. data/lib/simplecov/result_merger.rb +130 -59
  37. data/lib/simplecov/simulate_coverage.rb +29 -0
  38. data/lib/simplecov/source_file/branch.rb +84 -0
  39. data/lib/simplecov/source_file/line.rb +72 -0
  40. data/lib/simplecov/source_file.rb +273 -127
  41. data/lib/simplecov/useless_results_remover.rb +18 -0
  42. data/lib/simplecov/version.rb +1 -1
  43. data/lib/simplecov.rb +308 -121
  44. metadata +45 -47
  45. data/CONTRIBUTING.md +0 -51
  46. data/ISSUE_TEMPLATE.md +0 -23
  47. data/lib/simplecov/jruby_fix.rb +0 -44
  48. data/lib/simplecov/railtie.rb +0 -9
  49. data/lib/simplecov/railties/tasks.rake +0 -13
  50. data/lib/simplecov/raw_coverage.rb +0 -41
metadata CHANGED
@@ -1,124 +1,124 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.1
4
+ version: 0.21.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Olszowka
8
+ - Tobias Pfeiffer
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2018-03-16 00:00:00.000000000 Z
12
+ date: 2021-01-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '1.8'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '3'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '1.8'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '3'
33
- - !ruby/object:Gem::Dependency
34
- name: simplecov-html
15
+ name: docile
35
16
  requirement: !ruby/object:Gem::Requirement
36
17
  requirements:
37
18
  - - "~>"
38
19
  - !ruby/object:Gem::Version
39
- version: 0.10.0
20
+ version: '1.1'
40
21
  type: :runtime
41
22
  prerelease: false
42
23
  version_requirements: !ruby/object:Gem::Requirement
43
24
  requirements:
44
25
  - - "~>"
45
26
  - !ruby/object:Gem::Version
46
- version: 0.10.0
27
+ version: '1.1'
47
28
  - !ruby/object:Gem::Dependency
48
- name: docile
29
+ name: simplecov-html
49
30
  requirement: !ruby/object:Gem::Requirement
50
31
  requirements:
51
32
  - - "~>"
52
33
  - !ruby/object:Gem::Version
53
- version: '1.1'
34
+ version: '0.11'
54
35
  type: :runtime
55
36
  prerelease: false
56
37
  version_requirements: !ruby/object:Gem::Requirement
57
38
  requirements:
58
39
  - - "~>"
59
40
  - !ruby/object:Gem::Version
60
- version: '1.1'
41
+ version: '0.11'
61
42
  - !ruby/object:Gem::Dependency
62
- name: bundler
43
+ name: simplecov_json_formatter
63
44
  requirement: !ruby/object:Gem::Requirement
64
45
  requirements:
65
46
  - - "~>"
66
47
  - !ruby/object:Gem::Version
67
- version: '1.9'
68
- type: :development
48
+ version: '0.1'
49
+ type: :runtime
69
50
  prerelease: false
70
51
  version_requirements: !ruby/object:Gem::Requirement
71
52
  requirements:
72
53
  - - "~>"
73
54
  - !ruby/object:Gem::Version
74
- version: '1.9'
75
- description: Code coverage for Ruby 1.9+ with a powerful configuration library and
76
- automatic merging of coverage across test suites
55
+ version: '0.1'
56
+ description: Code coverage for Ruby with a powerful configuration library and automatic
57
+ merging of coverage across test suites
77
58
  email:
78
59
  - christoph at olszowka de
60
+ - pragtob@gmail.com
79
61
  executables: []
80
62
  extensions: []
81
63
  extra_rdoc_files: []
82
64
  files:
83
65
  - CHANGELOG.md
84
- - CONTRIBUTING.md
85
- - ISSUE_TEMPLATE.md
86
66
  - LICENSE
87
67
  - README.md
88
68
  - doc/alternate-formatters.md
89
69
  - doc/commercial-services.md
90
70
  - doc/editor-integration.md
71
+ - lib/minitest/simplecov_plugin.rb
91
72
  - lib/simplecov.rb
73
+ - lib/simplecov/combine.rb
74
+ - lib/simplecov/combine/branches_combiner.rb
75
+ - lib/simplecov/combine/files_combiner.rb
76
+ - lib/simplecov/combine/lines_combiner.rb
77
+ - lib/simplecov/combine/results_combiner.rb
92
78
  - lib/simplecov/command_guesser.rb
93
79
  - lib/simplecov/configuration.rb
80
+ - lib/simplecov/coverage_statistics.rb
81
+ - lib/simplecov/default_formatter.rb
94
82
  - lib/simplecov/defaults.rb
95
83
  - lib/simplecov/exit_codes.rb
84
+ - lib/simplecov/exit_codes/exit_code_handling.rb
85
+ - lib/simplecov/exit_codes/maximum_coverage_drop_check.rb
86
+ - lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb
87
+ - lib/simplecov/exit_codes/minimum_overall_coverage_check.rb
96
88
  - lib/simplecov/file_list.rb
97
89
  - lib/simplecov/filter.rb
98
90
  - lib/simplecov/formatter.rb
99
91
  - lib/simplecov/formatter/multi_formatter.rb
100
92
  - lib/simplecov/formatter/simple_formatter.rb
101
- - lib/simplecov/jruby_fix.rb
102
93
  - lib/simplecov/last_run.rb
103
94
  - lib/simplecov/lines_classifier.rb
104
95
  - lib/simplecov/load_global_config.rb
105
96
  - lib/simplecov/no_defaults.rb
97
+ - lib/simplecov/process.rb
106
98
  - lib/simplecov/profiles.rb
107
99
  - lib/simplecov/profiles/bundler_filter.rb
100
+ - lib/simplecov/profiles/hidden_filter.rb
108
101
  - lib/simplecov/profiles/rails.rb
109
102
  - lib/simplecov/profiles/root_filter.rb
110
103
  - lib/simplecov/profiles/test_frameworks.rb
111
- - lib/simplecov/railtie.rb
112
- - lib/simplecov/railties/tasks.rake
113
- - lib/simplecov/raw_coverage.rb
114
104
  - lib/simplecov/result.rb
105
+ - lib/simplecov/result_adapter.rb
115
106
  - lib/simplecov/result_merger.rb
107
+ - lib/simplecov/simulate_coverage.rb
116
108
  - lib/simplecov/source_file.rb
109
+ - lib/simplecov/source_file/branch.rb
110
+ - lib/simplecov/source_file/line.rb
111
+ - lib/simplecov/useless_results_remover.rb
117
112
  - lib/simplecov/version.rb
118
- homepage: http://github.com/colszowka/simplecov
113
+ homepage: https://github.com/simplecov-ruby/simplecov
119
114
  licenses:
120
115
  - MIT
121
- metadata: {}
116
+ metadata:
117
+ bug_tracker_uri: https://github.com/simplecov-ruby/simplecov/issues
118
+ changelog_uri: https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md
119
+ documentation_uri: https://www.rubydoc.info/gems/simplecov/0.21.2
120
+ mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
121
+ source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v0.21.2
122
122
  post_install_message:
123
123
  rdoc_options: []
124
124
  require_paths:
@@ -127,17 +127,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 1.8.7
130
+ version: 2.5.0
131
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  requirements:
133
133
  - - ">="
134
134
  - !ruby/object:Gem::Version
135
135
  version: '0'
136
136
  requirements: []
137
- rubyforge_project:
138
- rubygems_version: 2.6.13
137
+ rubygems_version: 3.2.3
139
138
  signing_key:
140
139
  specification_version: 4
141
- summary: Code coverage for Ruby 1.9+ with a powerful configuration library and automatic
142
- merging of coverage across test suites
140
+ summary: Code coverage for Ruby
143
141
  test_files: []
data/CONTRIBUTING.md DELETED
@@ -1,51 +0,0 @@
1
- ## Reporting Issues
2
-
3
- You can report issues at https://github.com/colszowka/simplecov/issues
4
-
5
- Before you go ahead please search existing issues for your problem, chances are someone else already reported it.
6
-
7
- To make sure that we can help you quickly please include and check the following information:
8
-
9
- * Include how you run your tests and which testing framework or frameworks you are running.
10
- - please ensure you are requiring and starting SimpleCov before requiring any application code.
11
- - If running via rake, please ensure you are requiring SimpleCov at the top of your Rakefile
12
- For example, if running via RSpec, this would be at the top of your spec_helper.
13
- - Have you tried using a [`.simplecov` file](https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config)?
14
- * Include the SimpleCov version you are running in your report.
15
- * If you are not running the latest version (please check), and you cannot update it,
16
- please specify in your report why you can't update to the latest version.
17
- * Include your `ruby -e "puts RUBY_DESCRIPTION"`.
18
- * Please also specify the gem versions of Rails (if applicable).
19
- * Include any other coverage gems you may be using and their versions.
20
-
21
- Include as much sample code as you can to help us reproduce the issue. (Inline, repo link, or gist, are fine. A failing test would help the most.)
22
-
23
- This is extremely important for narrowing down the cause of your problem.
24
-
25
- Thanks!
26
-
27
- ## Making Contributions
28
-
29
- To fetch & test the library for development, do:
30
-
31
- $ git clone https://github.com/colszowka/simplecov.git
32
- $ cd simplecov
33
- $ bundle
34
- $ bundle exec rake
35
-
36
- If you want to contribute, please:
37
-
38
- * Fork the project.
39
- * Make your feature addition or bug fix.
40
- * Add tests for it. This is important so I don't break it in a future version unintentionally.
41
- * **Bonus Points** go out to anyone who also updates `CHANGELOG.md` :)
42
- * Send me a pull request on GitHub.
43
-
44
- ## Running Individual Tests
45
-
46
- This project uses RSpec and Cucumber. Individual tests can be run like this:
47
-
48
- ```bash
49
- bundle exec rspec path/to/test.rb
50
- bundle exec cucumber path/to/test.feature
51
- ```
data/ISSUE_TEMPLATE.md DELETED
@@ -1,23 +0,0 @@
1
- Howdy! Thanks for reporting an issue <3
2
-
3
- Before you go ahead please search existing issues for your problem, chances are someone else already reported it.
4
-
5
- To make sure that we can help you quickly please include and check the following information:
6
-
7
- * Include how you run your tests and which testing framework or frameworks you are running.
8
- - please ensure you are requiring and starting SimpleCov before requiring any application code.
9
- - If running via rake, please ensure you are requiring SimpleCov at the top of your Rakefile
10
- For example, if running via RSpec, this would be at the top of your spec_helper.
11
- - Have you tried using a [`.simplecov` file](https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config)?
12
- * Include the SimpleCov version you are running in your report.
13
- * If you are not running the latest version (please check), and you cannot update it,
14
- please specify in your report why you can't update to the latest version.
15
- * Include your `ruby -e "puts RUBY_DESCRIPTION"`.
16
- * Please also specify the gem versions of Rails (if applicable).
17
- * Include any other coverage gems you may be using and their versions.
18
-
19
- Include as much sample code as you can to help us reproduce the issue. (Inline, repo link, or gist, are fine. A failing test would help the most.)
20
-
21
- This is extremely important for narrowing down the cause of your problem.
22
-
23
- Thanks!
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if defined?(JRUBY_VERSION) && JRUBY_VERSION.to_f < 1.7
4
- require "jruby"
5
- java_import "org.jruby.ast.NodeType"
6
-
7
- # Coverage for JRuby < 1.7.0 does not work correctly
8
- #
9
- # - does not distinguish lines that cannot be executed
10
- # - does (partial) coverage for files loaded before `Coverage.start`.
11
- # - does not expand a path like `lib/../spec` to `spec`.
12
- #
13
- # This monkey patches Coverage to address those issues
14
- module Coverage
15
- class << self
16
- alias __broken_result__ result
17
-
18
- def result # rubocop:disable Metrics/MethodLength
19
- fixed = {}
20
- __broken_result__.each do |path, executed_lines|
21
- next unless File.file? path
22
-
23
- covered_lines = executed_lines.dup
24
-
25
- process = lambda do |node|
26
- if node.node_type == NodeType::NEWLINENODE
27
- pos = node.position
28
- covered_lines[pos.line] ||= 0
29
- end
30
- node.child_nodes.each(&process)
31
- end
32
-
33
- process[JRuby.parse(File.read(path), path)]
34
-
35
- if (first = covered_lines.detect { |x| x }) && first > 0
36
- fixed[File.expand_path(path)] = covered_lines
37
- end
38
- end
39
-
40
- fixed
41
- end
42
- end
43
- end
44
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SimpleCov
4
- class Railtie < ::Rails::Railtie
5
- rake_tasks do
6
- load "simplecov/railties/tasks.rake"
7
- end
8
- end
9
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rake/testtask"
4
- Rake::TestTask.new do |t|
5
- t.name = "simplecov"
6
- t.loader = :direct # uses require() which skips PWD in Ruby 1.9
7
- t.libs.push "test", "spec", Dir.pwd
8
- t.test_files = FileList["{test,spec}/**/*_{test,spec}.rb"]
9
- t.ruby_opts.push "-r", "simplecov", "-e", "SimpleCov.start(:rails)".inspect
10
- end
11
-
12
- require "rake/clean"
13
- CLOBBER.include "coverage"
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SimpleCov
4
- module RawCoverage
5
- module_function
6
-
7
- # Merges multiple Coverage.result hashes
8
- def merge_results(*results)
9
- results.reduce({}) do |result, merged|
10
- merge_resultsets(result, merged)
11
- end
12
- end
13
-
14
- # Merges two Coverage.result hashes
15
- def merge_resultsets(result1, result2)
16
- (result1.keys | result2.keys).each_with_object({}) do |filename, merged|
17
- file1 = result1[filename]
18
- file2 = result2[filename]
19
- merged[filename] = merge_file_coverage(file1, file2)
20
- end
21
- end
22
-
23
- def merge_file_coverage(file1, file2)
24
- return (file1 || file2).dup unless file1 && file2
25
-
26
- file1.map.with_index do |count1, index|
27
- count2 = file2[index]
28
- merge_line_coverage(count1, count2)
29
- end
30
- end
31
-
32
- def merge_line_coverage(count1, count2)
33
- sum = count1.to_i + count2.to_i
34
- if sum.zero? && (count1.nil? || count2.nil?)
35
- nil
36
- else
37
- sum
38
- end
39
- end
40
- end
41
- end