simplecov-patched 0.14.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.
- checksums.yaml +7 -0
- data/.gitignore +31 -0
- data/.rspec +3 -0
- data/.rubocop.yml +88 -0
- data/.travis.yml +29 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +435 -0
- data/CONTRIBUTING.md +48 -0
- data/Gemfile +38 -0
- data/MIT-LICENSE +20 -0
- data/README.md +646 -0
- data/Rakefile +41 -0
- data/cucumber.yml +13 -0
- data/doc/alternate-formatters.md +36 -0
- data/doc/commercial-services.md +20 -0
- data/doc/editor-integration.md +13 -0
- data/features/config_autoload.feature +46 -0
- data/features/config_command_name.feature +45 -0
- data/features/config_coverage_dir.feature +33 -0
- data/features/config_deactivate_merging.feature +42 -0
- data/features/config_formatters.feature +77 -0
- data/features/config_merge_timeout.feature +39 -0
- data/features/config_nocov_token.feature +79 -0
- data/features/config_profiles.feature +44 -0
- data/features/config_project_name.feature +27 -0
- data/features/config_styles.feature +121 -0
- data/features/config_tracked_files.feature +29 -0
- data/features/cucumber_basic.feature +29 -0
- data/features/maximum_coverage_drop.feature +89 -0
- data/features/merging_test_unit_and_rspec.feature +44 -0
- data/features/minimum_coverage.feature +59 -0
- data/features/refuse_coverage_drop.feature +95 -0
- data/features/rspec_basic.feature +32 -0
- data/features/rspec_fails_on_initialization.feature +14 -0
- data/features/rspec_groups_and_filters_basic.feature +29 -0
- data/features/rspec_groups_and_filters_complex.feature +37 -0
- data/features/rspec_groups_using_filter_class.feature +41 -0
- data/features/rspec_without_simplecov.feature +20 -0
- data/features/skipping_code_blocks_manually.feature +70 -0
- data/features/step_definitions/html_steps.rb +44 -0
- data/features/step_definitions/simplecov_steps.rb +68 -0
- data/features/step_definitions/transformers.rb +13 -0
- data/features/step_definitions/web_steps.rb +64 -0
- data/features/support/env.rb +50 -0
- data/features/test_unit_basic.feature +34 -0
- data/features/test_unit_groups_and_filters_basic.feature +29 -0
- data/features/test_unit_groups_and_filters_complex.feature +35 -0
- data/features/test_unit_groups_using_filter_class.feature +40 -0
- data/features/test_unit_without_simplecov.feature +20 -0
- data/features/unicode_compatiblity.feature +67 -0
- data/lib/simplecov.rb +189 -0
- data/lib/simplecov/command_guesser.rb +59 -0
- data/lib/simplecov/configuration.rb +307 -0
- data/lib/simplecov/defaults.rb +121 -0
- data/lib/simplecov/exit_codes.rb +8 -0
- data/lib/simplecov/file_list.rb +59 -0
- data/lib/simplecov/filter.rb +54 -0
- data/lib/simplecov/formatter.rb +8 -0
- data/lib/simplecov/formatter/multi_formatter.rb +32 -0
- data/lib/simplecov/formatter/simple_formatter.rb +23 -0
- data/lib/simplecov/jruby_fix.rb +42 -0
- data/lib/simplecov/last_run.rb +24 -0
- data/lib/simplecov/load_global_config.rb +6 -0
- data/lib/simplecov/no_defaults.rb +2 -0
- data/lib/simplecov/profiles.rb +31 -0
- data/lib/simplecov/railtie.rb +7 -0
- data/lib/simplecov/railties/tasks.rake +11 -0
- data/lib/simplecov/raw_coverage.rb +39 -0
- data/lib/simplecov/result.rb +86 -0
- data/lib/simplecov/result_merger.rb +95 -0
- data/lib/simplecov/source_file.rb +196 -0
- data/lib/simplecov/version.rb +25 -0
- data/spec/1_8_fallbacks_spec.rb +31 -0
- data/spec/command_guesser_spec.rb +48 -0
- data/spec/config_loader_spec.rb +14 -0
- data/spec/configuration_spec.rb +35 -0
- data/spec/deleted_source_spec.rb +12 -0
- data/spec/faked_project/Gemfile +6 -0
- data/spec/faked_project/Rakefile +8 -0
- data/spec/faked_project/cucumber.yml +13 -0
- data/spec/faked_project/features/step_definitions/my_steps.rb +22 -0
- data/spec/faked_project/features/support/env.rb +12 -0
- data/spec/faked_project/features/test_stuff.feature +6 -0
- data/spec/faked_project/lib/faked_project.rb +11 -0
- data/spec/faked_project/lib/faked_project/framework_specific.rb +18 -0
- data/spec/faked_project/lib/faked_project/meta_magic.rb +24 -0
- data/spec/faked_project/lib/faked_project/some_class.rb +28 -0
- data/spec/faked_project/lib/faked_project/untested_class.rb +11 -0
- data/spec/faked_project/spec/faked_spec.rb +11 -0
- data/spec/faked_project/spec/forking_spec.rb +8 -0
- data/spec/faked_project/spec/meta_magic_spec.rb +15 -0
- data/spec/faked_project/spec/some_class_spec.rb +13 -0
- data/spec/faked_project/spec/spec_helper.rb +11 -0
- data/spec/faked_project/test/faked_test.rb +11 -0
- data/spec/faked_project/test/meta_magic_test.rb +13 -0
- data/spec/faked_project/test/some_class_test.rb +15 -0
- data/spec/faked_project/test/test_helper.rb +12 -0
- data/spec/file_list_spec.rb +50 -0
- data/spec/filters_spec.rb +98 -0
- data/spec/fixtures/app/controllers/sample_controller.rb +10 -0
- data/spec/fixtures/app/models/user.rb +10 -0
- data/spec/fixtures/deleted_source_sample.rb +15 -0
- data/spec/fixtures/frameworks/rspec_bad.rb +9 -0
- data/spec/fixtures/frameworks/rspec_good.rb +9 -0
- data/spec/fixtures/frameworks/testunit_bad.rb +9 -0
- data/spec/fixtures/frameworks/testunit_good.rb +9 -0
- data/spec/fixtures/iso-8859.rb +3 -0
- data/spec/fixtures/never.rb +2 -0
- data/spec/fixtures/resultset1.rb +4 -0
- data/spec/fixtures/resultset2.rb +4 -0
- data/spec/fixtures/sample.rb +16 -0
- data/spec/fixtures/skipped.rb +4 -0
- data/spec/fixtures/skipped_and_executed.rb +8 -0
- data/spec/fixtures/utf-8.rb +3 -0
- data/spec/helper.rb +26 -0
- data/spec/last_run_spec.rb +48 -0
- data/spec/multi_formatter_spec.rb +20 -0
- data/spec/raw_coverage_spec.rb +92 -0
- data/spec/result_merger_spec.rb +96 -0
- data/spec/result_spec.rb +209 -0
- data/spec/return_codes_spec.rb +34 -0
- data/spec/simplecov_spec.rb +110 -0
- data/spec/source_file_line_spec.rb +155 -0
- data/spec/source_file_spec.rb +141 -0
- data/spec/support/fail_rspec_on_ruby_warning.rb +75 -0
- metadata +320 -0
data/Rakefile
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env rake
|
|
2
|
+
|
|
3
|
+
require "rubygems"
|
|
4
|
+
require "bundler/setup"
|
|
5
|
+
Bundler::GemHelper.install_tasks
|
|
6
|
+
|
|
7
|
+
# See https://github.com/colszowka/simplecov/issues/171
|
|
8
|
+
desc "Set permissions on all files so they are compatible with both user-local and system-wide installs"
|
|
9
|
+
task :fix_permissions do
|
|
10
|
+
system 'bash -c "find . -type f -exec chmod 644 {} \; && find . -type d -exec chmod 755 {} \;"'
|
|
11
|
+
end
|
|
12
|
+
# Enforce proper permissions on each build
|
|
13
|
+
Rake::Task[:build].prerequisites.unshift :fix_permissions
|
|
14
|
+
|
|
15
|
+
require "rspec/core/rake_task"
|
|
16
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
17
|
+
spec.pattern = FileList["spec/*_spec.rb"]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
begin
|
|
21
|
+
require "rubocop/rake_task"
|
|
22
|
+
RuboCop::RakeTask.new
|
|
23
|
+
rescue LoadError
|
|
24
|
+
task :rubocop do
|
|
25
|
+
$stderr.puts "Rubocop is disabled"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Cucumber integration test suite is for impls that work with simplecov only - a.k.a. 1.9+
|
|
30
|
+
if RUBY_VERSION.start_with? "1.8"
|
|
31
|
+
task :default => [:spec]
|
|
32
|
+
else
|
|
33
|
+
require "cucumber/rake/task"
|
|
34
|
+
Cucumber::Rake::Task.new
|
|
35
|
+
|
|
36
|
+
if RUBY_VERSION.start_with? "1.9"
|
|
37
|
+
task :default => [:spec, :cucumber]
|
|
38
|
+
else
|
|
39
|
+
task :default => [:rubocop, :spec, :cucumber]
|
|
40
|
+
end
|
|
41
|
+
end
|
data/cucumber.yml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%
|
|
2
|
+
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
|
3
|
+
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
|
4
|
+
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} --strict --tags ~@wip"
|
|
5
|
+
interp_opts = if defined?(RUBY_ENGINE)
|
|
6
|
+
" --tags ~@exclude-#{RUBY_ENGINE}"
|
|
7
|
+
else
|
|
8
|
+
''
|
|
9
|
+
end
|
|
10
|
+
%>
|
|
11
|
+
default: <%= std_opts %><%= interp_opts %> features
|
|
12
|
+
wip: --tags @wip:30 --wip features<%= interp_opts %>
|
|
13
|
+
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip<%= interp_opts %>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
## Alternate coverage report formatters
|
|
2
|
+
|
|
3
|
+
The community around simplecov provides a whole bunch of alternate formatters beyond the official
|
|
4
|
+
[simplecov-html](https://github.com/colszowka/simplecov-html) gem.
|
|
5
|
+
|
|
6
|
+
If you have built or found one that is missing here, please send a Pull Request for this document!
|
|
7
|
+
|
|
8
|
+
#### [simplecov-badge](https://github.com/matthew342/simplecov-badge)
|
|
9
|
+
*by Matt Hale*
|
|
10
|
+
|
|
11
|
+
A formatter that generates a coverage badge for use in your project's readme using ImageMagick.
|
|
12
|
+
|
|
13
|
+
#### [simplecov-cobertura](https://github.com/dashingrocket/simplecov-cobertura)
|
|
14
|
+
*by Jesse Bowes*
|
|
15
|
+
|
|
16
|
+
A formatter that generates Cobertura XML.
|
|
17
|
+
|
|
18
|
+
#### [simplecov-csv](https://github.com/fguillen/simplecov-csv)
|
|
19
|
+
*by Fernando Guillen*
|
|
20
|
+
|
|
21
|
+
CSV formatter for SimpleCov
|
|
22
|
+
|
|
23
|
+
#### [simplecov-json](https://github.com/vicentllongo/simplecov-json)
|
|
24
|
+
*by Vicent Llongo*
|
|
25
|
+
|
|
26
|
+
JSON formatter for SimpleCov
|
|
27
|
+
|
|
28
|
+
#### [simplecov-rcov](https://github.com/fguillen/simplecov-rcov)
|
|
29
|
+
*by Fernando Guillen*
|
|
30
|
+
|
|
31
|
+
"The target of this formatter is to cheat on Hudson so I can use the Ruby metrics plugin with SimpleCov."
|
|
32
|
+
|
|
33
|
+
#### [simplecov-single_file_reporter](https://github.com/grosser/simplecov-single_file_reporter)
|
|
34
|
+
*by [Michael Grosser](http://grosser.it)*
|
|
35
|
+
|
|
36
|
+
A formatter that prints the coverage of the file under test when you run a single test file.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Commercial Services with SimpleCov integration
|
|
2
|
+
|
|
3
|
+
There is a bunch of services that offer integration with your existing CI pipeline and SimpleCov coverage
|
|
4
|
+
reports. Please note these are not associated with the SimpleCov project itself, so please report problems with
|
|
5
|
+
these integrations with their respective owners.
|
|
6
|
+
|
|
7
|
+
#### [codeclimate](https://github.com/codeclimate/ruby-test-reporter)
|
|
8
|
+
*by [Code Climate](https://codeclimate.com/)*
|
|
9
|
+
|
|
10
|
+
Upload coverage reports to [codeclimate.com](https://codeclimate.com/), a hosted software quality analysis and that also includes coverage reporting.
|
|
11
|
+
|
|
12
|
+
#### [codecov](https://github.com/codecov/codecov-ruby)
|
|
13
|
+
*by [Codecov](https://codecov.io/)*
|
|
14
|
+
|
|
15
|
+
Upload coverage reports to [codecov.io](https://codecov.io/), a hosted coverage reporting solution.
|
|
16
|
+
|
|
17
|
+
#### [coveralls](https://github.com/lemurheavy/coveralls-ruby)
|
|
18
|
+
*by [Coveralls](https://coveralls.io/)*
|
|
19
|
+
|
|
20
|
+
Upload coverage reports to [coveralls.io](https://coveralls.io/), a hosted coverage reporting solution.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## Editor integration
|
|
2
|
+
|
|
3
|
+
Some editors have a graphical integration for the simplecov gem.
|
|
4
|
+
|
|
5
|
+
#### [Atom Editor: coverage](https://atom.io/packages/coverage)
|
|
6
|
+
*by Philip Giuliani*
|
|
7
|
+
|
|
8
|
+
Adds an overview of your current test coverage to Atom.
|
|
9
|
+
|
|
10
|
+
#### [cadre](https://github.com/nyarly/cadre)
|
|
11
|
+
*by Judson Lester*
|
|
12
|
+
|
|
13
|
+
Includes a formatter for Simplecov that emits a Vim script to mark up code files with coverage information.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
@test_unit @rspec @config
|
|
2
|
+
Feature:
|
|
3
|
+
|
|
4
|
+
If you have multiple test suites, it can be a bit cumbersome
|
|
5
|
+
to keep the configuration across them in sync. SimpleCov
|
|
6
|
+
is able to find a config file called '.simplecov' that resides
|
|
7
|
+
in your project's root and will automatically use it when
|
|
8
|
+
loaded.
|
|
9
|
+
|
|
10
|
+
This gives you the ability to configure SimpleCov just once
|
|
11
|
+
and then use the same configuration on all test suites simply
|
|
12
|
+
by doing a 'require "simplecov"'
|
|
13
|
+
|
|
14
|
+
Scenario:
|
|
15
|
+
Given a file named ".simplecov" with:
|
|
16
|
+
"""
|
|
17
|
+
SimpleCov.start do
|
|
18
|
+
add_filter 'test.rb'
|
|
19
|
+
add_filter 'spec.rb'
|
|
20
|
+
end
|
|
21
|
+
"""
|
|
22
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
23
|
+
"""
|
|
24
|
+
require 'simplecov'
|
|
25
|
+
"""
|
|
26
|
+
Given SimpleCov for RSpec is configured with:
|
|
27
|
+
"""
|
|
28
|
+
require 'simplecov'
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
When I successfully run `bundle exec rake test`
|
|
32
|
+
And I open the coverage report generated with `bundle exec rspec spec`
|
|
33
|
+
Then the report should be based upon:
|
|
34
|
+
| RSpec |
|
|
35
|
+
| Unit Tests |
|
|
36
|
+
|
|
37
|
+
And I should see the groups:
|
|
38
|
+
| name | coverage | files |
|
|
39
|
+
| All Files | 90.48% | 4 |
|
|
40
|
+
|
|
41
|
+
And I should see the source files:
|
|
42
|
+
| name | coverage |
|
|
43
|
+
| lib/faked_project.rb | 100.0 % |
|
|
44
|
+
| lib/faked_project/some_class.rb | 80.0 % |
|
|
45
|
+
| lib/faked_project/framework_specific.rb | 87.5 % |
|
|
46
|
+
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
@test_unit @rspec @merging @config
|
|
2
|
+
Feature: Custom names for individual test suites
|
|
3
|
+
|
|
4
|
+
Each test suite needs a name it can be identified by. SimpleCov tries
|
|
5
|
+
best to detect Rails' Unit, Functional, Integration tests as well as regular
|
|
6
|
+
Test/Unit, RSpec and Cucumber, but if that is insufficient, each test suite
|
|
7
|
+
config can be given a custom command name using SimpleCov.command_name.
|
|
8
|
+
|
|
9
|
+
Scenario:
|
|
10
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
11
|
+
"""
|
|
12
|
+
require 'simplecov'
|
|
13
|
+
SimpleCov.start do
|
|
14
|
+
command_name "I'm in UR Unitz"
|
|
15
|
+
end
|
|
16
|
+
"""
|
|
17
|
+
Given SimpleCov for RSpec is configured with:
|
|
18
|
+
"""
|
|
19
|
+
require 'simplecov'
|
|
20
|
+
SimpleCov.start do
|
|
21
|
+
command_name "Dreck macht Speck"
|
|
22
|
+
end
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
When I open the coverage report generated with `bundle exec rake test`
|
|
26
|
+
Then the report should be based upon:
|
|
27
|
+
| I'm in UR Unitz |
|
|
28
|
+
|
|
29
|
+
When I open the coverage report generated with `bundle exec rspec spec`
|
|
30
|
+
Then the report should be based upon:
|
|
31
|
+
| Dreck macht Speck |
|
|
32
|
+
| I'm in UR Unitz |
|
|
33
|
+
|
|
34
|
+
Scenario: RSpec auto detection with spec/features
|
|
35
|
+
Given SimpleCov for RSpec is configured with:
|
|
36
|
+
"""
|
|
37
|
+
require 'simplecov'
|
|
38
|
+
SimpleCov.start
|
|
39
|
+
"""
|
|
40
|
+
And a file named "spec/features/foobar_spec.rb" with:
|
|
41
|
+
"""
|
|
42
|
+
"""
|
|
43
|
+
When I open the coverage report generated with `bundle exec rspec spec`
|
|
44
|
+
Then the report should be based upon:
|
|
45
|
+
| RSpec |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
@test_unit @config
|
|
2
|
+
Feature:
|
|
3
|
+
|
|
4
|
+
The output directory for test coverage can be customized
|
|
5
|
+
with the SimpleCov.coverage_dir setting. All coverage reports
|
|
6
|
+
will be put there instead of the default 'coverage' directory
|
|
7
|
+
in your project's root.
|
|
8
|
+
|
|
9
|
+
Scenario:
|
|
10
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
11
|
+
"""
|
|
12
|
+
require 'simplecov'
|
|
13
|
+
SimpleCov.start do
|
|
14
|
+
coverage_dir 'test/simplecov'
|
|
15
|
+
end
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
When I successfully run `bundle exec rake test`
|
|
19
|
+
Then a coverage report should have been generated in "test/simplecov"
|
|
20
|
+
And a directory named "coverage" should not exist
|
|
21
|
+
|
|
22
|
+
Scenario:
|
|
23
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
24
|
+
"""
|
|
25
|
+
require 'simplecov'
|
|
26
|
+
SimpleCov.start do
|
|
27
|
+
coverage_dir '/tmp/test/simplecov'
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
When I successfully run `bundle exec rake test`
|
|
32
|
+
Then a coverage report should have been generated in "/tmp/test/simplecov"
|
|
33
|
+
And a directory named "coverage" should not exist
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
@test_unit @rspec @merging @config
|
|
2
|
+
Feature:
|
|
3
|
+
|
|
4
|
+
If merging of test suite results is not desired, it can be deactivated,
|
|
5
|
+
thus leading to the coverage report being overwritten with the latest results
|
|
6
|
+
of a single test suite on each run of any suite.
|
|
7
|
+
|
|
8
|
+
It's probably preferrable to generate the individual suite results into separate
|
|
9
|
+
output directories instead (see SimpleCov.coverage_dir), but it is possible :)
|
|
10
|
+
|
|
11
|
+
Scenario:
|
|
12
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
13
|
+
"""
|
|
14
|
+
require 'simplecov'
|
|
15
|
+
SimpleCov.start do
|
|
16
|
+
use_merging false
|
|
17
|
+
end
|
|
18
|
+
"""
|
|
19
|
+
Given SimpleCov for RSpec is configured with:
|
|
20
|
+
"""
|
|
21
|
+
require 'simplecov'
|
|
22
|
+
SimpleCov.start do
|
|
23
|
+
use_merging false
|
|
24
|
+
end
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
When I successfully run `bundle exec rake test`
|
|
28
|
+
Then a file named "coverage/index.html" should exist
|
|
29
|
+
But a file named "coverage/.resultset.json" should not exist
|
|
30
|
+
|
|
31
|
+
Given I open the coverage report
|
|
32
|
+
Then the report should be based upon:
|
|
33
|
+
| Unit Tests |
|
|
34
|
+
|
|
35
|
+
When I successfully run `bundle exec rspec spec`
|
|
36
|
+
Then a file named "coverage/index.html" should exist
|
|
37
|
+
But a file named "coverage/.resultset.json" should not exist
|
|
38
|
+
|
|
39
|
+
Given I open the coverage report
|
|
40
|
+
Then the report should be based upon:
|
|
41
|
+
| RSpec |
|
|
42
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
@test_unit @config
|
|
2
|
+
Feature:
|
|
3
|
+
|
|
4
|
+
The formatter for test coverage can be customized
|
|
5
|
+
with the SimpleCov.formatter setting. There are two
|
|
6
|
+
built-in formatters:
|
|
7
|
+
SimpleCov::Formatter::SimpleFormatter is a simple
|
|
8
|
+
formatter returning a string of all files with
|
|
9
|
+
theirs coverages.
|
|
10
|
+
SimpleCov::Formatter::MultiFormatter is a formatter
|
|
11
|
+
used to call multiple formatters at once.
|
|
12
|
+
|
|
13
|
+
Scenario: With SimpleFormatter
|
|
14
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
15
|
+
"""
|
|
16
|
+
require 'simplecov'
|
|
17
|
+
SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter
|
|
18
|
+
SimpleCov.at_exit do
|
|
19
|
+
puts SimpleCov.result.format!
|
|
20
|
+
end
|
|
21
|
+
SimpleCov.start do
|
|
22
|
+
add_group 'Libs', 'lib/faked_project/'
|
|
23
|
+
end
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
When I successfully run `bundle exec rake test`
|
|
27
|
+
Then the output should contain "lib/faked_project/meta_magic.rb (coverage: 100.0%)"
|
|
28
|
+
|
|
29
|
+
Scenario: With MultiFormatter
|
|
30
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
31
|
+
"""
|
|
32
|
+
require 'simplecov'
|
|
33
|
+
SimpleCov.formatters = [
|
|
34
|
+
SimpleCov::Formatter::SimpleFormatter,
|
|
35
|
+
Class.new do
|
|
36
|
+
def format(result)
|
|
37
|
+
raise "Unable to format"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
SimpleCov.at_exit do
|
|
43
|
+
puts SimpleCov.result.format!.join
|
|
44
|
+
end
|
|
45
|
+
SimpleCov.start do
|
|
46
|
+
add_group 'Libs', 'lib/faked_project/'
|
|
47
|
+
end
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
When I successfully run `bundle exec rake test`
|
|
51
|
+
Then the output should contain "lib/faked_project/meta_magic.rb (coverage: 100.0%)"
|
|
52
|
+
And the output should match /Formatter [^\s]* failed with RuntimeError: Unable to format/
|
|
53
|
+
|
|
54
|
+
Scenario: With multiple formatters
|
|
55
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
56
|
+
"""
|
|
57
|
+
require 'simplecov'
|
|
58
|
+
SimpleCov.formatters = [
|
|
59
|
+
SimpleCov::Formatter::SimpleFormatter,
|
|
60
|
+
Class.new do
|
|
61
|
+
def format(result)
|
|
62
|
+
raise "Unable to format"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
SimpleCov.at_exit do
|
|
68
|
+
puts SimpleCov.result.format!.join
|
|
69
|
+
end
|
|
70
|
+
SimpleCov.start do
|
|
71
|
+
add_group 'Libs', 'lib/faked_project/'
|
|
72
|
+
end
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
When I successfully run `bundle exec rake test`
|
|
76
|
+
Then the output should contain "lib/faked_project/meta_magic.rb (coverage: 100.0%)"
|
|
77
|
+
And the output should match /Formatter [^\s]* failed with RuntimeError: Unable to format/
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
@test_unit @rspec @merging @config
|
|
2
|
+
Feature:
|
|
3
|
+
|
|
4
|
+
The maximum time between resultset merges can be customized
|
|
5
|
+
using SimpleCov.merge_timeout SECONDS. This can be helpful for
|
|
6
|
+
long-running test-suites that fail to merge because of the time
|
|
7
|
+
between individual suite finishes is more then the default timeout
|
|
8
|
+
of 10 minutes.
|
|
9
|
+
|
|
10
|
+
Here, for the sake of testing the opposite case is shown, choosing
|
|
11
|
+
a merge timeout so short that the first test suite's results actually
|
|
12
|
+
are out of date when the second suite finishes and thus does not end up
|
|
13
|
+
in the report.
|
|
14
|
+
|
|
15
|
+
Scenario:
|
|
16
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
17
|
+
"""
|
|
18
|
+
require 'simplecov'
|
|
19
|
+
SimpleCov.start do
|
|
20
|
+
merge_timeout 5
|
|
21
|
+
end
|
|
22
|
+
"""
|
|
23
|
+
Given SimpleCov for RSpec is configured with:
|
|
24
|
+
"""
|
|
25
|
+
require 'simplecov'
|
|
26
|
+
SimpleCov.start do
|
|
27
|
+
merge_timeout 5
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
When I open the coverage report generated with `bundle exec rake test`
|
|
32
|
+
Then the report should be based upon:
|
|
33
|
+
| Unit Tests |
|
|
34
|
+
|
|
35
|
+
When I wait for 5 seconds
|
|
36
|
+
And I open the coverage report generated with `bundle exec rspec spec`
|
|
37
|
+
Then the report should be based upon:
|
|
38
|
+
| RSpec |
|
|
39
|
+
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
@test_unit @nocov
|
|
2
|
+
Feature:
|
|
3
|
+
|
|
4
|
+
Code wrapped in # :nocov: will be ignored by coverage reports.
|
|
5
|
+
The name of the token can be configured with SimpleCov.nocov_token or SimpleCov.skip_token
|
|
6
|
+
|
|
7
|
+
Scenario: Custom nocov token using nocov_token
|
|
8
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
9
|
+
"""
|
|
10
|
+
require 'simplecov'
|
|
11
|
+
SimpleCov.start 'test_frameworks' do
|
|
12
|
+
nocov_token 'skippit'
|
|
13
|
+
end
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
Given a file named "lib/faked_project/nocov.rb" with:
|
|
17
|
+
"""
|
|
18
|
+
class SourceCodeWithNocov
|
|
19
|
+
# :skippit:
|
|
20
|
+
def some_weird_code
|
|
21
|
+
never_reached
|
|
22
|
+
rescue => err
|
|
23
|
+
but no one cares about invalid ruby here
|
|
24
|
+
end
|
|
25
|
+
# :skippit:
|
|
26
|
+
end
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
When I open the coverage report generated with `bundle exec rake test`
|
|
30
|
+
|
|
31
|
+
Then I should see the source files:
|
|
32
|
+
| name | coverage |
|
|
33
|
+
| lib/faked_project.rb | 100.0 % |
|
|
34
|
+
| lib/faked_project/some_class.rb | 80.0 % |
|
|
35
|
+
| lib/faked_project/framework_specific.rb | 75.0 % |
|
|
36
|
+
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
37
|
+
| lib/faked_project/nocov.rb | 100.0 % |
|
|
38
|
+
|
|
39
|
+
And there should be 7 skipped lines in the source files
|
|
40
|
+
|
|
41
|
+
And the report should be based upon:
|
|
42
|
+
| Unit Tests |
|
|
43
|
+
|
|
44
|
+
Scenario: Custom nocov token using skip_token
|
|
45
|
+
Given SimpleCov for Test/Unit is configured with:
|
|
46
|
+
"""
|
|
47
|
+
require 'simplecov'
|
|
48
|
+
SimpleCov.start 'test_frameworks' do
|
|
49
|
+
skip_token 'skippit'
|
|
50
|
+
end
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
Given a file named "lib/faked_project/nocov.rb" with:
|
|
54
|
+
"""
|
|
55
|
+
class SourceCodeWithNocov
|
|
56
|
+
# :skippit:
|
|
57
|
+
def some_weird_code
|
|
58
|
+
never_reached
|
|
59
|
+
rescue => err
|
|
60
|
+
but no one cares about invalid ruby here
|
|
61
|
+
end
|
|
62
|
+
# :skippit:
|
|
63
|
+
end
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
When I open the coverage report generated with `bundle exec rake test`
|
|
67
|
+
|
|
68
|
+
Then I should see the source files:
|
|
69
|
+
| name | coverage |
|
|
70
|
+
| lib/faked_project.rb | 100.0 % |
|
|
71
|
+
| lib/faked_project/some_class.rb | 80.0 % |
|
|
72
|
+
| lib/faked_project/framework_specific.rb | 75.0 % |
|
|
73
|
+
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
74
|
+
| lib/faked_project/nocov.rb | 100.0 % |
|
|
75
|
+
|
|
76
|
+
And there should be 7 skipped lines in the source files
|
|
77
|
+
|
|
78
|
+
And the report should be based upon:
|
|
79
|
+
| Unit Tests |
|