simplecov-patched 0.14.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +31 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +88 -0
  5. data/.travis.yml +29 -0
  6. data/.yardopts +1 -0
  7. data/CHANGELOG.md +435 -0
  8. data/CONTRIBUTING.md +48 -0
  9. data/Gemfile +38 -0
  10. data/MIT-LICENSE +20 -0
  11. data/README.md +646 -0
  12. data/Rakefile +41 -0
  13. data/cucumber.yml +13 -0
  14. data/doc/alternate-formatters.md +36 -0
  15. data/doc/commercial-services.md +20 -0
  16. data/doc/editor-integration.md +13 -0
  17. data/features/config_autoload.feature +46 -0
  18. data/features/config_command_name.feature +45 -0
  19. data/features/config_coverage_dir.feature +33 -0
  20. data/features/config_deactivate_merging.feature +42 -0
  21. data/features/config_formatters.feature +77 -0
  22. data/features/config_merge_timeout.feature +39 -0
  23. data/features/config_nocov_token.feature +79 -0
  24. data/features/config_profiles.feature +44 -0
  25. data/features/config_project_name.feature +27 -0
  26. data/features/config_styles.feature +121 -0
  27. data/features/config_tracked_files.feature +29 -0
  28. data/features/cucumber_basic.feature +29 -0
  29. data/features/maximum_coverage_drop.feature +89 -0
  30. data/features/merging_test_unit_and_rspec.feature +44 -0
  31. data/features/minimum_coverage.feature +59 -0
  32. data/features/refuse_coverage_drop.feature +95 -0
  33. data/features/rspec_basic.feature +32 -0
  34. data/features/rspec_fails_on_initialization.feature +14 -0
  35. data/features/rspec_groups_and_filters_basic.feature +29 -0
  36. data/features/rspec_groups_and_filters_complex.feature +37 -0
  37. data/features/rspec_groups_using_filter_class.feature +41 -0
  38. data/features/rspec_without_simplecov.feature +20 -0
  39. data/features/skipping_code_blocks_manually.feature +70 -0
  40. data/features/step_definitions/html_steps.rb +44 -0
  41. data/features/step_definitions/simplecov_steps.rb +68 -0
  42. data/features/step_definitions/transformers.rb +13 -0
  43. data/features/step_definitions/web_steps.rb +64 -0
  44. data/features/support/env.rb +50 -0
  45. data/features/test_unit_basic.feature +34 -0
  46. data/features/test_unit_groups_and_filters_basic.feature +29 -0
  47. data/features/test_unit_groups_and_filters_complex.feature +35 -0
  48. data/features/test_unit_groups_using_filter_class.feature +40 -0
  49. data/features/test_unit_without_simplecov.feature +20 -0
  50. data/features/unicode_compatiblity.feature +67 -0
  51. data/lib/simplecov.rb +189 -0
  52. data/lib/simplecov/command_guesser.rb +59 -0
  53. data/lib/simplecov/configuration.rb +307 -0
  54. data/lib/simplecov/defaults.rb +121 -0
  55. data/lib/simplecov/exit_codes.rb +8 -0
  56. data/lib/simplecov/file_list.rb +59 -0
  57. data/lib/simplecov/filter.rb +54 -0
  58. data/lib/simplecov/formatter.rb +8 -0
  59. data/lib/simplecov/formatter/multi_formatter.rb +32 -0
  60. data/lib/simplecov/formatter/simple_formatter.rb +23 -0
  61. data/lib/simplecov/jruby_fix.rb +42 -0
  62. data/lib/simplecov/last_run.rb +24 -0
  63. data/lib/simplecov/load_global_config.rb +6 -0
  64. data/lib/simplecov/no_defaults.rb +2 -0
  65. data/lib/simplecov/profiles.rb +31 -0
  66. data/lib/simplecov/railtie.rb +7 -0
  67. data/lib/simplecov/railties/tasks.rake +11 -0
  68. data/lib/simplecov/raw_coverage.rb +39 -0
  69. data/lib/simplecov/result.rb +86 -0
  70. data/lib/simplecov/result_merger.rb +95 -0
  71. data/lib/simplecov/source_file.rb +196 -0
  72. data/lib/simplecov/version.rb +25 -0
  73. data/spec/1_8_fallbacks_spec.rb +31 -0
  74. data/spec/command_guesser_spec.rb +48 -0
  75. data/spec/config_loader_spec.rb +14 -0
  76. data/spec/configuration_spec.rb +35 -0
  77. data/spec/deleted_source_spec.rb +12 -0
  78. data/spec/faked_project/Gemfile +6 -0
  79. data/spec/faked_project/Rakefile +8 -0
  80. data/spec/faked_project/cucumber.yml +13 -0
  81. data/spec/faked_project/features/step_definitions/my_steps.rb +22 -0
  82. data/spec/faked_project/features/support/env.rb +12 -0
  83. data/spec/faked_project/features/test_stuff.feature +6 -0
  84. data/spec/faked_project/lib/faked_project.rb +11 -0
  85. data/spec/faked_project/lib/faked_project/framework_specific.rb +18 -0
  86. data/spec/faked_project/lib/faked_project/meta_magic.rb +24 -0
  87. data/spec/faked_project/lib/faked_project/some_class.rb +28 -0
  88. data/spec/faked_project/lib/faked_project/untested_class.rb +11 -0
  89. data/spec/faked_project/spec/faked_spec.rb +11 -0
  90. data/spec/faked_project/spec/forking_spec.rb +8 -0
  91. data/spec/faked_project/spec/meta_magic_spec.rb +15 -0
  92. data/spec/faked_project/spec/some_class_spec.rb +13 -0
  93. data/spec/faked_project/spec/spec_helper.rb +11 -0
  94. data/spec/faked_project/test/faked_test.rb +11 -0
  95. data/spec/faked_project/test/meta_magic_test.rb +13 -0
  96. data/spec/faked_project/test/some_class_test.rb +15 -0
  97. data/spec/faked_project/test/test_helper.rb +12 -0
  98. data/spec/file_list_spec.rb +50 -0
  99. data/spec/filters_spec.rb +98 -0
  100. data/spec/fixtures/app/controllers/sample_controller.rb +10 -0
  101. data/spec/fixtures/app/models/user.rb +10 -0
  102. data/spec/fixtures/deleted_source_sample.rb +15 -0
  103. data/spec/fixtures/frameworks/rspec_bad.rb +9 -0
  104. data/spec/fixtures/frameworks/rspec_good.rb +9 -0
  105. data/spec/fixtures/frameworks/testunit_bad.rb +9 -0
  106. data/spec/fixtures/frameworks/testunit_good.rb +9 -0
  107. data/spec/fixtures/iso-8859.rb +3 -0
  108. data/spec/fixtures/never.rb +2 -0
  109. data/spec/fixtures/resultset1.rb +4 -0
  110. data/spec/fixtures/resultset2.rb +4 -0
  111. data/spec/fixtures/sample.rb +16 -0
  112. data/spec/fixtures/skipped.rb +4 -0
  113. data/spec/fixtures/skipped_and_executed.rb +8 -0
  114. data/spec/fixtures/utf-8.rb +3 -0
  115. data/spec/helper.rb +26 -0
  116. data/spec/last_run_spec.rb +48 -0
  117. data/spec/multi_formatter_spec.rb +20 -0
  118. data/spec/raw_coverage_spec.rb +92 -0
  119. data/spec/result_merger_spec.rb +96 -0
  120. data/spec/result_spec.rb +209 -0
  121. data/spec/return_codes_spec.rb +34 -0
  122. data/spec/simplecov_spec.rb +110 -0
  123. data/spec/source_file_line_spec.rb +155 -0
  124. data/spec/source_file_spec.rb +141 -0
  125. data/spec/support/fail_rspec_on_ruby_warning.rb +75 -0
  126. metadata +320 -0
@@ -0,0 +1,44 @@
1
+ @test_unit @config @profiles
2
+ Feature:
3
+
4
+ In order to re-use SimpleCov settings across projects,
5
+ profiles can be defined that hold configuration settings
6
+ that can be loaded at once.
7
+
8
+ Background:
9
+ Given SimpleCov for Test/Unit is configured with:
10
+ """
11
+ require 'simplecov'
12
+ """
13
+
14
+ Scenario: Defining and using a custom profile
15
+ Given a file named ".simplecov" with:
16
+ """
17
+ SimpleCov.profiles.define 'custom_command' do
18
+ command_name "Profile Command"
19
+ end
20
+
21
+ SimpleCov.start do
22
+ load_profile 'test_frameworks'
23
+ load_profile 'custom_command'
24
+ end
25
+ """
26
+
27
+ When I open the coverage report generated with `bundle exec rake test`
28
+ Then I should see "4 files in total."
29
+ And I should see "using Profile Command" within "#footer"
30
+
31
+ Scenario: Using existing profile in custom profile and supplying profile to start command
32
+ Given a file named ".simplecov" with:
33
+ """
34
+ SimpleCov.profiles.define 'my_profile' do
35
+ load_profile 'test_frameworks'
36
+ command_name "My Profile"
37
+ end
38
+
39
+ SimpleCov.start 'my_profile'
40
+ """
41
+
42
+ When I open the coverage report generated with `bundle exec rake test`
43
+ Then I should see "4 files in total."
44
+ And I should see "using My Profile" within "#footer"
@@ -0,0 +1,27 @@
1
+ @test_unit @config
2
+ Feature:
3
+
4
+ SimpleCov guesses the project name from the project root dir's name.
5
+ If this is not sufficient for you, you can specify a custom name using
6
+ SimpleCov.project_name('xyz')
7
+
8
+
9
+ Scenario: Guessed name
10
+ Given SimpleCov for Test/Unit is configured with:
11
+ """
12
+ require 'simplecov'
13
+ SimpleCov.start
14
+ """
15
+
16
+ When I open the coverage report generated with `bundle exec rake test`
17
+ Then I should see "Code coverage for Project" within "title"
18
+
19
+ Scenario: Custom name
20
+ Given SimpleCov for Test/Unit is configured with:
21
+ """
22
+ require 'simplecov'
23
+ SimpleCov.start { project_name "Superfancy 2.0" }
24
+ """
25
+
26
+ When I open the coverage report generated with `bundle exec rake test`
27
+ Then I should see "Code coverage for Superfancy 2.0" within "title"
@@ -0,0 +1,121 @@
1
+ @test_unit @config
2
+ Feature:
3
+
4
+ There's several ways to configure SimpleCov. All of those
5
+ config schemes below are equivalent and can be chosen by personal
6
+ preference or project requirements.
7
+
8
+ Background:
9
+ Given SimpleCov for Test/Unit is configured with:
10
+ """
11
+ require 'simplecov'
12
+ """
13
+
14
+ Scenario: Inside start block
15
+ Given a file named ".simplecov" with:
16
+ """
17
+ SimpleCov.start do
18
+ add_filter 'test'
19
+ command_name 'Config Test Runner'
20
+ end
21
+ """
22
+
23
+ When I open the coverage report generated with `bundle exec rake test`
24
+ Then I should see "4 files in total."
25
+ And I should see "using Config Test Runner" within "#footer"
26
+
27
+ Scenario: Inside start block, using instance var from outside
28
+ Given a file named ".simplecov" with:
29
+ """
30
+ @filter = 'test'
31
+ SimpleCov.start do
32
+ add_filter @filter
33
+ command_name 'Config Test Runner'
34
+ end
35
+ """
36
+
37
+ When I open the coverage report generated with `bundle exec rake test`
38
+ Then I should see "4 files in total."
39
+ And I should see "using Config Test Runner" within "#footer"
40
+
41
+ Scenario: Inside start block, using local var from outside
42
+ Given a file named ".simplecov" with:
43
+ """
44
+ filter = 'test'
45
+ SimpleCov.start do
46
+ add_filter filter
47
+ command_name 'Config Test Runner'
48
+ end
49
+ """
50
+
51
+ When I open the coverage report generated with `bundle exec rake test`
52
+ Then I should see "4 files in total."
53
+ And I should see "using Config Test Runner" within "#footer"
54
+
55
+ Scenario: Explicitly before start block
56
+ Given a file named ".simplecov" with:
57
+ """
58
+ SimpleCov.add_filter 'test'
59
+ SimpleCov.command_name 'Config Test Runner'
60
+ SimpleCov.start
61
+ """
62
+
63
+ When I open the coverage report generated with `bundle exec rake test`
64
+ Then I should see "4 files in total."
65
+ And I should see "using Config Test Runner" within "#footer"
66
+
67
+ Scenario: Explicitly after start block
68
+ Given a file named ".simplecov" with:
69
+ """
70
+ SimpleCov.start
71
+ SimpleCov.add_filter 'test'
72
+ SimpleCov.command_name 'Config Test Runner'
73
+ """
74
+
75
+ When I open the coverage report generated with `bundle exec rake test`
76
+ Then I should see "4 files in total."
77
+ And I should see "using Config Test Runner" within "#footer"
78
+
79
+ Scenario: Using configure block after start
80
+ Given a file named ".simplecov" with:
81
+ """
82
+ SimpleCov.start
83
+ SimpleCov.configure do
84
+ add_filter 'test'
85
+ command_name 'Config Test Runner'
86
+ end
87
+ """
88
+
89
+ When I open the coverage report generated with `bundle exec rake test`
90
+ Then I should see "4 files in total."
91
+ And I should see "using Config Test Runner" within "#footer"
92
+
93
+ Scenario: Using configure block before start
94
+ Given a file named ".simplecov" with:
95
+ """
96
+ SimpleCov.configure do
97
+ add_filter 'test'
98
+ command_name 'Config Test Runner'
99
+ end
100
+ SimpleCov.start
101
+ """
102
+
103
+ When I open the coverage report generated with `bundle exec rake test`
104
+ Then I should see "4 files in total."
105
+ And I should see "using Config Test Runner" within "#footer"
106
+
107
+ Scenario: Mixing configure and start block config
108
+ Given a file named ".simplecov" with:
109
+ """
110
+ SimpleCov.configure do
111
+ command_name 'Config Test Runner'
112
+ end
113
+ SimpleCov.start do
114
+ add_filter 'test'
115
+ end
116
+ """
117
+
118
+ When I open the coverage report generated with `bundle exec rake test`
119
+ Then I should see "4 files in total."
120
+ And I should see "using Config Test Runner" within "#footer"
121
+
@@ -0,0 +1,29 @@
1
+ @test_unit
2
+ Feature:
3
+
4
+ Using the setting `tracked_files` should add files that were not
5
+ required to the report.
6
+
7
+ Scenario:
8
+ Given SimpleCov for Test/Unit is configured with:
9
+ """
10
+ require 'simplecov'
11
+ SimpleCov.start do
12
+ track_files "lib/**/*.rb"
13
+ end
14
+ """
15
+
16
+ When I open the coverage report generated with `bundle exec rake test`
17
+ Then I should see the groups:
18
+ | name | coverage | files |
19
+ | All Files | 76.81% | 7 |
20
+
21
+ And I should see the source files:
22
+ | name | coverage |
23
+ | lib/faked_project.rb | 100.0 % |
24
+ | lib/faked_project/untested_class.rb | 0.0 % |
25
+ | lib/faked_project/some_class.rb | 80.0 % |
26
+ | lib/faked_project/framework_specific.rb | 75.0 % |
27
+ | lib/faked_project/meta_magic.rb | 100.0 % |
28
+ | test/meta_magic_test.rb | 100.0 % |
29
+ | test/some_class_test.rb | 100.0 % |
@@ -0,0 +1,29 @@
1
+ @cucumber
2
+ Feature:
3
+
4
+ Simply adding the basic simplecov lines to a project should get
5
+ the user a coverage report after running `cucumber features`
6
+
7
+ Scenario:
8
+ Given SimpleCov for Cucumber is configured with:
9
+ """
10
+ require 'simplecov'
11
+ SimpleCov.start
12
+ """
13
+
14
+ When I open the coverage report generated with `bundle exec cucumber features`
15
+ Then I should see the groups:
16
+ | name | coverage | files |
17
+ | All Files | 91.23% | 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
+ | features/step_definitions/my_steps.rb | 100.0 % |
26
+ | features/support/simplecov_config.rb | 100.0 % |
27
+
28
+ And the report should be based upon:
29
+ | Cucumber Features |
@@ -0,0 +1,89 @@
1
+ @test_unit @config
2
+ Feature:
3
+
4
+ Exit code should be non-zero if the overall coverage decreases by more than
5
+ the maximum_coverage_drop threshold.
6
+
7
+ Scenario: maximum_coverage_drop configured cam cause spec failure
8
+ Given SimpleCov for Test/Unit is configured with:
9
+ """
10
+ require 'simplecov'
11
+ SimpleCov.start do
12
+ add_filter 'test.rb'
13
+ maximum_coverage_drop 3.14
14
+ end
15
+ """
16
+
17
+ When I run `bundle exec rake test`
18
+ Then the exit status should be 0
19
+ And a file named "coverage/.last_run.json" should exist
20
+
21
+ Given a file named "lib/faked_project/missed.rb" with:
22
+ """
23
+ class UncoveredSourceCode
24
+ def foo
25
+ never_reached
26
+ rescue => err
27
+ but no one cares about invalid ruby here
28
+ end
29
+ end
30
+ """
31
+
32
+ When I run `bundle exec rake test`
33
+ Then the exit status should not be 0
34
+ And the output should contain "Coverage has dropped by 3.32% since the last time (maximum allowed: 3.14%)."
35
+ And a file named "coverage/.last_run.json" should exist
36
+ And the file "coverage/.last_run.json" should contain:
37
+ """
38
+ {
39
+ "result": {
40
+ "covered_percent": 88.1
41
+ }
42
+ }
43
+ """
44
+
45
+ Scenario: maximum_coverage_drop not configured updates resultset
46
+ Given SimpleCov for Test/Unit is configured with:
47
+ """
48
+ require 'simplecov'
49
+ SimpleCov.start do
50
+ add_filter 'test.rb'
51
+ end
52
+ """
53
+
54
+ When I run `bundle exec rake test`
55
+ Then the exit status should be 0
56
+ And a file named "coverage/.last_run.json" should exist
57
+ And the file "coverage/.last_run.json" should contain:
58
+ """
59
+ {
60
+ "result": {
61
+ "covered_percent": 88.1
62
+ }
63
+ }
64
+ """
65
+
66
+ Given a file named "lib/faked_project/missed.rb" with:
67
+ """
68
+ class UncoveredSourceCode
69
+ def foo
70
+ never_reached
71
+ rescue => err
72
+ but no one cares about invalid ruby here
73
+ end
74
+ end
75
+ """
76
+
77
+ When I run `bundle exec rake test`
78
+ Then the exit status should be 0
79
+ And a file named "coverage/.last_run.json" should exist
80
+ And the file "coverage/.last_run.json" should contain:
81
+ """
82
+ {
83
+ "result": {
84
+ "covered_percent": 84.78
85
+ }
86
+ }
87
+ """
88
+
89
+
@@ -0,0 +1,44 @@
1
+ @test_unit @rspec @merging
2
+ Feature:
3
+
4
+ Test suites like RSpec and Test/Unit should be merged automatically
5
+ when both have been run recently. The coverage report will feature
6
+ the joined results of all test suites that are using SimpleCov.
7
+
8
+ Scenario:
9
+ Given SimpleCov for Test/Unit is configured with:
10
+ """
11
+ require 'simplecov'
12
+ SimpleCov.start do
13
+ add_filter 'test.rb'
14
+ add_filter 'spec.rb'
15
+ end
16
+ """
17
+ And SimpleCov for RSpec is configured with:
18
+ """
19
+ require 'simplecov'
20
+ SimpleCov.start do
21
+ add_filter 'test.rb'
22
+ add_filter 'spec.rb'
23
+ end
24
+ """
25
+
26
+ When I open the coverage report generated with `bundle exec rake test`
27
+ Then the report should be based upon:
28
+ | Unit Tests |
29
+
30
+ When I open the coverage report generated with `bundle exec rspec spec`
31
+ Then the report should be based upon:
32
+ | RSpec |
33
+ | Unit Tests |
34
+
35
+ And I should see the groups:
36
+ | name | coverage | files |
37
+ | All Files | 90.48% | 4 |
38
+
39
+ And I should see the source files:
40
+ | name | coverage |
41
+ | lib/faked_project.rb | 100.0 % |
42
+ | lib/faked_project/some_class.rb | 80.0 % |
43
+ | lib/faked_project/framework_specific.rb | 87.5 % |
44
+ | lib/faked_project/meta_magic.rb | 100.0 % |
@@ -0,0 +1,59 @@
1
+ @test_unit @config
2
+ Feature:
3
+
4
+ Exit code should be non-zero if the overall coverage is below the
5
+ minimum_coverage threshold.
6
+
7
+ Scenario:
8
+ Given SimpleCov for Test/Unit is configured with:
9
+ """
10
+ require 'simplecov'
11
+ SimpleCov.start do
12
+ add_filter 'test.rb'
13
+ minimum_coverage 90
14
+ end
15
+ """
16
+
17
+ When I run `bundle exec rake test`
18
+ Then the exit status should not be 0
19
+ And the output should contain "Coverage (88.10%) is below the expected minimum coverage (90.00%)."
20
+
21
+ Scenario:
22
+ Given SimpleCov for Test/Unit is configured with:
23
+ """
24
+ require 'simplecov'
25
+ SimpleCov.start do
26
+ add_filter 'test.rb'
27
+ minimum_coverage 88.11
28
+ end
29
+ """
30
+
31
+ When I run `bundle exec rake test`
32
+ Then the exit status should not be 0
33
+ And the output should contain "Coverage (88.10%) is below the expected minimum coverage (88.11%)."
34
+
35
+ Scenario:
36
+ Given SimpleCov for Test/Unit is configured with:
37
+ """
38
+ require 'simplecov'
39
+ SimpleCov.start do
40
+ add_filter 'test.rb'
41
+ minimum_coverage 88.10
42
+ end
43
+ """
44
+
45
+ When I run `bundle exec rake test`
46
+ Then the exit status should be 0
47
+
48
+ Scenario:
49
+ Given SimpleCov for Test/Unit is configured with:
50
+ """
51
+ require 'simplecov'
52
+ SimpleCov.start do
53
+ add_filter 'test.rb'
54
+ end
55
+ """
56
+
57
+ When I run `bundle exec rake test`
58
+ Then the exit status should be 0
59
+