simplecov 0.16.1 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +112 -402
  3. data/README.md +391 -127
  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 +210 -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 +279 -127
  41. data/lib/simplecov/useless_results_remover.rb +18 -0
  42. data/lib/simplecov/version.rb +1 -1
  43. data/lib/simplecov.rb +310 -121
  44. metadata +48 -50
  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,125 +1,125 @@
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.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Olszowka
8
- autorequire:
8
+ - Tobias Pfeiffer
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2018-03-16 00:00:00.000000000 Z
12
+ date: 2022-12-23 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: {}
122
- post_install_message:
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.22.0
120
+ mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
121
+ source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v0.22.0
122
+ post_install_message:
123
123
  rdoc_options: []
124
124
  require_paths:
125
125
  - lib
@@ -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
139
- signing_key:
137
+ rubygems_version: 3.3.7
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