simplecov 0.17.1 → 0.21.1
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 +4 -4
- data/CHANGELOG.md +100 -434
- data/README.md +375 -93
- data/doc/alternate-formatters.md +16 -1
- data/doc/commercial-services.md +5 -0
- data/lib/minitest/simplecov_plugin.rb +15 -0
- data/lib/simplecov.rb +294 -128
- data/lib/simplecov/combine.rb +30 -0
- data/lib/simplecov/combine/branches_combiner.rb +32 -0
- data/lib/simplecov/combine/files_combiner.rb +24 -0
- data/lib/simplecov/combine/lines_combiner.rb +43 -0
- data/lib/simplecov/combine/results_combiner.rb +60 -0
- data/lib/simplecov/command_guesser.rb +6 -3
- data/lib/simplecov/configuration.rb +191 -15
- data/lib/simplecov/coverage_statistics.rb +56 -0
- data/lib/simplecov/default_formatter.rb +20 -0
- data/lib/simplecov/defaults.rb +14 -13
- data/lib/simplecov/exit_codes.rb +5 -0
- data/lib/simplecov/exit_codes/exit_code_handling.rb +29 -0
- data/lib/simplecov/exit_codes/maximum_coverage_drop_check.rb +73 -0
- data/lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb +54 -0
- data/lib/simplecov/exit_codes/minimum_overall_coverage_check.rb +53 -0
- data/lib/simplecov/file_list.rb +72 -13
- data/lib/simplecov/filter.rb +9 -6
- data/lib/simplecov/formatter.rb +2 -2
- data/lib/simplecov/formatter/multi_formatter.rb +5 -7
- data/lib/simplecov/formatter/simple_formatter.rb +4 -4
- data/lib/simplecov/last_run.rb +3 -1
- data/lib/simplecov/lines_classifier.rb +5 -5
- data/lib/simplecov/no_defaults.rb +1 -1
- data/lib/simplecov/process.rb +19 -0
- data/lib/simplecov/profiles.rb +9 -7
- data/lib/simplecov/result.rb +18 -12
- data/lib/simplecov/result_adapter.rb +30 -0
- data/lib/simplecov/result_merger.rb +130 -59
- data/lib/simplecov/simulate_coverage.rb +29 -0
- data/lib/simplecov/source_file.rb +272 -126
- data/lib/simplecov/source_file/branch.rb +84 -0
- data/lib/simplecov/source_file/line.rb +72 -0
- data/lib/simplecov/useless_results_remover.rb +18 -0
- data/lib/simplecov/version.rb +1 -1
- metadata +44 -158
- data/CONTRIBUTING.md +0 -51
- data/ISSUE_TEMPLATE.md +0 -23
- data/lib/simplecov/jruby_fix.rb +0 -44
- data/lib/simplecov/railtie.rb +0 -9
- data/lib/simplecov/railties/tasks.rake +0 -13
- data/lib/simplecov/raw_coverage.rb +0 -41
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!
|
data/lib/simplecov/jruby_fix.rb
DELETED
@@ -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
|
data/lib/simplecov/railtie.rb
DELETED
@@ -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
|