simplecov 0.15.0 → 0.16.0
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 +5 -5
- data/CHANGELOG.md +26 -2
- data/CONTRIBUTING.md +12 -9
- data/ISSUE_TEMPLATE.md +23 -0
- data/README.md +42 -16
- data/doc/alternate-formatters.md +16 -1
- data/lib/simplecov/command_guesser.rb +2 -0
- data/lib/simplecov/configuration.rb +2 -0
- data/lib/simplecov/defaults.rb +9 -80
- data/lib/simplecov/exit_codes.rb +2 -0
- data/lib/simplecov/file_list.rb +2 -0
- data/lib/simplecov/filter.rb +3 -1
- data/lib/simplecov/formatter/multi_formatter.rb +2 -0
- data/lib/simplecov/formatter/simple_formatter.rb +2 -0
- data/lib/simplecov/formatter.rb +2 -0
- data/lib/simplecov/jruby_fix.rb +2 -0
- data/lib/simplecov/last_run.rb +2 -0
- data/lib/simplecov/lines_classifier.rb +19 -3
- data/lib/simplecov/load_global_config.rb +2 -0
- data/lib/simplecov/no_defaults.rb +2 -0
- data/lib/simplecov/profiles/bundler_filter.rb +5 -0
- data/lib/simplecov/profiles/rails.rb +18 -0
- data/lib/simplecov/profiles/root_filter.rb +10 -0
- data/lib/simplecov/profiles/test_frameworks.rb +8 -0
- data/lib/simplecov/profiles.rb +2 -0
- data/lib/simplecov/railtie.rb +2 -0
- data/lib/simplecov/railties/tasks.rake +2 -0
- data/lib/simplecov/raw_coverage.rb +2 -0
- data/lib/simplecov/result.rb +2 -0
- data/lib/simplecov/result_merger.rb +2 -0
- data/lib/simplecov/source_file.rb +3 -1
- data/lib/simplecov/version.rb +3 -1
- data/lib/simplecov.rb +91 -0
- metadata +22 -117
- data/.gitignore +0 -31
- data/.rspec +0 -3
- data/.rubocop.yml +0 -88
- data/.travis.yml +0 -29
- data/.yardopts +0 -1
- data/Gemfile +0 -38
- data/MIT-LICENSE +0 -20
- data/Rakefile +0 -41
- data/cucumber.yml +0 -13
- data/features/config_autoload.feature +0 -46
- data/features/config_command_name.feature +0 -45
- data/features/config_coverage_dir.feature +0 -33
- data/features/config_deactivate_merging.feature +0 -42
- data/features/config_formatters.feature +0 -77
- data/features/config_merge_timeout.feature +0 -39
- data/features/config_nocov_token.feature +0 -79
- data/features/config_profiles.feature +0 -44
- data/features/config_project_name.feature +0 -27
- data/features/config_styles.feature +0 -121
- data/features/config_tracked_files.feature +0 -29
- data/features/config_tracked_files_relevant_lines.feature +0 -31
- data/features/cucumber_basic.feature +0 -29
- data/features/maximum_coverage_drop.feature +0 -89
- data/features/merging_test_unit_and_rspec.feature +0 -44
- data/features/minimum_coverage.feature +0 -59
- data/features/refuse_coverage_drop.feature +0 -95
- data/features/rspec_basic.feature +0 -32
- data/features/rspec_fails_on_initialization.feature +0 -14
- data/features/rspec_groups_and_filters_basic.feature +0 -29
- data/features/rspec_groups_and_filters_complex.feature +0 -37
- data/features/rspec_groups_using_filter_class.feature +0 -41
- data/features/rspec_without_simplecov.feature +0 -20
- data/features/skipping_code_blocks_manually.feature +0 -70
- data/features/step_definitions/html_steps.rb +0 -44
- data/features/step_definitions/simplecov_steps.rb +0 -68
- data/features/step_definitions/transformers.rb +0 -13
- data/features/step_definitions/web_steps.rb +0 -64
- data/features/support/aruba_freedom_patch.rb +0 -53
- data/features/support/env.rb +0 -50
- data/features/test_unit_basic.feature +0 -34
- data/features/test_unit_groups_and_filters_basic.feature +0 -29
- data/features/test_unit_groups_and_filters_complex.feature +0 -35
- data/features/test_unit_groups_using_filter_class.feature +0 -40
- data/features/test_unit_without_simplecov.feature +0 -20
- data/features/unicode_compatiblity.feature +0 -67
- data/simplecov.gemspec +0 -27
- data/spec/1_8_fallbacks_spec.rb +0 -31
- data/spec/command_guesser_spec.rb +0 -48
- data/spec/config_loader_spec.rb +0 -14
- data/spec/configuration_spec.rb +0 -35
- data/spec/deleted_source_spec.rb +0 -12
- data/spec/faked_project/Gemfile +0 -6
- data/spec/faked_project/Rakefile +0 -8
- data/spec/faked_project/cucumber.yml +0 -13
- data/spec/faked_project/features/step_definitions/my_steps.rb +0 -22
- data/spec/faked_project/features/support/env.rb +0 -12
- data/spec/faked_project/features/test_stuff.feature +0 -6
- data/spec/faked_project/lib/faked_project/framework_specific.rb +0 -18
- data/spec/faked_project/lib/faked_project/meta_magic.rb +0 -24
- data/spec/faked_project/lib/faked_project/some_class.rb +0 -28
- data/spec/faked_project/lib/faked_project/untested_class.rb +0 -11
- data/spec/faked_project/lib/faked_project.rb +0 -11
- data/spec/faked_project/spec/faked_spec.rb +0 -11
- data/spec/faked_project/spec/forking_spec.rb +0 -8
- data/spec/faked_project/spec/meta_magic_spec.rb +0 -15
- data/spec/faked_project/spec/some_class_spec.rb +0 -13
- data/spec/faked_project/spec/spec_helper.rb +0 -11
- data/spec/faked_project/test/faked_test.rb +0 -11
- data/spec/faked_project/test/meta_magic_test.rb +0 -13
- data/spec/faked_project/test/some_class_test.rb +0 -15
- data/spec/faked_project/test/test_helper.rb +0 -12
- data/spec/file_list_spec.rb +0 -50
- data/spec/filters_spec.rb +0 -172
- data/spec/fixtures/app/controllers/sample_controller.rb +0 -10
- data/spec/fixtures/app/models/user.rb +0 -10
- data/spec/fixtures/deleted_source_sample.rb +0 -15
- data/spec/fixtures/frameworks/rspec_bad.rb +0 -9
- data/spec/fixtures/frameworks/rspec_good.rb +0 -9
- data/spec/fixtures/frameworks/testunit_bad.rb +0 -9
- data/spec/fixtures/frameworks/testunit_good.rb +0 -9
- data/spec/fixtures/iso-8859.rb +0 -3
- data/spec/fixtures/never.rb +0 -2
- data/spec/fixtures/resultset1.rb +0 -4
- data/spec/fixtures/resultset2.rb +0 -4
- data/spec/fixtures/sample.rb +0 -16
- data/spec/fixtures/skipped.rb +0 -4
- data/spec/fixtures/skipped_and_executed.rb +0 -8
- data/spec/fixtures/utf-8.rb +0 -3
- data/spec/helper.rb +0 -26
- data/spec/last_run_spec.rb +0 -48
- data/spec/lines_classifier_spec.rb +0 -103
- data/spec/multi_formatter_spec.rb +0 -20
- data/spec/raw_coverage_spec.rb +0 -92
- data/spec/result_merger_spec.rb +0 -171
- data/spec/result_spec.rb +0 -209
- data/spec/return_codes_spec.rb +0 -34
- data/spec/simplecov_spec.rb +0 -109
- data/spec/source_file_line_spec.rb +0 -155
- data/spec/source_file_spec.rb +0 -145
- data/spec/support/fail_rspec_on_ruby_warning.rb +0 -75
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
module WithinHelpers
|
|
2
|
-
def with_scope(locator)
|
|
3
|
-
locator ? within(locator) { yield } : yield
|
|
4
|
-
end
|
|
5
|
-
end
|
|
6
|
-
World(WithinHelpers)
|
|
7
|
-
|
|
8
|
-
When /^I open the coverage report$/ do
|
|
9
|
-
visit "/"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
Given /^(?:|I )am on (.+)$/ do |path|
|
|
13
|
-
visit path
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
When /^(?:|I )go to (.+)$/ do |path|
|
|
17
|
-
visit path
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
When /^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/ do |button, selector|
|
|
21
|
-
with_scope(selector) do
|
|
22
|
-
click_button(button)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
When /^(?:|I )follow "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector|
|
|
27
|
-
with_scope(selector) do
|
|
28
|
-
click_link(link)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
Then /^(?:|I )should see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
|
|
33
|
-
with_scope(selector) do
|
|
34
|
-
expect(page).to have_content(text)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
Then /^(?:|I )should see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
|
|
39
|
-
regexp = Regexp.new(regexp)
|
|
40
|
-
with_scope(selector) do
|
|
41
|
-
expect(page).to have_xpath("//*", :text => regexp)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
Then /^(?:|I )should not see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
|
|
46
|
-
with_scope(selector) do
|
|
47
|
-
expect(page).to have_no_content(text)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
Then /^(?:|I )should not see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
|
|
52
|
-
regexp = Regexp.new(regexp)
|
|
53
|
-
with_scope(selector) do
|
|
54
|
-
expect(page).to have_no_xpath("//*", :text => regexp)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
Then /^show me the page$/ do
|
|
59
|
-
save_and_open_page # rubocop:disable Lint/Debugger
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
Then /^print the page$/ do
|
|
63
|
-
puts page.body
|
|
64
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Freedom patch because of not working absolute directories, see: https://github.com/cucumber/aruba/issues/478
|
|
2
|
-
# code taken directly from aruba 0.14.2 - roughly here: https://github.com/cucumber/aruba/blob/master/lib/aruba/api/core.rb#L122-L159
|
|
3
|
-
# rubocop:disable all
|
|
4
|
-
module Aruba
|
|
5
|
-
module Api
|
|
6
|
-
module Core
|
|
7
|
-
def expand_path(file_name, dir_string = nil)
|
|
8
|
-
# only line added, don't ask why but I couldn't get alias_method to work...
|
|
9
|
-
return file_name if absolute?(file_name)
|
|
10
|
-
check_for_deprecated_variables if Aruba::VERSION < '1'
|
|
11
|
-
|
|
12
|
-
message = %(Filename "#{file_name}" needs to be a string. It cannot be nil or empty either. Please use `expand_path('.')` if you want the current directory to be expanded.)
|
|
13
|
-
|
|
14
|
-
fail ArgumentError, message unless file_name.is_a?(String) && !file_name.empty?
|
|
15
|
-
|
|
16
|
-
aruba.logger.warn %(`aruba`'s working directory does not exist. Maybe you forgot to run `setup_aruba` before using it's API. This warning will be an error from 1.0.0) unless Aruba.platform.directory? File.join(aruba.config.root_directory, aruba.config.working_directory)
|
|
17
|
-
|
|
18
|
-
if RUBY_VERSION < '1.9'
|
|
19
|
-
prefix = file_name.chars.to_a[0].to_s
|
|
20
|
-
rest = if file_name.chars.to_a[2..-1].nil?
|
|
21
|
-
nil
|
|
22
|
-
else
|
|
23
|
-
file_name.chars.to_a[2..-1].join
|
|
24
|
-
end
|
|
25
|
-
else
|
|
26
|
-
prefix = file_name[0]
|
|
27
|
-
rest = file_name[2..-1]
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
if aruba.config.fixtures_path_prefix == prefix
|
|
31
|
-
path = File.join(*[aruba.fixtures_directory, rest].compact)
|
|
32
|
-
|
|
33
|
-
fail ArgumentError, %(Fixture "#{rest}" does not exist in fixtures directory "#{aruba.fixtures_directory}". This was the one we found first on your system from all possible candidates: #{aruba.config.fixtures_directories.map { |p| format('"%s"', p) }.join(', ')}.) unless Aruba.platform.exist? path
|
|
34
|
-
|
|
35
|
-
path
|
|
36
|
-
elsif '~' == prefix
|
|
37
|
-
path = with_environment do
|
|
38
|
-
ArubaPath.new(File.expand_path(file_name))
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
fail ArgumentError, 'Expanding "~/" to "/" is not allowed' if path.to_s == '/'
|
|
42
|
-
fail ArgumentError, %(Expanding "~/" to a relative path "#{path}" is not allowed) unless path.absolute?
|
|
43
|
-
|
|
44
|
-
path.to_s
|
|
45
|
-
else
|
|
46
|
-
directory = File.join(aruba.root_directory, aruba.current_directory)
|
|
47
|
-
ArubaPath.new(File.join(*[directory, dir_string, file_name].compact)).expand_path.to_s
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
# rubocop:enable all
|
data/features/support/env.rb
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
if RUBY_VERSION < "1.9"
|
|
2
|
-
$stderr.puts "Sorry, Cucumber features are only meant to run on Ruby 1.9+ :("
|
|
3
|
-
exit 0
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
require "bundler"
|
|
7
|
-
Bundler.setup
|
|
8
|
-
require "aruba/cucumber"
|
|
9
|
-
require "aruba/config/jruby" if RUBY_ENGINE == "jruby"
|
|
10
|
-
require_relative "aruba_freedom_patch"
|
|
11
|
-
require "capybara/cucumber"
|
|
12
|
-
require "phantomjs/poltergeist"
|
|
13
|
-
|
|
14
|
-
# Fake rack app for capybara that just returns the latest coverage report from aruba temp project dir
|
|
15
|
-
Capybara.app = lambda { |env|
|
|
16
|
-
request_path = env["REQUEST_PATH"] || "/"
|
|
17
|
-
request_path = "/index.html" if request_path == "/"
|
|
18
|
-
[
|
|
19
|
-
200,
|
|
20
|
-
{"Content-Type" => "text/html"},
|
|
21
|
-
[File.read(File.join(File.dirname(__FILE__), "../../tmp/aruba/project/coverage", request_path))],
|
|
22
|
-
]
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
Capybara.default_driver = Capybara.javascript_driver = :poltergeist
|
|
26
|
-
|
|
27
|
-
Capybara.configure do |config|
|
|
28
|
-
config.ignore_hidden_elements = false
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
Before do
|
|
32
|
-
# JRuby takes it's time... See https://github.com/cucumber/aruba/issues/134
|
|
33
|
-
@aruba_timeout_seconds = RUBY_ENGINE == "jruby" ? 60 : 20
|
|
34
|
-
|
|
35
|
-
this_dir = File.dirname(__FILE__)
|
|
36
|
-
|
|
37
|
-
# Clean up and create blank state for fake project
|
|
38
|
-
cd(".") do
|
|
39
|
-
FileUtils.rm_rf "project"
|
|
40
|
-
FileUtils.cp_r File.join(this_dir, "../../spec/faked_project/"), "project"
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
step 'I cd to "project"'
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Workaround for https://github.com/cucumber/aruba/pull/125
|
|
47
|
-
Aruba.configure do |config|
|
|
48
|
-
config.exit_timeout = RUBY_ENGINE == "jruby" ? 60 : 20
|
|
49
|
-
config.command_runtime_environment = {"JRUBY_OPTS" => "--dev --debug"}
|
|
50
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
@test_unit
|
|
2
|
-
Feature:
|
|
3
|
-
|
|
4
|
-
Simply adding the basic simplecov lines to a project should get
|
|
5
|
-
the user a coverage report after running `rake test`
|
|
6
|
-
|
|
7
|
-
Scenario:
|
|
8
|
-
Given SimpleCov for Test/Unit is configured with:
|
|
9
|
-
"""
|
|
10
|
-
require 'simplecov'
|
|
11
|
-
SimpleCov.start
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
When I open the coverage report generated with `bundle exec rake test`
|
|
15
|
-
Then I should see the groups:
|
|
16
|
-
| name | coverage | files |
|
|
17
|
-
| All Files | 91.38% | 6 |
|
|
18
|
-
|
|
19
|
-
And I should see the source files:
|
|
20
|
-
| name | coverage |
|
|
21
|
-
| lib/faked_project.rb | 100.0 % |
|
|
22
|
-
| lib/faked_project/some_class.rb | 80.0 % |
|
|
23
|
-
| lib/faked_project/framework_specific.rb | 75.0 % |
|
|
24
|
-
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
25
|
-
| test/meta_magic_test.rb | 100.0 % |
|
|
26
|
-
| test/some_class_test.rb | 100.0 % |
|
|
27
|
-
|
|
28
|
-
# Note: faked_test.rb is not appearing here since that's the first unit test file
|
|
29
|
-
# loaded by Rake, and only there test_helper is required, which then loads simplecov
|
|
30
|
-
# and triggers tracking of all other loaded files! Solution for this would be to
|
|
31
|
-
# configure simplecov in this first test instead of test_helper.
|
|
32
|
-
|
|
33
|
-
And the report should be based upon:
|
|
34
|
-
| Unit Tests |
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
@test_unit
|
|
2
|
-
Feature:
|
|
3
|
-
|
|
4
|
-
Defining some groups and filters should give a corresponding
|
|
5
|
-
coverage report that respects those settings after running tests
|
|
6
|
-
|
|
7
|
-
Scenario:
|
|
8
|
-
Given SimpleCov for Test/Unit is configured with:
|
|
9
|
-
"""
|
|
10
|
-
require 'simplecov'
|
|
11
|
-
SimpleCov.start do
|
|
12
|
-
add_group 'Libs', 'lib/faked_project/'
|
|
13
|
-
add_filter '/test/'
|
|
14
|
-
end
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
When I open the coverage report generated with `bundle exec rake test`
|
|
18
|
-
Then I should see the groups:
|
|
19
|
-
| name | coverage | files |
|
|
20
|
-
| All Files | 88.1% | 4 |
|
|
21
|
-
| Libs | 86.11% | 3 |
|
|
22
|
-
| Ungrouped | 100.0% | 1 |
|
|
23
|
-
|
|
24
|
-
And I should see the source files:
|
|
25
|
-
| name | coverage |
|
|
26
|
-
| lib/faked_project.rb | 100.0 % |
|
|
27
|
-
| lib/faked_project/some_class.rb | 80.0 % |
|
|
28
|
-
| lib/faked_project/framework_specific.rb | 75.0 % |
|
|
29
|
-
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
@test_unit
|
|
2
|
-
Feature: Sophisticated grouping and filtering on Test/Unit
|
|
3
|
-
|
|
4
|
-
Defining groups and filters can be done by passing blocks or strings.
|
|
5
|
-
Blocks get each SimpleCov::SourceFile instance passed an can use arbitrary
|
|
6
|
-
and potentially weird conditions to remove files from the report or add them
|
|
7
|
-
to specific groups.
|
|
8
|
-
|
|
9
|
-
Scenario:
|
|
10
|
-
Given SimpleCov for Test/Unit is configured with:
|
|
11
|
-
"""
|
|
12
|
-
require 'simplecov'
|
|
13
|
-
SimpleCov.start do
|
|
14
|
-
add_group 'By block' do |src_file|
|
|
15
|
-
src_file.filename =~ /MaGiC/i
|
|
16
|
-
end
|
|
17
|
-
add_group 'By string', 'project/meta_magic'
|
|
18
|
-
|
|
19
|
-
add_filter 'faked_project.rb'
|
|
20
|
-
# Remove all files that include "describe" in their source
|
|
21
|
-
add_filter {|src_file| src_file.lines.any? {|line| line.src =~ /TestCase/ } }
|
|
22
|
-
add_filter {|src_file| src_file.covered_percent < 100 }
|
|
23
|
-
end
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
When I open the coverage report generated with `bundle exec rake test`
|
|
27
|
-
Then I should see the groups:
|
|
28
|
-
| name | coverage | files |
|
|
29
|
-
| All Files | 100.0% | 1 |
|
|
30
|
-
| By block | 100.0% | 1 |
|
|
31
|
-
| By string | 100.0% | 1 |
|
|
32
|
-
|
|
33
|
-
And I should see the source files:
|
|
34
|
-
| name | coverage |
|
|
35
|
-
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
@test_unit
|
|
2
|
-
Feature: Grouping on Test/Unit using a custom filter class
|
|
3
|
-
|
|
4
|
-
Next to passing a block or a string to define a group, you can also pass
|
|
5
|
-
a filter class. The filter class inherits from SimpleCov::Filter and
|
|
6
|
-
must implement the matches? method, which is used to determine whether
|
|
7
|
-
or not a file should be added to the group.
|
|
8
|
-
|
|
9
|
-
Scenario:
|
|
10
|
-
Given SimpleCov for Test/Unit is configured with:
|
|
11
|
-
"""
|
|
12
|
-
require 'simplecov'
|
|
13
|
-
class CoverageFilter < SimpleCov::Filter
|
|
14
|
-
def matches?(source_file)
|
|
15
|
-
source_file.covered_percent < filter_argument
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
SimpleCov.start do
|
|
19
|
-
add_group 'By filter class', CoverageFilter.new(90)
|
|
20
|
-
add_group 'By string', 'project/meta_magic'
|
|
21
|
-
end
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
When I open the coverage report generated with `bundle exec rake test`
|
|
25
|
-
Then I should see the groups:
|
|
26
|
-
| name | coverage | files |
|
|
27
|
-
| All Files | 91.38% | 6 |
|
|
28
|
-
| By filter class | 78.26% | 2 |
|
|
29
|
-
| By string | 100.0% | 1 |
|
|
30
|
-
| Ungrouped | 100.0% | 3 |
|
|
31
|
-
|
|
32
|
-
And I should see the source files:
|
|
33
|
-
| name | coverage |
|
|
34
|
-
| lib/faked_project/framework_specific.rb | 75.0 % |
|
|
35
|
-
| lib/faked_project/some_class.rb | 80.0 % |
|
|
36
|
-
| lib/faked_project.rb | 100.0 % |
|
|
37
|
-
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
38
|
-
| test/meta_magic_test.rb | 100.0 % |
|
|
39
|
-
| test/some_class_test.rb | 100.0 % |
|
|
40
|
-
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
@test_unit
|
|
2
|
-
Feature:
|
|
3
|
-
|
|
4
|
-
Running unit tests without simplecov configuration
|
|
5
|
-
|
|
6
|
-
Scenario: No config at all
|
|
7
|
-
When I successfully run `bundle exec rake test`
|
|
8
|
-
Then no coverage report should have been generated
|
|
9
|
-
|
|
10
|
-
Scenario: Configured, but not started
|
|
11
|
-
Given SimpleCov for Test/Unit is configured with:
|
|
12
|
-
"""
|
|
13
|
-
require 'simplecov'
|
|
14
|
-
SimpleCov.configure do
|
|
15
|
-
add_filter 'somefilter'
|
|
16
|
-
end
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
When I successfully run `bundle exec rake test`
|
|
20
|
-
Then no coverage report should have been generated
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
@test_unit @unicode
|
|
2
|
-
Feature:
|
|
3
|
-
|
|
4
|
-
Files with unicode in their source should be no problem at all for
|
|
5
|
-
generating a proper coverage report.
|
|
6
|
-
|
|
7
|
-
Background:
|
|
8
|
-
Given SimpleCov for Test/Unit is configured with:
|
|
9
|
-
"""
|
|
10
|
-
require 'simplecov'
|
|
11
|
-
SimpleCov.start 'test_frameworks'
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
Scenario: Snowman inside method string
|
|
15
|
-
Given a file named "lib/faked_project/unicode.rb" with:
|
|
16
|
-
"""
|
|
17
|
-
# encoding: UTF-8
|
|
18
|
-
class SourceCodeWithUnicode
|
|
19
|
-
def self.yell!
|
|
20
|
-
puts "☃"
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
When I open the coverage report generated with `bundle exec rake test`
|
|
26
|
-
Then I should see the groups:
|
|
27
|
-
| name | coverage | files |
|
|
28
|
-
| All Files | 86.67% | 5 |
|
|
29
|
-
|
|
30
|
-
And I should see the source files:
|
|
31
|
-
| name | coverage |
|
|
32
|
-
| lib/faked_project.rb | 100.0 % |
|
|
33
|
-
| lib/faked_project/some_class.rb | 80.0 % |
|
|
34
|
-
| lib/faked_project/framework_specific.rb | 75.0 % |
|
|
35
|
-
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
36
|
-
| lib/faked_project/unicode.rb | 66.67 % |
|
|
37
|
-
|
|
38
|
-
And the report should be based upon:
|
|
39
|
-
| Unit Tests |
|
|
40
|
-
|
|
41
|
-
Scenario: Author name in comment
|
|
42
|
-
Given a file named "lib/faked_project/unicode.rb" with:
|
|
43
|
-
"""
|
|
44
|
-
# encoding: UTF-8
|
|
45
|
-
# author: Javiér Hernández
|
|
46
|
-
class SomeClassWrittenByAForeigner
|
|
47
|
-
def self.yell!
|
|
48
|
-
foo
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
"""
|
|
52
|
-
|
|
53
|
-
When I open the coverage report generated with `bundle exec rake test`
|
|
54
|
-
Then I should see the groups:
|
|
55
|
-
| name | coverage | files |
|
|
56
|
-
| All Files | 86.67% | 5 |
|
|
57
|
-
|
|
58
|
-
And I should see the source files:
|
|
59
|
-
| name | coverage |
|
|
60
|
-
| lib/faked_project.rb | 100.0 % |
|
|
61
|
-
| lib/faked_project/some_class.rb | 80.0 % |
|
|
62
|
-
| lib/faked_project/framework_specific.rb | 75.0 % |
|
|
63
|
-
| lib/faked_project/meta_magic.rb | 100.0 % |
|
|
64
|
-
| lib/faked_project/unicode.rb | 66.67 % |
|
|
65
|
-
|
|
66
|
-
And the report should be based upon:
|
|
67
|
-
| Unit Tests |
|
data/simplecov.gemspec
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
$LOAD_PATH.push File.expand_path("../lib", __FILE__)
|
|
2
|
-
require "simplecov/version"
|
|
3
|
-
|
|
4
|
-
Gem::Specification.new do |gem|
|
|
5
|
-
gem.name = "simplecov"
|
|
6
|
-
gem.version = SimpleCov::VERSION
|
|
7
|
-
gem.platform = Gem::Platform::RUBY
|
|
8
|
-
gem.authors = ["Christoph Olszowka"]
|
|
9
|
-
gem.email = ["christoph at olszowka de"]
|
|
10
|
-
gem.homepage = "http://github.com/colszowka/simplecov"
|
|
11
|
-
gem.description = %(Code coverage for Ruby 1.9+ with a powerful configuration library and automatic merging of coverage across test suites)
|
|
12
|
-
gem.summary = gem.description
|
|
13
|
-
gem.license = "MIT"
|
|
14
|
-
|
|
15
|
-
gem.required_ruby_version = ">= 1.8.7"
|
|
16
|
-
|
|
17
|
-
gem.add_dependency "json", ">= 1.8", "< 3"
|
|
18
|
-
gem.add_dependency "simplecov-html", "~> 0.10.0"
|
|
19
|
-
gem.add_dependency "docile", "~> 1.1.0"
|
|
20
|
-
|
|
21
|
-
gem.add_development_dependency "bundler", "~> 1.9"
|
|
22
|
-
|
|
23
|
-
gem.files = `git ls-files`.split("\n")
|
|
24
|
-
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
25
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
26
|
-
gem.require_paths = ["lib"]
|
|
27
|
-
end
|
data/spec/1_8_fallbacks_spec.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require "helper"
|
|
2
|
-
|
|
3
|
-
# Tests that verify that on 1.8 versions of ruby, simplecov simply
|
|
4
|
-
# does not launch and does not cause errors on the way
|
|
5
|
-
#
|
|
6
|
-
# TODO: This should be expanded upon all methods that could potentially
|
|
7
|
-
# be called in a test/spec-helper simplecov config block
|
|
8
|
-
#
|
|
9
|
-
if RUBY_VERSION.start_with? "1.8"
|
|
10
|
-
describe "Ruby 1.8 fallback" do
|
|
11
|
-
it "return false when calling SimpleCov.start" do
|
|
12
|
-
expect(SimpleCov.start).to be false
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "return false when calling SimpleCov.start with a block" do
|
|
16
|
-
expect(SimpleCov.start { raise "Shouldn't reach this!" }).to be false
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "return false when calling SimpleCov.configure with a block" do
|
|
20
|
-
expect(SimpleCov.configure { raise "Shouldn't reach this!" }).to be false
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "allow to define a profile" do
|
|
24
|
-
expect do
|
|
25
|
-
SimpleCov.profiles.define "testprofile" do
|
|
26
|
-
add_filter "/config/"
|
|
27
|
-
end
|
|
28
|
-
end.not_to raise_error
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
require "helper"
|
|
2
|
-
|
|
3
|
-
if SimpleCov.usable?
|
|
4
|
-
describe SimpleCov::CommandGuesser do
|
|
5
|
-
subject { SimpleCov::CommandGuesser }
|
|
6
|
-
it 'correctly guesses "Unit Tests" for unit tests' do
|
|
7
|
-
subject.original_run_command = "/some/path/test/units/foo_bar_test.rb"
|
|
8
|
-
expect(subject.guess).to eq("Unit Tests")
|
|
9
|
-
subject.original_run_command = "test/units/foo.rb"
|
|
10
|
-
expect(subject.guess).to eq("Unit Tests")
|
|
11
|
-
subject.original_run_command = "test/foo.rb"
|
|
12
|
-
expect(subject.guess).to eq("Unit Tests")
|
|
13
|
-
subject.original_run_command = "test/{models,helpers,unit}/**/*_test.rb"
|
|
14
|
-
expect(subject.guess).to eq("Unit Tests")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it 'correctly guesses "Functional Tests" for functional tests' do
|
|
18
|
-
subject.original_run_command = "/some/path/test/functional/foo_bar_controller_test.rb"
|
|
19
|
-
expect(subject.guess).to eq("Functional Tests")
|
|
20
|
-
subject.original_run_command = "test/{controllers,mailers,functional}/**/*_test.rb"
|
|
21
|
-
expect(subject.guess).to eq("Functional Tests")
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'correctly guesses "Integration Tests" for integration tests' do
|
|
25
|
-
subject.original_run_command = "/some/path/test/integration/foo_bar_controller_test.rb"
|
|
26
|
-
expect(subject.guess).to eq("Integration Tests")
|
|
27
|
-
subject.original_run_command = "test/integration/**/*_test.rb"
|
|
28
|
-
expect(subject.guess).to eq("Integration Tests")
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'correctly guesses "Cucumber Features" for cucumber features' do
|
|
32
|
-
subject.original_run_command = "features"
|
|
33
|
-
expect(subject.guess).to eq("Cucumber Features")
|
|
34
|
-
subject.original_run_command = "cucumber"
|
|
35
|
-
expect(subject.guess).to eq("Cucumber Features")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it 'correctly guesses "RSpec" for RSpec' do
|
|
39
|
-
subject.original_run_command = "/some/path/spec/foo.rb"
|
|
40
|
-
expect(subject.guess).to eq("RSpec")
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "defaults to RSpec because RSpec constant is defined" do
|
|
44
|
-
subject.original_run_command = "some_arbitrary_command with arguments"
|
|
45
|
-
expect(subject.guess).to eq("RSpec")
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
data/spec/config_loader_spec.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require "helper"
|
|
2
|
-
|
|
3
|
-
describe "loading config" do
|
|
4
|
-
context "without ENV[HOME]" do
|
|
5
|
-
it "shouldn't raise any errors" do
|
|
6
|
-
home = ENV.delete("HOME")
|
|
7
|
-
begin
|
|
8
|
-
expect { load "simplecov/load_global_config.rb" }.not_to raise_error
|
|
9
|
-
ensure
|
|
10
|
-
ENV["HOME"] = home
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
data/spec/configuration_spec.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require "helper"
|
|
2
|
-
|
|
3
|
-
describe SimpleCov::Configuration do
|
|
4
|
-
let(:config_class) do
|
|
5
|
-
Class.new do
|
|
6
|
-
include SimpleCov::Configuration
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
let(:config) { config_class.new }
|
|
10
|
-
|
|
11
|
-
describe "#tracked_files" do
|
|
12
|
-
context "when configured" do
|
|
13
|
-
let(:glob) { "{app,lib}/**/*.rb" }
|
|
14
|
-
before { config.track_files(glob) }
|
|
15
|
-
|
|
16
|
-
it "returns the configured glob" do
|
|
17
|
-
expect(config.tracked_files).to eq glob
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
context "and configured again with nil" do
|
|
21
|
-
before { config.track_files(nil) }
|
|
22
|
-
|
|
23
|
-
it "returns nil" do
|
|
24
|
-
expect(config.tracked_files).to be_nil
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
context "when unconfigured" do
|
|
30
|
-
it "returns nil" do
|
|
31
|
-
expect(config.tracked_files).to be_nil
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
data/spec/deleted_source_spec.rb
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
require "helper"
|
|
2
|
-
|
|
3
|
-
# Test to verify correct handling of deleted files
|
|
4
|
-
# See https://github.com/colszowka/simplecov/issues/9
|
|
5
|
-
describe "A source file which is subsequently deleted" do
|
|
6
|
-
it "does not cause an error" do
|
|
7
|
-
Dir.chdir(File.join(File.dirname(__FILE__), "fixtures")) do
|
|
8
|
-
`ruby deleted_source_sample.rb`
|
|
9
|
-
expect($?.exitstatus).to be_zero
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
data/spec/faked_project/Gemfile
DELETED
data/spec/faked_project/Rakefile
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
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 %>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
Given /^I want to keep stuff simple$/ do
|
|
2
|
-
expect(1).to eq(1)
|
|
3
|
-
end
|
|
4
|
-
|
|
5
|
-
When /^I write my cukes for the fake project$/ do
|
|
6
|
-
expect(1).to eq(1)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
Then /^I make all necessary tests in a single step$/ do
|
|
10
|
-
expect(FakedProject.foo).to eq("bar")
|
|
11
|
-
|
|
12
|
-
expect(FrameworkSpecific.cucumber).to eq("Only tested in Cucumber")
|
|
13
|
-
|
|
14
|
-
expect(FakedProject.a_class_method).to eq("this is a mixed-in class method")
|
|
15
|
-
|
|
16
|
-
expect(FakedProject.new.an_instance_method).to eq("this is a mixed-in instance method")
|
|
17
|
-
expect(FakedProject.new.dynamic).to eq("A dynamically defined instance method")
|
|
18
|
-
|
|
19
|
-
something = SomeClass.new("foo")
|
|
20
|
-
expect(something.reverse).to eq("oof")
|
|
21
|
-
expect(something.compare_with("foo")).to be true
|
|
22
|
-
end
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
require "bundler/setup"
|
|
2
|
-
|
|
3
|
-
# We're injecting simplecov_config via aruba in cucumber here
|
|
4
|
-
# depending on what the test case is...
|
|
5
|
-
begin
|
|
6
|
-
require File.join(File.dirname(__FILE__), "simplecov_config")
|
|
7
|
-
rescue LoadError
|
|
8
|
-
$stderr.puts "No SimpleCov config file found!"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "/../../lib"))
|
|
12
|
-
require "faked_project"
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# A pile of methods that only get tested in their frameworks
|
|
2
|
-
# and thus make this file only 100% covered when all framework test
|
|
3
|
-
# results are merged
|
|
4
|
-
module FrameworkSpecific
|
|
5
|
-
class << self
|
|
6
|
-
def cucumber
|
|
7
|
-
"Only tested in Cucumber"
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def rspec
|
|
11
|
-
"Only tested in RSpec"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_unit
|
|
15
|
-
"Only tested in Test/Unit"
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|