simplecov 0.6.4 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.travis.yml +9 -3
- data/.yardopts +1 -0
- data/CHANGELOG.md +22 -0
- data/CONTRIBUTING.md +20 -0
- data/README.md +58 -36
- data/features/config_formatters.feature +52 -0
- data/features/maximum_coverage_drop.feature +36 -0
- data/features/merging_test_unit_and_rspec.feature +1 -1
- data/features/minimum_coverage.feature +59 -0
- data/features/refuse_coverage_drop.feature +35 -0
- data/lib/simplecov.rb +11 -0
- data/lib/simplecov/configuration.rb +35 -7
- data/lib/simplecov/defaults.rb +30 -1
- data/lib/simplecov/exit_codes.rb +5 -0
- data/lib/simplecov/formatter.rb +1 -0
- data/lib/simplecov/formatter/multi_formatter.rb +25 -0
- data/lib/simplecov/json.rb +27 -0
- data/lib/simplecov/last_run.rb +20 -0
- data/lib/simplecov/result_merger.rb +3 -19
- data/lib/simplecov/version.rb +1 -1
- data/simplecov.gemspec +1 -1
- data/test/fixtures/sample.rb +1 -1
- data/test/test_result.rb +16 -1
- metadata +80 -98
- data/gemfiles/multi_json-legacy.gemfile.lock +0 -85
- data/gemfiles/multi_json-new.gemfile.lock +0 -85
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
before_install:
|
2
|
+
- echo "yes" | gem uninstall json
|
1
3
|
script:
|
2
4
|
- bundle
|
3
5
|
- rake appraisal:install
|
@@ -6,10 +8,14 @@ rvm:
|
|
6
8
|
- 1.8.7
|
7
9
|
- 1.9.2
|
8
10
|
- 1.9.3
|
11
|
+
- ruby-head
|
9
12
|
- ree
|
10
|
-
- rbx
|
11
|
-
- jruby
|
13
|
+
- rbx-18mode
|
14
|
+
- jruby-18mode
|
15
|
+
matrix:
|
16
|
+
allow_failures:
|
17
|
+
- rvm: ruby-head
|
12
18
|
notifications:
|
13
19
|
email:
|
14
20
|
on_success: always
|
15
|
-
on_failure: always
|
21
|
+
on_failure: always
|
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
- **/*.md
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
Unreleased ([changes](https://github.com/colszowka/simplecov/compare/v0.7.0...master))
|
2
|
+
-------------------
|
3
|
+
|
4
|
+
v0.7.0, 2012-10-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.6.4...v0.7.0))
|
5
|
+
-------------------
|
6
|
+
|
7
|
+
* [FEATURE] The new `maximum_coverage_drop` and `minimum_coverage` now allow you to fail your build when the
|
8
|
+
coverage dropped by more than what you allowed or is below a minimum value required. Also, `refuse_coverage_drop` disallows
|
9
|
+
any coverage drops between test runs.
|
10
|
+
See https://github.com/colszowka/simplecov/pull/151, https://github.com/colszowka/simplecov/issues/11,
|
11
|
+
https://github.com/colszowka/simplecov/issues/90, and https://github.com/colszowka/simplecov/issues/96 (thanks to @infertux)
|
12
|
+
* [FEATURE] SimpleCov now ships with a built-in MultiFormatter which allows the easy usage of multiple result formatters at
|
13
|
+
the same time without the need to write custom wrapper code.
|
14
|
+
See https://github.com/colszowka/simplecov/pull/158 (thanks to @nikitug)
|
15
|
+
* [BUGFIX] The usage of digits, hyphens and underscores in group names could lead to broken tab navigation
|
16
|
+
in the default simplecov-html reports. See https://github.com/colszowka/simplecov-html/pull/14 (thanks to @ebelgarts)
|
17
|
+
* [REFACTORING] A few more ruby warnings removed. See https://github.com/colszowka/simplecov/issues/106 and
|
18
|
+
https://github.com/colszowka/simplecov/pull/139. (thanks to @lukejahnke)
|
19
|
+
* A [Pledgie button](https://github.com/colszowka/simplecov/commit/63cfa99f8658fa5cc66a38c83b3195fdf71b9e93) for those that
|
20
|
+
feel generous :)
|
21
|
+
* The usual bunch of README fixes and documentation tweaks. Thanks to everyone who contributed those!
|
22
|
+
|
1
23
|
v0.6.4, 2012-05-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.6.3...v0.6.4))
|
2
24
|
-------------------
|
3
25
|
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Making Contributions
|
2
|
+
|
3
|
+
To fetch & test the library for development, do:
|
4
|
+
|
5
|
+
$ git clone https://github.com/colszowka/simplecov.git
|
6
|
+
$ cd simplecov
|
7
|
+
$ bundle
|
8
|
+
$ rake appraisal:install
|
9
|
+
$ rake appraisal
|
10
|
+
|
11
|
+
For more information on the appraisal gem (for testing against multiple gem dependency versions), please see
|
12
|
+
https://github.com/thoughtbot/appraisal/
|
13
|
+
|
14
|
+
If you want to contribute, please:
|
15
|
+
|
16
|
+
* Fork the project.
|
17
|
+
* Make your feature addition or bug fix.
|
18
|
+
* Add tests for it. This is important so I don't break it in a future version unintentionally.
|
19
|
+
* **Bonus Points** go out to anyone who also updates `CHANGELOG.md` :)
|
20
|
+
* Send me a pull request on Github.
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
SimpleCov [![Build Status](https://secure.travis-ci.org/colszowka/simplecov.png)][Continuous Integration] [![Dependency Status](https://gemnasium.com/colszowka/simplecov.png)][Dependencies]
|
2
2
|
=========
|
3
|
-
|
3
|
+
**Code coverage for Ruby 1.9**
|
4
4
|
|
5
5
|
* [Source Code]
|
6
6
|
* [API documentation]
|
@@ -8,7 +8,7 @@ SimpleCov [![Build Status](https://secure.travis-ci.org/colszowka/simplecov.png)
|
|
8
8
|
* [Rubygem]
|
9
9
|
* [Continuous Integration]
|
10
10
|
|
11
|
-
[Coverage]: http://www.ruby-doc.org/
|
11
|
+
[Coverage]: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/coverage/rdoc/Coverage.html "API doc for Ruby 1.9's Coverage library"
|
12
12
|
[Source Code]: https://github.com/colszowka/simplecov "Source Code @ GitHub"
|
13
13
|
[API documentation]: http://rubydoc.info/gems/simplecov/frames "RDoc API Documentation at Rubydoc.info"
|
14
14
|
[Configuration]: http://rubydoc.info/gems/simplecov/SimpleCov/Configuration "Configuration options API documentation"
|
@@ -17,7 +17,9 @@ SimpleCov [![Build Status](https://secure.travis-ci.org/colszowka/simplecov.png)
|
|
17
17
|
[Continuous Integration]: http://travis-ci.org/colszowka/simplecov "SimpleCov is built around the clock by travis-ci.org"
|
18
18
|
[Dependencies]: https://gemnasium.com/colszowka/simplecov "SimpleCov dependencies on Gemnasium"
|
19
19
|
[simplecov-html]: https://github.com/colszowka/simplecov-html "SimpleCov HTML Formatter Source Code @ GitHub"
|
20
|
+
[Pledgie]: http://www.pledgie.com/campaigns/18379
|
20
21
|
|
22
|
+
[![You can support the development of SimpleCov via Pledgie - thanks for your help](http://www.pledgie.com/campaigns/18379.png?skin_name=chrome)][Pledgie]
|
21
23
|
|
22
24
|
SimpleCov is a code coverage analysis tool for Ruby 1.9. It uses [1.9's built-in Coverage][Coverage] library to gather code
|
23
25
|
coverage data, but makes processing its results much easier by providing a clean API to filter, group, merge, format
|
@@ -48,8 +50,20 @@ Getting started
|
|
48
50
|
|
49
51
|
# Previous content of test helper now starts here
|
50
52
|
|
51
|
-
**Note:** If SimpleCov starts after your application code is already loaded (via `require`), it won't be able to
|
52
|
-
The `SimpleCov.start` **must** be issued **before any of your application code
|
53
|
+
**Note:** If SimpleCov starts after your application code is already loaded (via `require`), it won't be able to
|
54
|
+
track your files and their coverage! The `SimpleCov.start` **must** be issued **before any of your application code
|
55
|
+
is required!**
|
56
|
+
|
57
|
+
SimpleCov must be running in the process that you want the code coverage analysis to happen on. When testing a server
|
58
|
+
process (i.e. a JSON API endpoint) via a separate test process (i.e. when using Selenium) where you want to see all
|
59
|
+
code executed by the `rails server`, and not just code executed in your actual test files, you'll want to add something
|
60
|
+
like this to the top of `script/rails`:
|
61
|
+
|
62
|
+
if ENV['RAILS_ENV'] == 'test'
|
63
|
+
require 'simplecov'
|
64
|
+
SimpleCov.start 'rails'
|
65
|
+
puts "required simplecov"
|
66
|
+
end
|
53
67
|
|
54
68
|
3. Run your tests, open up `coverage/index.html` in your browser and check out what you've missed so far.
|
55
69
|
|
@@ -148,6 +162,18 @@ to use SimpleCov with them. Here's an overview of the known ones:
|
|
148
162
|
<a href="https://github.com/colszowka/simplecov/issues/80">SimpleCov #80</a>
|
149
163
|
</td>
|
150
164
|
</tr>
|
165
|
+
<tr>
|
166
|
+
<td>
|
167
|
+
<b>RubyMine</b>
|
168
|
+
</td>
|
169
|
+
<td>
|
170
|
+
The <a href="https://www.jetbrains.com/ruby/">RubyMine IDE</a> has built-in support for SimpleCov's coverage reports,
|
171
|
+
though you might need to explicitly set the output root using `SimpleCov.root('foo/bar/baz')`
|
172
|
+
</td>
|
173
|
+
<td>
|
174
|
+
<a href="https://github.com/colszowka/simplecov/issues/95">SimpleCov #95</a>
|
175
|
+
</td>
|
176
|
+
</tr>
|
151
177
|
</table>
|
152
178
|
|
153
179
|
## Configuring SimpleCov
|
@@ -264,7 +290,7 @@ Add your groups with:
|
|
264
290
|
|
265
291
|
Normally, you want to have your coverage analyzed across ALL of your test suites, right?
|
266
292
|
|
267
|
-
Simplecov automatically caches coverage results in your (coverage_path)
|
293
|
+
Simplecov automatically caches coverage results in your (coverage_path)/.resultset.json. Those results will then
|
268
294
|
be automatically merged when generating the result, so when coverage is set up properly for cucumber and your
|
269
295
|
unit / functional / integration tests, all of those test suites will be taken into account when building the
|
270
296
|
coverage report.
|
@@ -391,6 +417,23 @@ You can define what simplecov should do when your test suite finishes by customi
|
|
391
417
|
|
392
418
|
Above is the default behaviour. Do whatever you like instead!
|
393
419
|
|
420
|
+
### Minimum coverage
|
421
|
+
|
422
|
+
You can define the minimum coverage percentage expected. SimpleCov will return non-zero if unmet.
|
423
|
+
|
424
|
+
SimpleCov.minimum_coverage 90
|
425
|
+
|
426
|
+
### Maximum coverage drop
|
427
|
+
|
428
|
+
You can define the maximum coverage drop percentage at once. SimpleCov will return non-zero if exceeded.
|
429
|
+
|
430
|
+
SimpleCov.maximum_coverage_drop 5
|
431
|
+
|
432
|
+
### Refuse dropping coverage
|
433
|
+
|
434
|
+
You can also entirely refuse dropping coverage between test runs:
|
435
|
+
|
436
|
+
SimpleCov.refuse_coverage_drop
|
394
437
|
|
395
438
|
## Using your own formatter
|
396
439
|
|
@@ -404,18 +447,12 @@ being an instance of SimpleCov::Result. Do whatever your wish with that!
|
|
404
447
|
|
405
448
|
## Using multiple formatters
|
406
449
|
|
407
|
-
|
408
|
-
|
409
|
-
class SimpleCov::Formatter::MergedFormatter
|
410
|
-
def format(result)
|
411
|
-
SimpleCov::Formatter::HTMLFormatter.new.format(result)
|
412
|
-
SimpleCov::Formatter::CSVFormatter.new.format(result)
|
413
|
-
end
|
414
|
-
end
|
415
|
-
|
416
|
-
Then configure the formatter to use the new merger:
|
450
|
+
If you want to use multiple result formats, as of SimpleCov 0.7.0 you can use the built-in MultiFormatter:
|
417
451
|
|
418
|
-
SimpleCov.formatter = SimpleCov::Formatter::
|
452
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
453
|
+
SimpleCov::Formatter::HTMLFormatter,
|
454
|
+
SimpleCov::Formatter::CSVFormatter,
|
455
|
+
]
|
419
456
|
|
420
457
|
## Available formatters
|
421
458
|
|
@@ -432,7 +469,10 @@ available:
|
|
432
469
|
|
433
470
|
CSV formatter for SimpleCov code coverage tool for ruby 1.9+
|
434
471
|
|
472
|
+
#### [simplecov-vim](https://github.com/nyarly/Simplecov-Vim)
|
473
|
+
*by Judson Lester*
|
435
474
|
|
475
|
+
A formatter for Simplecov that emits a Vim script to mark up code files with coverage information.
|
436
476
|
|
437
477
|
## Ruby version compatibility
|
438
478
|
|
@@ -445,27 +485,9 @@ interpreters add the coverage library.
|
|
445
485
|
|
446
486
|
SimpleCov is built in [Continuous Integration] on 1.8.7, ree, 1.9.2, 1.9.3.
|
447
487
|
|
488
|
+
## Contributing
|
448
489
|
|
449
|
-
|
450
|
-
## Contributions
|
451
|
-
|
452
|
-
To fetch & test the library for development, do:
|
453
|
-
|
454
|
-
$ git clone https://github.com/colszowka/simplecov.git
|
455
|
-
$ cd simplecov
|
456
|
-
$ bundle
|
457
|
-
$ rake appraisal:install
|
458
|
-
$ rake appraisal
|
459
|
-
|
460
|
-
For more information on the appraisal gem (for testing against multiple gem dependency versions), please see
|
461
|
-
https://github.com/thoughtbot/appraisal/
|
462
|
-
|
463
|
-
If you want to contribute, please:
|
464
|
-
|
465
|
-
* Fork the project.
|
466
|
-
* Make your feature addition or bug fix.
|
467
|
-
* Add tests for it. This is important so I don't break it in a future version unintentionally.
|
468
|
-
* Send me a pull request on Github.
|
490
|
+
See the [contributing guide](https://github.com/colszowka/simplecov/blob/master/CONTRIBUTING.md).
|
469
491
|
|
470
492
|
## Kudos
|
471
493
|
|
@@ -0,0 +1,52 @@
|
|
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.formatter = SimpleCov::Formatter::MultiFormatter[
|
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/
|
@@ -0,0 +1,36 @@
|
|
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:
|
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
|
+
|
@@ -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
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
@test_unit @config
|
2
|
+
Feature:
|
3
|
+
|
4
|
+
Exit code should be non-zero if the overall coverage decreases.
|
5
|
+
|
6
|
+
Scenario:
|
7
|
+
Given SimpleCov for Test/Unit is configured with:
|
8
|
+
"""
|
9
|
+
require 'simplecov'
|
10
|
+
SimpleCov.start do
|
11
|
+
add_filter 'test.rb'
|
12
|
+
refuse_coverage_drop
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
When I run `bundle exec rake test`
|
17
|
+
Then the exit status should be 0
|
18
|
+
And a file named "coverage/.last_run.json" should exist
|
19
|
+
|
20
|
+
Given a file named "lib/faked_project/missed.rb" with:
|
21
|
+
"""
|
22
|
+
class UncoveredSourceCode
|
23
|
+
def foo
|
24
|
+
never_reached
|
25
|
+
rescue => err
|
26
|
+
but no one cares about invalid ruby here
|
27
|
+
end
|
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 has dropped by 3.32% since the last time (maximum allowed: 0.00%)."
|
34
|
+
And a file named "coverage/.last_run.json" should exist
|
35
|
+
|
data/lib/simplecov.rb
CHANGED
@@ -54,6 +54,14 @@ module SimpleCov
|
|
54
54
|
self.running = false
|
55
55
|
end
|
56
56
|
|
57
|
+
#
|
58
|
+
# Returns nil if the result has not been computed
|
59
|
+
# Otherwise, returns the result
|
60
|
+
#
|
61
|
+
def result?
|
62
|
+
defined? @result and @result
|
63
|
+
end
|
64
|
+
|
57
65
|
#
|
58
66
|
# Applies the configured filters to the given array of SimpleCov::SourceFile items
|
59
67
|
#
|
@@ -105,12 +113,15 @@ end
|
|
105
113
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__)))
|
106
114
|
require 'simplecov/configuration'
|
107
115
|
SimpleCov.send :extend, SimpleCov::Configuration
|
116
|
+
require 'simplecov/exit_codes'
|
117
|
+
require 'simplecov/json'
|
108
118
|
require 'simplecov/adapters'
|
109
119
|
require 'simplecov/source_file'
|
110
120
|
require 'simplecov/file_list'
|
111
121
|
require 'simplecov/result'
|
112
122
|
require 'simplecov/filter'
|
113
123
|
require 'simplecov/formatter'
|
124
|
+
require 'simplecov/last_run'
|
114
125
|
require 'simplecov/merge_helpers'
|
115
126
|
require 'simplecov/result_merger'
|
116
127
|
require 'simplecov/command_guesser'
|
@@ -60,7 +60,7 @@ module SimpleCov::Configuration
|
|
60
60
|
@name ||= SimpleCov::CommandGuesser.guess
|
61
61
|
@name
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
#
|
65
65
|
# Gets or sets the configured formatter.
|
66
66
|
#
|
@@ -108,7 +108,7 @@ module SimpleCov::Configuration
|
|
108
108
|
# add_filter 'foobar'
|
109
109
|
# end
|
110
110
|
#
|
111
|
-
# This is equivalent to SimpleCov.add_filter 'foobar' and thus makes it easier to set a
|
111
|
+
# This is equivalent to SimpleCov.add_filter 'foobar' and thus makes it easier to set a bunch of configure
|
112
112
|
# options at once.
|
113
113
|
#
|
114
114
|
def configure(&block)
|
@@ -138,7 +138,7 @@ module SimpleCov::Configuration
|
|
138
138
|
# the SimpleCov.root is this.
|
139
139
|
#
|
140
140
|
def project_name(new_name=nil)
|
141
|
-
return @project_name if @project_name and new_name.nil?
|
141
|
+
return @project_name if defined? @project_name and @project_name and new_name.nil?
|
142
142
|
@project_name = new_name if new_name.kind_of?(String)
|
143
143
|
@project_name ||= File.basename(root.split('/').last).capitalize.gsub('_', ' ')
|
144
144
|
end
|
@@ -148,8 +148,8 @@ module SimpleCov::Configuration
|
|
148
148
|
# are joined and combined into a single coverage report
|
149
149
|
#
|
150
150
|
def use_merging(use=nil)
|
151
|
-
@use_merging = use unless use.nil?
|
152
|
-
@use_merging = true
|
151
|
+
@use_merging = use unless use.nil?
|
152
|
+
@use_merging = true unless defined? @use_merging and @use_merging == false
|
153
153
|
end
|
154
154
|
|
155
155
|
#
|
@@ -165,10 +165,38 @@ module SimpleCov::Configuration
|
|
165
165
|
# Configure with SimpleCov.merge_timeout(3600) # 1hr
|
166
166
|
#
|
167
167
|
def merge_timeout(seconds=nil)
|
168
|
-
@merge_timeout = seconds if
|
168
|
+
@merge_timeout = seconds if seconds.kind_of?(Fixnum)
|
169
169
|
@merge_timeout ||= 600
|
170
170
|
end
|
171
171
|
|
172
|
+
#
|
173
|
+
# Defines the minimum overall coverage required for the testsuite to pass.
|
174
|
+
# SimpleCov will return non-zero if the current coverage is below this threshold.
|
175
|
+
#
|
176
|
+
# Default is 0% (disabled)
|
177
|
+
#
|
178
|
+
def minimum_coverage(coverage=nil)
|
179
|
+
@minimum_coverage ||= (coverage || 0).to_f.round(2)
|
180
|
+
end
|
181
|
+
|
182
|
+
#
|
183
|
+
# Defines the maximum coverage drop at once allowed for the testsuite to pass.
|
184
|
+
# SimpleCov will return non-zero if the coverage decreases by more than this threshold.
|
185
|
+
#
|
186
|
+
# Default is 100% (disabled)
|
187
|
+
#
|
188
|
+
def maximum_coverage_drop(coverage_drop=nil)
|
189
|
+
@maximum_coverage_drop ||= (coverage_drop || 100).to_f.round(2)
|
190
|
+
end
|
191
|
+
|
192
|
+
#
|
193
|
+
# Refuses any coverage drop. That is, coverage is only allowed to increase.
|
194
|
+
# SimpleCov will return non-zero if the coverage decreases.
|
195
|
+
#
|
196
|
+
def refuse_coverage_drop
|
197
|
+
maximum_coverage_drop 0
|
198
|
+
end
|
199
|
+
|
172
200
|
#
|
173
201
|
# Add a filter to the processing chain.
|
174
202
|
# There are three ways to define a filter:
|
@@ -195,7 +223,7 @@ module SimpleCov::Configuration
|
|
195
223
|
def add_group(group_name, filter_argument=nil, &filter_proc)
|
196
224
|
groups[group_name] = parse_filter(filter_argument, &filter_proc)
|
197
225
|
end
|
198
|
-
|
226
|
+
|
199
227
|
private
|
200
228
|
|
201
229
|
#
|
data/lib/simplecov/defaults.rb
CHANGED
@@ -46,9 +46,38 @@ at_exit do
|
|
46
46
|
#if it was a SystemExit, use the accompanying status
|
47
47
|
#otherwise set a non-zero status representing termination by some other exception
|
48
48
|
#(see github issue 41)
|
49
|
-
@exit_status = $!.is_a?(SystemExit) ? $!.status :
|
49
|
+
@exit_status = $!.is_a?(SystemExit) ? $!.status : SimpleCov::ExitCodes::EXCEPTION
|
50
50
|
end
|
51
|
+
|
51
52
|
SimpleCov.at_exit.call
|
53
|
+
|
54
|
+
if SimpleCov.result? # Result has been computed
|
55
|
+
covered_percent = SimpleCov.result.covered_percent.round(2)
|
56
|
+
|
57
|
+
if @exit_status.to_i == 0 # No other errors
|
58
|
+
@exit_status = if covered_percent < SimpleCov.minimum_coverage
|
59
|
+
$stderr.puts "Coverage (%.2f%%) is below the expected minimum coverage (%.2f%%)." % \
|
60
|
+
[covered_percent, SimpleCov.minimum_coverage]
|
61
|
+
|
62
|
+
SimpleCov::ExitCodes::MINIMUM_COVERAGE
|
63
|
+
|
64
|
+
elsif (last_run = SimpleCov::LastRun.read)
|
65
|
+
diff = last_run['result']['covered_percent'] - covered_percent
|
66
|
+
if diff > SimpleCov.maximum_coverage_drop
|
67
|
+
$stderr.puts "Coverage has dropped by %.2f%% since the last time (maximum allowed: %.2f%%)." % \
|
68
|
+
[diff, SimpleCov.maximum_coverage_drop]
|
69
|
+
|
70
|
+
SimpleCov::ExitCodes::MAXIMUM_COVERAGE_DROP
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
metrics = {
|
76
|
+
:result => { :covered_percent => covered_percent }
|
77
|
+
}
|
78
|
+
SimpleCov::LastRun.write(metrics)
|
79
|
+
end
|
80
|
+
|
52
81
|
exit @exit_status if @exit_status # Force exit with stored status (see github issue #5)
|
53
82
|
end
|
54
83
|
|
data/lib/simplecov/formatter.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
class SimpleCov::Formatter::MultiFormatter
|
2
|
+
def self.[](*args)
|
3
|
+
Class.new(self) do
|
4
|
+
define_method :formatters do
|
5
|
+
@formatters ||= args
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def format(result)
|
11
|
+
formatters.map do |formatter|
|
12
|
+
begin
|
13
|
+
formatter.new.format(result)
|
14
|
+
rescue => e
|
15
|
+
STDERR.puts("Formatter #{formatter} failed with #{e.class}: #{e.message} (#{e.backtrace.first})")
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def formatters
|
22
|
+
@formatters ||= []
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'multi_json'
|
2
|
+
|
3
|
+
module SimpleCov::JSON
|
4
|
+
class << self
|
5
|
+
def parse(json)
|
6
|
+
# Detect and use available MultiJson API - it changed in v1.3
|
7
|
+
if MultiJson.respond_to?(:adapter)
|
8
|
+
MultiJson.load(json)
|
9
|
+
else
|
10
|
+
MultiJson.decode(json)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def dump(string)
|
15
|
+
if defined? ::JSON
|
16
|
+
::JSON.pretty_generate(string)
|
17
|
+
else
|
18
|
+
# Detect and use available MultiJson API - it changed in v1.3
|
19
|
+
if MultiJson.respond_to?(:adapter)
|
20
|
+
MultiJson.dump(string)
|
21
|
+
else
|
22
|
+
MultiJson.encode(string)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module SimpleCov::LastRun
|
2
|
+
class << self
|
3
|
+
def last_run_path
|
4
|
+
File.join(SimpleCov.coverage_path, '.last_run.json')
|
5
|
+
end
|
6
|
+
|
7
|
+
def read
|
8
|
+
return nil unless File.exist?(last_run_path)
|
9
|
+
|
10
|
+
SimpleCov::JSON.parse(File.read(last_run_path))
|
11
|
+
end
|
12
|
+
|
13
|
+
def write(json)
|
14
|
+
File.open(last_run_path, "w+") do |f|
|
15
|
+
f.puts SimpleCov::JSON.dump(json)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'multi_json'
|
2
|
-
|
3
1
|
#
|
4
2
|
# Singleton that is responsible for caching, loading and merging
|
5
3
|
# SimpleCov::Results into a single result for coverage analysis based
|
@@ -7,7 +5,7 @@ require 'multi_json'
|
|
7
5
|
#
|
8
6
|
module SimpleCov::ResultMerger
|
9
7
|
class << self
|
10
|
-
# The path to the resultset.
|
8
|
+
# The path to the .resultset.json cache file
|
11
9
|
def resultset_path
|
12
10
|
File.join(SimpleCov.coverage_path, '.resultset.json')
|
13
11
|
end
|
@@ -15,12 +13,7 @@ module SimpleCov::ResultMerger
|
|
15
13
|
# Loads the cached resultset from YAML and returns it as a Hash
|
16
14
|
def resultset
|
17
15
|
if stored_data
|
18
|
-
|
19
|
-
if MultiJson.respond_to?(:adapter)
|
20
|
-
MultiJson.load(stored_data)
|
21
|
-
else
|
22
|
-
MultiJson.decode(stored_data)
|
23
|
-
end
|
16
|
+
SimpleCov::JSON.parse(stored_data)
|
24
17
|
else
|
25
18
|
{}
|
26
19
|
end
|
@@ -73,16 +66,7 @@ module SimpleCov::ResultMerger
|
|
73
66
|
command_name, data = result.to_hash.first
|
74
67
|
new_set[command_name] = data
|
75
68
|
File.open(resultset_path, "w+") do |f|
|
76
|
-
|
77
|
-
f.puts JSON.pretty_generate(new_set)
|
78
|
-
else
|
79
|
-
# Detect and use available MultiJson API - it changed in v1.3
|
80
|
-
if MultiJson.respond_to?(:adapter)
|
81
|
-
f.puts MultiJson.dump(new_set)
|
82
|
-
else
|
83
|
-
f.puts MultiJson.encode(new_set)
|
84
|
-
end
|
85
|
-
end
|
69
|
+
f.puts SimpleCov::JSON.dump(new_set)
|
86
70
|
end
|
87
71
|
true
|
88
72
|
end
|
data/lib/simplecov/version.rb
CHANGED
data/simplecov.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.summary = gem.description
|
14
14
|
|
15
15
|
gem.add_dependency 'multi_json', '~> 1.0'
|
16
|
-
gem.add_dependency 'simplecov-html', '~> 0.
|
16
|
+
gem.add_dependency 'simplecov-html', '~> 0.7.0'
|
17
17
|
gem.add_development_dependency 'aruba'
|
18
18
|
gem.add_development_dependency 'capybara'
|
19
19
|
gem.add_development_dependency 'appraisal'
|
data/test/fixtures/sample.rb
CHANGED
data/test/test_result.rb
CHANGED
@@ -21,7 +21,7 @@ class TestResult < Test::Unit::TestCase
|
|
21
21
|
|
22
22
|
should "have 3 source files" do
|
23
23
|
assert_equal 3, @result.source_files.count
|
24
|
-
assert @result.source_files.all? {|s| s.instance_of?(SimpleCov::SourceFile)}, "Not
|
24
|
+
assert @result.source_files.all? {|s| s.instance_of?(SimpleCov::SourceFile)}, "Not all instances are of SimpleCov::SourceFile type"
|
25
25
|
end
|
26
26
|
|
27
27
|
should "return an instance of SimpleCov::FileList for source_files and files" do
|
@@ -111,6 +111,21 @@ class TestResult < Test::Unit::TestCase
|
|
111
111
|
assert_equal String, @result.format!.class
|
112
112
|
end
|
113
113
|
end
|
114
|
+
|
115
|
+
context "and multi formatter being used" do
|
116
|
+
setup do
|
117
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
118
|
+
SimpleCov::Formatter::SimpleFormatter,
|
119
|
+
SimpleCov::Formatter::SimpleFormatter,
|
120
|
+
]
|
121
|
+
end
|
122
|
+
|
123
|
+
should "return an array containing formatted string with result.format!" do
|
124
|
+
formated = @result.format!
|
125
|
+
assert_equal 2, formated.count
|
126
|
+
assert_equal String, formated.first.class
|
127
|
+
end
|
128
|
+
end
|
114
129
|
end
|
115
130
|
|
116
131
|
context "with groups set up that do not match all files" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplecov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,21 +21,31 @@ dependencies:
|
|
21
21
|
version: '1.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: simplecov-html
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
31
36
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
37
|
+
version: 0.7.0
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.7.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: aruba
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: capybara
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: appraisal
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: cucumber
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: 1.1.4
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.1.4
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: rake
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: '0'
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: rspec
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ! '>='
|
@@ -98,10 +133,15 @@ dependencies:
|
|
98
133
|
version: '0'
|
99
134
|
type: :development
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: shoulda
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
@@ -109,7 +149,12 @@ dependencies:
|
|
109
149
|
version: '0'
|
110
150
|
type: :development
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
113
158
|
description: Code coverage for Ruby 1.9 with a powerful configuration library and
|
114
159
|
automatic merging of coverage across test suites
|
115
160
|
email:
|
@@ -120,8 +165,10 @@ extra_rdoc_files: []
|
|
120
165
|
files:
|
121
166
|
- .gitignore
|
122
167
|
- .travis.yml
|
168
|
+
- .yardopts
|
123
169
|
- Appraisals
|
124
170
|
- CHANGELOG.md
|
171
|
+
- CONTRIBUTING.md
|
125
172
|
- Gemfile
|
126
173
|
- LICENSE
|
127
174
|
- README.md
|
@@ -132,12 +179,16 @@ files:
|
|
132
179
|
- features/config_command_name.feature
|
133
180
|
- features/config_coverage_dir.feature
|
134
181
|
- features/config_deactivate_merging.feature
|
182
|
+
- features/config_formatters.feature
|
135
183
|
- features/config_merge_timeout.feature
|
136
184
|
- features/config_nocov_token.feature
|
137
185
|
- features/config_project_name.feature
|
138
186
|
- features/config_styles.feature
|
139
187
|
- features/cucumber_basic.feature
|
188
|
+
- features/maximum_coverage_drop.feature
|
140
189
|
- features/merging_test_unit_and_rspec.feature
|
190
|
+
- features/minimum_coverage.feature
|
191
|
+
- features/refuse_coverage_drop.feature
|
141
192
|
- features/rspec_basic.feature
|
142
193
|
- features/rspec_fails_on_initialization.feature
|
143
194
|
- features/rspec_groups_and_filters_basic.feature
|
@@ -157,18 +208,20 @@ files:
|
|
157
208
|
- features/test_unit_without_simplecov.feature
|
158
209
|
- features/unicode_compatiblity.feature
|
159
210
|
- gemfiles/multi_json-legacy.gemfile
|
160
|
-
- gemfiles/multi_json-legacy.gemfile.lock
|
161
211
|
- gemfiles/multi_json-new.gemfile
|
162
|
-
- gemfiles/multi_json-new.gemfile.lock
|
163
212
|
- lib/simplecov.rb
|
164
213
|
- lib/simplecov/adapters.rb
|
165
214
|
- lib/simplecov/command_guesser.rb
|
166
215
|
- lib/simplecov/configuration.rb
|
167
216
|
- lib/simplecov/defaults.rb
|
217
|
+
- lib/simplecov/exit_codes.rb
|
168
218
|
- lib/simplecov/file_list.rb
|
169
219
|
- lib/simplecov/filter.rb
|
170
220
|
- lib/simplecov/formatter.rb
|
221
|
+
- lib/simplecov/formatter/multi_formatter.rb
|
171
222
|
- lib/simplecov/formatter/simple_formatter.rb
|
223
|
+
- lib/simplecov/json.rb
|
224
|
+
- lib/simplecov/last_run.rb
|
172
225
|
- lib/simplecov/merge_helpers.rb
|
173
226
|
- lib/simplecov/railtie.rb
|
174
227
|
- lib/simplecov/railties/tasks.rake
|
@@ -233,7 +286,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
233
286
|
version: '0'
|
234
287
|
segments:
|
235
288
|
- 0
|
236
|
-
hash:
|
289
|
+
hash: -2872785497252698057
|
237
290
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
291
|
none: false
|
239
292
|
requirements:
|
@@ -242,83 +295,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
242
295
|
version: '0'
|
243
296
|
segments:
|
244
297
|
- 0
|
245
|
-
hash:
|
298
|
+
hash: -2872785497252698057
|
246
299
|
requirements: []
|
247
300
|
rubyforge_project:
|
248
|
-
rubygems_version: 1.8.
|
301
|
+
rubygems_version: 1.8.24
|
249
302
|
signing_key:
|
250
303
|
specification_version: 3
|
251
304
|
summary: Code coverage for Ruby 1.9 with a powerful configuration library and automatic
|
252
305
|
merging of coverage across test suites
|
253
|
-
test_files:
|
254
|
-
- features/config_adapters.feature
|
255
|
-
- features/config_autoload.feature
|
256
|
-
- features/config_command_name.feature
|
257
|
-
- features/config_coverage_dir.feature
|
258
|
-
- features/config_deactivate_merging.feature
|
259
|
-
- features/config_merge_timeout.feature
|
260
|
-
- features/config_nocov_token.feature
|
261
|
-
- features/config_project_name.feature
|
262
|
-
- features/config_styles.feature
|
263
|
-
- features/cucumber_basic.feature
|
264
|
-
- features/merging_test_unit_and_rspec.feature
|
265
|
-
- features/rspec_basic.feature
|
266
|
-
- features/rspec_fails_on_initialization.feature
|
267
|
-
- features/rspec_groups_and_filters_basic.feature
|
268
|
-
- features/rspec_groups_and_filters_complex.feature
|
269
|
-
- features/rspec_groups_using_filter_class.feature
|
270
|
-
- features/rspec_without_simplecov.feature
|
271
|
-
- features/skipping_code_blocks_manually.feature
|
272
|
-
- features/step_definitions/html_steps.rb
|
273
|
-
- features/step_definitions/simplecov_steps.rb
|
274
|
-
- features/step_definitions/transformers.rb
|
275
|
-
- features/step_definitions/web_steps.rb
|
276
|
-
- features/support/env.rb
|
277
|
-
- features/test_unit_basic.feature
|
278
|
-
- features/test_unit_groups_and_filters_basic.feature
|
279
|
-
- features/test_unit_groups_and_filters_complex.feature
|
280
|
-
- features/test_unit_groups_using_filter_class.feature
|
281
|
-
- features/test_unit_without_simplecov.feature
|
282
|
-
- features/unicode_compatiblity.feature
|
283
|
-
- test/faked_project/Gemfile
|
284
|
-
- test/faked_project/Rakefile
|
285
|
-
- test/faked_project/cucumber.yml
|
286
|
-
- test/faked_project/features/step_definitions/my_steps.rb
|
287
|
-
- test/faked_project/features/support/env.rb
|
288
|
-
- test/faked_project/features/test_stuff.feature
|
289
|
-
- test/faked_project/lib/faked_project.rb
|
290
|
-
- test/faked_project/lib/faked_project/framework_specific.rb
|
291
|
-
- test/faked_project/lib/faked_project/meta_magic.rb
|
292
|
-
- test/faked_project/lib/faked_project/some_class.rb
|
293
|
-
- test/faked_project/spec/faked_spec.rb
|
294
|
-
- test/faked_project/spec/meta_magic_spec.rb
|
295
|
-
- test/faked_project/spec/some_class_spec.rb
|
296
|
-
- test/faked_project/spec/spec_helper.rb
|
297
|
-
- test/faked_project/test/faked_test.rb
|
298
|
-
- test/faked_project/test/meta_magic_test.rb
|
299
|
-
- test/faked_project/test/some_class_test.rb
|
300
|
-
- test/faked_project/test/test_helper.rb
|
301
|
-
- test/fixtures/app/controllers/sample_controller.rb
|
302
|
-
- test/fixtures/app/models/user.rb
|
303
|
-
- test/fixtures/deleted_source_sample.rb
|
304
|
-
- test/fixtures/frameworks/rspec_bad.rb
|
305
|
-
- test/fixtures/frameworks/rspec_good.rb
|
306
|
-
- test/fixtures/frameworks/testunit_bad.rb
|
307
|
-
- test/fixtures/frameworks/testunit_good.rb
|
308
|
-
- test/fixtures/iso-8859.rb
|
309
|
-
- test/fixtures/resultset1.rb
|
310
|
-
- test/fixtures/resultset2.rb
|
311
|
-
- test/fixtures/sample.rb
|
312
|
-
- test/fixtures/utf-8.rb
|
313
|
-
- test/helper.rb
|
314
|
-
- test/shoulda_macros.rb
|
315
|
-
- test/test_1_8_fallbacks.rb
|
316
|
-
- test/test_command_guesser.rb
|
317
|
-
- test/test_deleted_source.rb
|
318
|
-
- test/test_file_list.rb
|
319
|
-
- test/test_filters.rb
|
320
|
-
- test/test_merge_helpers.rb
|
321
|
-
- test/test_result.rb
|
322
|
-
- test/test_return_codes.rb
|
323
|
-
- test/test_source_file.rb
|
324
|
-
- test/test_source_file_line.rb
|
306
|
+
test_files: []
|
@@ -1,85 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: /Users/colszowka/Projects/github/colszowka/simplecov
|
3
|
-
specs:
|
4
|
-
simplecov (0.6.2)
|
5
|
-
multi_json (~> 1.0)
|
6
|
-
simplecov-html (~> 0.5.3)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: http://rubygems.org/
|
10
|
-
specs:
|
11
|
-
addressable (2.2.8)
|
12
|
-
appraisal (0.4.1)
|
13
|
-
bundler
|
14
|
-
rake
|
15
|
-
aruba (0.4.11)
|
16
|
-
childprocess (>= 0.2.3)
|
17
|
-
cucumber (>= 1.1.1)
|
18
|
-
ffi (>= 1.0.11)
|
19
|
-
rspec (>= 2.7.0)
|
20
|
-
builder (3.0.0)
|
21
|
-
capybara (1.1.2)
|
22
|
-
mime-types (>= 1.16)
|
23
|
-
nokogiri (>= 1.3.3)
|
24
|
-
rack (>= 1.0.0)
|
25
|
-
rack-test (>= 0.5.4)
|
26
|
-
selenium-webdriver (~> 2.0)
|
27
|
-
xpath (~> 0.1.4)
|
28
|
-
childprocess (0.3.2)
|
29
|
-
ffi (~> 1.0.6)
|
30
|
-
cucumber (1.2.0)
|
31
|
-
builder (>= 2.1.2)
|
32
|
-
diff-lcs (>= 1.1.3)
|
33
|
-
gherkin (~> 2.10.0)
|
34
|
-
json (>= 1.4.6)
|
35
|
-
diff-lcs (1.1.3)
|
36
|
-
ffi (1.0.11)
|
37
|
-
gherkin (2.10.0)
|
38
|
-
json (>= 1.4.6)
|
39
|
-
json (1.7.1)
|
40
|
-
libwebsocket (0.1.3)
|
41
|
-
addressable
|
42
|
-
mime-types (1.18)
|
43
|
-
multi_json (1.0.4)
|
44
|
-
nokogiri (1.5.2)
|
45
|
-
rack (1.4.1)
|
46
|
-
rack-test (0.6.1)
|
47
|
-
rack (>= 1.0)
|
48
|
-
rake (0.9.2.2)
|
49
|
-
rspec (2.10.0)
|
50
|
-
rspec-core (~> 2.10.0)
|
51
|
-
rspec-expectations (~> 2.10.0)
|
52
|
-
rspec-mocks (~> 2.10.0)
|
53
|
-
rspec-core (2.10.0)
|
54
|
-
rspec-expectations (2.10.0)
|
55
|
-
diff-lcs (~> 1.1.3)
|
56
|
-
rspec-mocks (2.10.1)
|
57
|
-
rubyzip (0.9.8)
|
58
|
-
selenium-webdriver (2.21.2)
|
59
|
-
childprocess (>= 0.2.5)
|
60
|
-
ffi (~> 1.0)
|
61
|
-
libwebsocket (~> 0.1.3)
|
62
|
-
multi_json (~> 1.0)
|
63
|
-
rubyzip
|
64
|
-
shoulda (3.0.1)
|
65
|
-
shoulda-context (~> 1.0.0)
|
66
|
-
shoulda-matchers (~> 1.0.0)
|
67
|
-
shoulda-context (1.0.0)
|
68
|
-
shoulda-matchers (1.0.0)
|
69
|
-
simplecov-html (0.5.3)
|
70
|
-
xpath (0.1.4)
|
71
|
-
nokogiri (~> 1.3)
|
72
|
-
|
73
|
-
PLATFORMS
|
74
|
-
ruby
|
75
|
-
|
76
|
-
DEPENDENCIES
|
77
|
-
appraisal
|
78
|
-
aruba
|
79
|
-
capybara
|
80
|
-
cucumber (>= 1.1.4)
|
81
|
-
multi_json (~> 1.0.0)
|
82
|
-
rake
|
83
|
-
rspec
|
84
|
-
shoulda
|
85
|
-
simplecov!
|
@@ -1,85 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: /Users/colszowka/Projects/github/colszowka/simplecov
|
3
|
-
specs:
|
4
|
-
simplecov (0.6.2)
|
5
|
-
multi_json (~> 1.0)
|
6
|
-
simplecov-html (~> 0.5.3)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: http://rubygems.org/
|
10
|
-
specs:
|
11
|
-
addressable (2.2.8)
|
12
|
-
appraisal (0.4.1)
|
13
|
-
bundler
|
14
|
-
rake
|
15
|
-
aruba (0.4.11)
|
16
|
-
childprocess (>= 0.2.3)
|
17
|
-
cucumber (>= 1.1.1)
|
18
|
-
ffi (>= 1.0.11)
|
19
|
-
rspec (>= 2.7.0)
|
20
|
-
builder (3.0.0)
|
21
|
-
capybara (1.1.2)
|
22
|
-
mime-types (>= 1.16)
|
23
|
-
nokogiri (>= 1.3.3)
|
24
|
-
rack (>= 1.0.0)
|
25
|
-
rack-test (>= 0.5.4)
|
26
|
-
selenium-webdriver (~> 2.0)
|
27
|
-
xpath (~> 0.1.4)
|
28
|
-
childprocess (0.3.2)
|
29
|
-
ffi (~> 1.0.6)
|
30
|
-
cucumber (1.2.0)
|
31
|
-
builder (>= 2.1.2)
|
32
|
-
diff-lcs (>= 1.1.3)
|
33
|
-
gherkin (~> 2.10.0)
|
34
|
-
json (>= 1.4.6)
|
35
|
-
diff-lcs (1.1.3)
|
36
|
-
ffi (1.0.11)
|
37
|
-
gherkin (2.10.0)
|
38
|
-
json (>= 1.4.6)
|
39
|
-
json (1.7.1)
|
40
|
-
libwebsocket (0.1.3)
|
41
|
-
addressable
|
42
|
-
mime-types (1.18)
|
43
|
-
multi_json (1.3.4)
|
44
|
-
nokogiri (1.5.2)
|
45
|
-
rack (1.4.1)
|
46
|
-
rack-test (0.6.1)
|
47
|
-
rack (>= 1.0)
|
48
|
-
rake (0.9.2.2)
|
49
|
-
rspec (2.10.0)
|
50
|
-
rspec-core (~> 2.10.0)
|
51
|
-
rspec-expectations (~> 2.10.0)
|
52
|
-
rspec-mocks (~> 2.10.0)
|
53
|
-
rspec-core (2.10.0)
|
54
|
-
rspec-expectations (2.10.0)
|
55
|
-
diff-lcs (~> 1.1.3)
|
56
|
-
rspec-mocks (2.10.1)
|
57
|
-
rubyzip (0.9.8)
|
58
|
-
selenium-webdriver (2.21.2)
|
59
|
-
childprocess (>= 0.2.5)
|
60
|
-
ffi (~> 1.0)
|
61
|
-
libwebsocket (~> 0.1.3)
|
62
|
-
multi_json (~> 1.0)
|
63
|
-
rubyzip
|
64
|
-
shoulda (3.0.1)
|
65
|
-
shoulda-context (~> 1.0.0)
|
66
|
-
shoulda-matchers (~> 1.0.0)
|
67
|
-
shoulda-context (1.0.0)
|
68
|
-
shoulda-matchers (1.0.0)
|
69
|
-
simplecov-html (0.5.3)
|
70
|
-
xpath (0.1.4)
|
71
|
-
nokogiri (~> 1.3)
|
72
|
-
|
73
|
-
PLATFORMS
|
74
|
-
ruby
|
75
|
-
|
76
|
-
DEPENDENCIES
|
77
|
-
appraisal
|
78
|
-
aruba
|
79
|
-
capybara
|
80
|
-
cucumber (>= 1.1.4)
|
81
|
-
multi_json (>= 1.3.4)
|
82
|
-
rake
|
83
|
-
rspec
|
84
|
-
shoulda
|
85
|
-
simplecov!
|