simplecov 0.8.0.pre2 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +87 -25
- data/CONTRIBUTING.md +8 -0
- data/Gemfile +4 -0
- data/MIT-LICENSE +1 -1
- data/README.md +9 -8
- data/lib/simplecov.rb +1 -1
- data/lib/simplecov/command_guesser.rb +2 -0
- data/lib/simplecov/defaults.rb +13 -16
- data/lib/simplecov/exit_codes.rb +1 -0
- data/lib/simplecov/file_list.rb +1 -1
- data/lib/simplecov/{jruby16_fix.rb → jruby_fix.rb} +3 -4
- data/lib/simplecov/result.rb +7 -60
- data/lib/simplecov/version.rb +1 -1
- data/simplecov.gemspec +1 -1
- data/test/test_file_list.rb +7 -8
- data/test/test_result.rb +6 -0
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 61f56fdda1d314c0237f6838847332be44bb24cf
|
|
4
|
+
data.tar.gz: 8774f7ed6c24a12d78c8ae14cf4281f9ce8e8552
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 164e46798ecc467c0affb93de2619573efff67f900897f11c96fa2404e40784134387698ab38cddc6c9c8df418b16d5511e233ae5b9f2d4a51e0e6d3fc4ba030
|
|
7
|
+
data.tar.gz: 07cabbfba38dc665fe26180cb66abcb1449d199c41c43dbe3db80a669d881ed459e017b03176d66d2200dbfbd25b2843943450bbb29c93d91bc8256e57439c68
|
data/CHANGELOG.md
CHANGED
|
@@ -1,25 +1,87 @@
|
|
|
1
|
-
Unreleased ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
2
|
-
|
|
1
|
+
Unreleased ([changes](https://github.com/colszowka/simplecov/compare/v0.8.1...master))
|
|
2
|
+
====================
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
v0.8.1, 2013-11-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.8.0...v0.8.1))
|
|
5
|
+
=====================
|
|
6
|
+
|
|
7
|
+
## Bugfixes
|
|
8
|
+
|
|
9
|
+
* Fixed a regression introduced in 0.8.0 - the Forwardable STDLIB module is now required explicitly.
|
|
10
|
+
See [#256](https://github.com/colszowka/simplecov/pull/256) (thanks to @kylev)
|
|
11
|
+
|
|
12
|
+
v0.8.0, 2013-11-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.7.1...v0.8.0))
|
|
13
|
+
=====================
|
|
14
|
+
|
|
15
|
+
## TL;DR
|
|
16
|
+
|
|
17
|
+
It's been way too long since the last official release 0.7.1, but this was partly due to it proving itself
|
|
18
|
+
quite stable in most circumstances. This release brings various further stability improvements to result set merging
|
|
19
|
+
(especially when working with parallel_tests), the configuration, source file encodings, and command name guessing.
|
|
20
|
+
|
|
21
|
+
The 0.8 line is the last one to cooperate with Ruby < 1.9. Starting with 0.9, SimpleCov will assume to be running in
|
|
22
|
+
Ruby 1.9+, and will not try to detect or bail silently on older Ruby versions. An appropriate deprecation warning
|
|
23
|
+
has been added.
|
|
24
|
+
|
|
25
|
+
## Features
|
|
26
|
+
|
|
27
|
+
* Configuration blocks now have access to variables and methods outside of the block's scope.
|
|
28
|
+
See [#238](https://github.com/colszowka/simplecov/pull/238) (thanks to @ms-tg)
|
|
29
|
+
* You can now have a global `~/.simplecov` configuration file.
|
|
30
|
+
See [#195](https://github.com/colszowka/simplecov/pull/195) (thanks to @spagalloco)
|
|
31
|
+
* simplecov-html now uses the MIT-licensed colorbox plugin. Some adjustments when viewing source files,
|
|
32
|
+
including retaining the currently open file on refresh have been added.
|
|
33
|
+
See [simplecov-html #15](https://github.com/colszowka/simplecov-html/pull/15) (thanks to @chetan)
|
|
34
|
+
* Adds support for Rails 4 command guessing, removes default group `vendor/plugins`.
|
|
35
|
+
See [#181](https://github.com/colszowka/simplecov/pull/181) and
|
|
36
|
+
[#203](https://github.com/colszowka/simplecov/pull/203) (thanks to @semanticart and @phallstrom)
|
|
37
|
+
* You can now load simplecov without the default settings by doing `require 'simplecov/no_defaults'`
|
|
38
|
+
or setting `ENV['SIMPLECOV_NO_DEFAULTS']`. Check `simplecov/defaults` to see what preconfigurations are getting
|
|
39
|
+
dropped by using this. See [#209](https://github.com/colszowka/simplecov/pull/209) (thanks to @ileitch)
|
|
40
|
+
* The result set merging now uses the `lockfile` gem to avoid race conditions.
|
|
41
|
+
See [#185](https://github.com/colszowka/simplecov/pull/185) (thanks to @jshraibman-mdsol).
|
|
42
|
+
* Automatically detect the usage of parallel_tests and adjust the command name with the test env number accordingly,
|
|
43
|
+
See [#64](https://github.com/colszowka/simplecov/issues/64) and
|
|
44
|
+
[#185](https://github.com/colszowka/simplecov/pull/185) (thanks to @jshraibman-mdsol).
|
|
45
|
+
|
|
46
|
+
## Enhancements
|
|
47
|
+
|
|
48
|
+
* Rename adapters to "profiles" given that they are bundles of settings. The old adapter methods are
|
|
7
49
|
deprecated, but remain available for now.
|
|
8
50
|
See [#207](https://github.com/colszowka/simplecov/pull/207) (thanks to @mikerobe)
|
|
9
|
-
*
|
|
10
|
-
or setting `ENV['SIMPLECOV_NO_DEFAULTS']`. Check `simplecov/defaults` to see what preconfigurations are getting
|
|
11
|
-
dropped by using this.
|
|
12
|
-
See [#209](https://github.com/colszowka/simplecov/pull/209) (thanks to @ileitch)
|
|
13
|
-
* [REFACTORING] Tweaks to the automatic test suite naming. In particular, `rspec/features` should now
|
|
51
|
+
* Tweaks to the automatic test suite naming. In particular, `rspec/features` should now
|
|
14
52
|
be correctly attributed to RSpec, not Cucumber.
|
|
15
53
|
See [#212](https://github.com/colszowka/simplecov/pull/212) (thanks to @ersatzryan and @betelgeuse)
|
|
16
|
-
*
|
|
54
|
+
* MiniTest should now be identified correctly by the command name guesser.
|
|
55
|
+
See [#244](https://github.com/colszowka/simplecov/pull/244) (thanks to @envygeeks)
|
|
56
|
+
* Makes SimpleCov resilient to inclusion of mathn library.
|
|
57
|
+
See [#175](https://github.com/colszowka/simplecov/pull/175) and
|
|
58
|
+
[#140](https://github.com/colszowka/simplecov/issues/140) (thanks to @scotje)
|
|
59
|
+
* Allow coverage_dir to be an absolute path.
|
|
60
|
+
* See [#190](https://github.com/colszowka/simplecov/pull/190) (thanks to @jshraibman-mdsol)
|
|
61
|
+
* The internal cucumber test suite now uses Capybara 2.
|
|
17
62
|
See [#206](https://github.com/colszowka/simplecov/pull/206) (thanks to @infertux)
|
|
18
|
-
*
|
|
19
|
-
See https://github.com/colszowka/simplecov/
|
|
63
|
+
* Work-arounds for the Coverage library shipped in JRuby 1.6 to behave in line with MRI.
|
|
64
|
+
See [#174](https://github.com/colszowka/simplecov/pull/174) (thanks to @grddev)
|
|
65
|
+
* Fix warning: instance variable @exit_status not initialized.
|
|
66
|
+
See [#242](https://github.com/colszowka/simplecov/pull/242) and
|
|
67
|
+
[#213](https://github.com/colszowka/simplecov/pull/213) (thanks to @sferik and @infertux)
|
|
68
|
+
|
|
69
|
+
## Bugfixes
|
|
70
|
+
|
|
71
|
+
* Correct result calculations for people using :nocov: tags.
|
|
72
|
+
See [#215](https://github.com/colszowka/simplecov/pull/215) (thanks to @aokolish)
|
|
73
|
+
* Average hits per line for groups of files is now computed correctly.
|
|
74
|
+
See [#192](http://github.com/colszowka/simplecov/pull/192) and
|
|
75
|
+
[#179](http://github.com/colszowka/simplecov/issues/179) (thanks to @graysonwright)
|
|
76
|
+
* Compatability with BINARY internal encoding.
|
|
77
|
+
See [#194](https://github.com/colszowka/simplecov/pull/194) and
|
|
78
|
+
[#127](https://github.com/colszowka/simplecov/issues/127) (thanks to @justfalter)
|
|
79
|
+
* Special characters in `SimpleCov.root` are now correctly escaped before being used as a RegExp.
|
|
80
|
+
See [#204](https://github.com/colszowka/simplecov/issues/204) and
|
|
81
|
+
[#237](https://github.com/colszowka/simplecov/pull/237) (thanks to @rli9)
|
|
20
82
|
|
|
21
83
|
v0.7.1, 2012-10-12 ([changes](https://github.com/colszowka/simplecov/compare/v0.7.0...v0.7.1))
|
|
22
|
-
|
|
84
|
+
=====================
|
|
23
85
|
|
|
24
86
|
* [BUGFIX] The gem packages of 0.7.0 (both simplecov and simplecov-html) pushed to Rubygems had some file
|
|
25
87
|
permission issues, leading to problems when installing SimpleCov in a root/system Rubygems install and then
|
|
@@ -29,7 +91,7 @@ v0.7.1, 2012-10-12 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
29
91
|
|
|
30
92
|
|
|
31
93
|
v0.7.0, 2012-10-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.6.4...v0.7.0))
|
|
32
|
-
|
|
94
|
+
=====================
|
|
33
95
|
|
|
34
96
|
* [FEATURE] The new `maximum_coverage_drop` and `minimum_coverage` now allow you to fail your build when the
|
|
35
97
|
coverage dropped by more than what you allowed or is below a minimum value required. Also, `refuse_coverage_drop` disallows
|
|
@@ -48,7 +110,7 @@ v0.7.0, 2012-10-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
48
110
|
* The usual bunch of README fixes and documentation tweaks. Thanks to everyone who contributed those!
|
|
49
111
|
|
|
50
112
|
v0.6.4, 2012-05-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.6.3...v0.6.4))
|
|
51
|
-
|
|
113
|
+
=====================
|
|
52
114
|
|
|
53
115
|
* [BUGFIX] Encoding issues with ISO-8859-encoded source files fixed.
|
|
54
116
|
See https://github.com/colszowka/simplecov/pull/117. (thanks to @Deradon)
|
|
@@ -60,7 +122,7 @@ v0.6.4, 2012-05-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
60
122
|
|
|
61
123
|
|
|
62
124
|
v0.6.3, 2012-05-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.6.2...v0.6.3))
|
|
63
|
-
|
|
125
|
+
=====================
|
|
64
126
|
|
|
65
127
|
* [BUGFIX] Modified the API-changes for newer multi_json versions introduced with #122 and v0.6.2 so
|
|
66
128
|
they are backwards-compatible with older multi_json gems in order to avoid simplecov polluting
|
|
@@ -70,19 +132,19 @@ v0.6.3, 2012-05-10 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
70
132
|
multi_json gems and ensure the above actually works :)
|
|
71
133
|
|
|
72
134
|
v0.6.2, 2012-04-20 ([changes](https://github.com/colszowka/simplecov/compare/v0.6.1...v0.6.2))
|
|
73
|
-
|
|
135
|
+
=====================
|
|
74
136
|
|
|
75
137
|
* [Updated to latest version of MultiJSON and its new API (thanks to @sferik and @ronen).
|
|
76
138
|
See https://github.com/colszowka/simplecov/pull/122
|
|
77
139
|
|
|
78
140
|
v0.6.1, 2012-02-24 ([changes](https://github.com/colszowka/simplecov/compare/v0.6.0...v0.6.1))
|
|
79
|
-
|
|
141
|
+
=====================
|
|
80
142
|
|
|
81
143
|
* [BUGFIX] Don't force-load Railtie on Rails < 3. Fixes regression introduced with
|
|
82
144
|
#83. See https://github.com/colszowka/simplecov/issues/113
|
|
83
145
|
|
|
84
146
|
v0.6.0, 2012-02-22 ([changes](https://github.com/colszowka/simplecov/compare/v0.5.4...v0.6.0))
|
|
85
|
-
|
|
147
|
+
=====================
|
|
86
148
|
|
|
87
149
|
* [FEATURE] Auto-magic `rake simplecov` task for rails
|
|
88
150
|
(see https://github.com/colszowka/simplecov/pull/83, thanks @sunaku)
|
|
@@ -98,7 +160,7 @@ v0.6.0, 2012-02-22 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
98
160
|
list of changes: https://github.com/colszowka/simplecov/compare/v0.5.4...v0.6.0
|
|
99
161
|
|
|
100
162
|
v0.5.4, 2011-10-12 ([changes](https://github.com/colszowka/simplecov/compare/v0.5.3...v0.5.4))
|
|
101
|
-
|
|
163
|
+
=====================
|
|
102
164
|
|
|
103
165
|
* Do not give exit code 0 when there are exceptions prior to tests
|
|
104
166
|
(see https://github.com/colszowka/simplecov/issues/41, thanks @nbogie)
|
|
@@ -111,7 +173,7 @@ v0.5.4, 2011-10-12 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
111
173
|
* Readme formatted in Markdown :)
|
|
112
174
|
|
|
113
175
|
v0.5.3, 2011-09-13 ([changes](https://github.com/colszowka/simplecov/compare/v0.5.2...v0.5.3))
|
|
114
|
-
|
|
176
|
+
=====================
|
|
115
177
|
|
|
116
178
|
* Fix for encoding issues that came from the nocov processing mechanism
|
|
117
179
|
(see https://github.com/colszowka/simplecov/issues/71)
|
|
@@ -126,13 +188,13 @@ v0.5.3, 2011-09-13 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
126
188
|
alias SimpleCov.skip_token)
|
|
127
189
|
|
|
128
190
|
v0.5.2, 2011-09-12 ([changes](https://github.com/colszowka/simplecov/compare/v0.5.1...v0.5.2))
|
|
129
|
-
|
|
191
|
+
=====================
|
|
130
192
|
|
|
131
193
|
* Another fix for a bug in JSON processing introduced with MultiJSON in 0.5.1
|
|
132
194
|
(see https://github.com/colszowka/simplecov/pull/75, thanks @sferik)
|
|
133
195
|
|
|
134
196
|
v0.5.1, 2011-09-12 ([changes](https://github.com/colszowka/simplecov/compare/v0.5.0...v0.5.1))
|
|
135
|
-
|
|
197
|
+
=====================
|
|
136
198
|
**Note: Yanked 2011-09-12 because the MultiJSON-patch had a crucial bug**
|
|
137
199
|
|
|
138
200
|
* Fix for invalid gemspec dependency string (see https://github.com/colszowka/simplecov/pull/70,
|
|
@@ -143,7 +205,7 @@ v0.5.1, 2011-09-12 ([changes](https://github.com/colszowka/simplecov/compare/v0.
|
|
|
143
205
|
and https://github.com/colszowka/simplecov/pull/74, thanks @sferik)
|
|
144
206
|
|
|
145
207
|
v0.5.0, 2011-09-09 ([changes](https://github.com/colszowka/simplecov/compare/v0.4.2...v0.5.4))
|
|
146
|
-
|
|
208
|
+
=====================
|
|
147
209
|
**Note: Yanked 2011-09-09 because of trouble with the gemspec.**
|
|
148
210
|
|
|
149
211
|
* JSON is now used instead of YAML for resultset caching (used for merging). Should resolve
|
data/CONTRIBUTING.md
CHANGED
|
@@ -18,3 +18,11 @@ If you want to contribute, please:
|
|
|
18
18
|
* Add tests for it. This is important so I don't break it in a future version unintentionally.
|
|
19
19
|
* **Bonus Points** go out to anyone who also updates `CHANGELOG.md` :)
|
|
20
20
|
* Send me a pull request on Github.
|
|
21
|
+
|
|
22
|
+
## Running Individual Tests
|
|
23
|
+
|
|
24
|
+
This project uses Test::Unit. Individual tests can be run like this:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ruby -I test path/to/test.rb
|
|
28
|
+
```
|
data/Gemfile
CHANGED
|
@@ -9,6 +9,10 @@ if 'Integration test (cucumber) suite is 1.9+ only'.respond_to? :encoding
|
|
|
9
9
|
gem 'cucumber', '>= 1.1.0'
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
# shoulda-matchers depends on rails >= 4, but that does not work with Ruby < 1.9. So, to allow CI builds on those versions,
|
|
13
|
+
# we gotta stick with the 3.x line.
|
|
14
|
+
gem 'activesupport', '~> 3.2.0'
|
|
15
|
+
|
|
12
16
|
# Uncomment this to use local copy of simplecov-html in development when checked out
|
|
13
17
|
# gem 'simplecov-html', :path => ::File.dirname(__FILE__) + '/../simplecov-html'
|
|
14
18
|
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -21,7 +21,7 @@ SimpleCov [
|
|
|
21
21
|
[Mailing List]: https://groups.google.com/forum/#!forum/simplecov "Open mailing list for discussion and announcements on Google Groups"
|
|
22
22
|
[Pledgie]: http://www.pledgie.com/campaigns/18379
|
|
23
23
|
|
|
24
|
-
[][Pledgie]
|
|
25
25
|
|
|
26
26
|
SimpleCov is a code coverage analysis tool for Ruby 1.9. It uses [1.9's built-in Coverage][Coverage] library to gather code
|
|
27
27
|
coverage data, but makes processing its results much easier by providing a clean API to filter, group, merge, format
|
|
@@ -155,11 +155,13 @@ to use SimpleCov with them. Here's an overview of the known ones:
|
|
|
155
155
|
<b>parallel_tests</b>
|
|
156
156
|
</td>
|
|
157
157
|
<td>
|
|
158
|
-
|
|
159
|
-
with
|
|
158
|
+
As of 0.8.0, SimpleCov should correctly recognize parallel_tests and supplement your test suite names
|
|
159
|
+
with their corresponding test env numbers. Locking of the resultset cache should ensure no race conditions
|
|
160
|
+
occur when results are merged.
|
|
160
161
|
</td>
|
|
161
162
|
<td>
|
|
162
163
|
<a href="https://github.com/colszowka/simplecov/issues/64">SimpleCov #64</a>
|
|
164
|
+
<a href="https://github.com/colszowka/simplecov/pull/185">SimpleCov #185</a>
|
|
163
165
|
</td>
|
|
164
166
|
</tr>
|
|
165
167
|
<tr>
|
|
@@ -296,7 +298,7 @@ is being set in the SimpleCov::Filter initialize method and thus is set to 5 in
|
|
|
296
298
|
## Groups
|
|
297
299
|
|
|
298
300
|
You can separate your source files into groups. For example, in a rails app, you'll want to have separate listings for
|
|
299
|
-
Models, Controllers, Helpers,
|
|
301
|
+
Models, Controllers, Helpers, and Libs. Group definition works similar to Filters (and indeed also accepts custom
|
|
300
302
|
filter classes), but source files end up in a group when the filter passes (returns true), as opposed to filtering results,
|
|
301
303
|
which exclude files from results when the filter results in a true value.
|
|
302
304
|
|
|
@@ -406,7 +408,6 @@ SimpleCov.profiles.define 'rails' do
|
|
|
406
408
|
add_group 'Models', 'app/models'
|
|
407
409
|
add_group 'Helpers', 'app/helpers'
|
|
408
410
|
add_group 'Libraries', 'lib'
|
|
409
|
-
add_group 'Plugins', 'vendor/plugins'
|
|
410
411
|
end
|
|
411
412
|
```
|
|
412
413
|
|
|
@@ -521,10 +522,10 @@ available:
|
|
|
521
522
|
|
|
522
523
|
CSV formatter for SimpleCov code coverage tool for ruby 1.9+
|
|
523
524
|
|
|
524
|
-
#### [
|
|
525
|
+
#### [cadre](https://github.com/nyarly/cadre)
|
|
525
526
|
*by Judson Lester*
|
|
526
527
|
|
|
527
|
-
|
|
528
|
+
Includes a formatter for Simplecov that emits a Vim script to mark up code files with coverage information.
|
|
528
529
|
|
|
529
530
|
#### [simplecov-single_file_reporter](https://github.com/grosser/simplecov-single_file_reporter)
|
|
530
531
|
*by [Michael Grosser](http://grosser.it)*
|
|
@@ -562,4 +563,4 @@ Thanks to Aaron Patterson for the original idea for this!
|
|
|
562
563
|
|
|
563
564
|
## Copyright
|
|
564
565
|
|
|
565
|
-
Copyright (c) 2010-
|
|
566
|
+
Copyright (c) 2010-2013 Christoph Olszowka. See MIT-LICENSE for details.
|
data/lib/simplecov.rb
CHANGED
|
@@ -48,6 +48,8 @@ module SimpleCov::CommandGuesser
|
|
|
48
48
|
"RSpec"
|
|
49
49
|
elsif defined?(Test::Unit)
|
|
50
50
|
"Unit Tests"
|
|
51
|
+
elsif defined?(MiniTest)
|
|
52
|
+
"MiniTest"
|
|
51
53
|
else
|
|
52
54
|
# TODO: Provide link to docs/wiki article
|
|
53
55
|
warn "SimpleCov failed to recognize the test framework and/or suite used. Please specify manually using SimpleCov.command_name 'Unit Tests'."
|
data/lib/simplecov/defaults.rb
CHANGED
|
@@ -27,7 +27,6 @@ SimpleCov.profiles.define 'rails' do
|
|
|
27
27
|
add_group 'Mailers', 'app/mailers'
|
|
28
28
|
add_group 'Helpers', 'app/helpers'
|
|
29
29
|
add_group 'Libraries', 'lib'
|
|
30
|
-
add_group 'Plugins', 'vendor/plugins'
|
|
31
30
|
end
|
|
32
31
|
|
|
33
32
|
# Default configuration
|
|
@@ -41,14 +40,15 @@ end
|
|
|
41
40
|
SimpleCov::CommandGuesser.original_run_command = "#{$0} #{ARGV.join(" ")}"
|
|
42
41
|
|
|
43
42
|
at_exit do
|
|
44
|
-
|
|
45
|
-
if $! #was an exception thrown?
|
|
46
|
-
#if it was a SystemExit, use the accompanying status
|
|
47
|
-
#otherwise set a non-zero status representing termination by some other exception
|
|
48
|
-
#(see github issue 41)
|
|
43
|
+
|
|
44
|
+
if $! # was an exception thrown?
|
|
45
|
+
# if it was a SystemExit, use the accompanying status
|
|
46
|
+
# otherwise set a non-zero status representing termination by some other exception
|
|
47
|
+
# (see github issue 41)
|
|
49
48
|
@exit_status = $!.is_a?(SystemExit) ? $!.status : SimpleCov::ExitCodes::EXCEPTION
|
|
50
49
|
else
|
|
51
|
-
|
|
50
|
+
# Store the exit status of the test run since it goes away after calling the at_exit proc...
|
|
51
|
+
@exit_status = SimpleCov::ExitCodes::SUCCESS
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
SimpleCov.at_exit.call
|
|
@@ -56,12 +56,12 @@ at_exit do
|
|
|
56
56
|
if SimpleCov.result? # Result has been computed
|
|
57
57
|
covered_percent = SimpleCov.result.covered_percent.round(2)
|
|
58
58
|
|
|
59
|
-
if @exit_status ==
|
|
60
|
-
|
|
59
|
+
if @exit_status == SimpleCov::ExitCodes::SUCCESS # No other errors
|
|
60
|
+
if covered_percent < SimpleCov.minimum_coverage
|
|
61
61
|
$stderr.puts "Coverage (%.2f%%) is below the expected minimum coverage (%.2f%%)." % \
|
|
62
62
|
[covered_percent, SimpleCov.minimum_coverage]
|
|
63
63
|
|
|
64
|
-
SimpleCov::ExitCodes::MINIMUM_COVERAGE
|
|
64
|
+
@exit_status = SimpleCov::ExitCodes::MINIMUM_COVERAGE
|
|
65
65
|
|
|
66
66
|
elsif (last_run = SimpleCov::LastRun.read)
|
|
67
67
|
diff = last_run['result']['covered_percent'] - covered_percent
|
|
@@ -69,18 +69,15 @@ at_exit do
|
|
|
69
69
|
$stderr.puts "Coverage has dropped by %.2f%% since the last time (maximum allowed: %.2f%%)." % \
|
|
70
70
|
[diff, SimpleCov.maximum_coverage_drop]
|
|
71
71
|
|
|
72
|
-
SimpleCov::ExitCodes::MAXIMUM_COVERAGE_DROP
|
|
72
|
+
@exit_status = SimpleCov::ExitCodes::MAXIMUM_COVERAGE_DROP
|
|
73
73
|
end
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
:result => { :covered_percent => covered_percent }
|
|
79
|
-
}
|
|
80
|
-
SimpleCov::LastRun.write(metrics)
|
|
77
|
+
SimpleCov::LastRun.write(:result => {:covered_percent => covered_percent})
|
|
81
78
|
end
|
|
82
79
|
|
|
83
|
-
exit @exit_status
|
|
80
|
+
exit @exit_status # Force exit with stored status (see github issue #5)
|
|
84
81
|
end
|
|
85
82
|
|
|
86
83
|
# Autoload config from ~/.simplecov if present
|
data/lib/simplecov/exit_codes.rb
CHANGED
data/lib/simplecov/file_list.rb
CHANGED
|
@@ -39,6 +39,6 @@ class SimpleCov::FileList < Array
|
|
|
39
39
|
# Computes the strength (hits / line) based upon lines covered and lines missed
|
|
40
40
|
def covered_strength
|
|
41
41
|
return 0 if empty? or lines_of_code == 0
|
|
42
|
-
map {|f| f.covered_strength }.inject(&:+)
|
|
42
|
+
map {|f| f.covered_strength * f.lines_of_code }.inject(&:+) / lines_of_code
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -16,6 +16,8 @@ if defined?(JRUBY_VERSION) && JRUBY_VERSION.to_f < 1.7
|
|
|
16
16
|
def result
|
|
17
17
|
fixed = {}
|
|
18
18
|
__broken_result__.each do |path, executed_lines|
|
|
19
|
+
next unless File.file? path
|
|
20
|
+
|
|
19
21
|
covered_lines = executed_lines.dup
|
|
20
22
|
|
|
21
23
|
process = lambda do |node|
|
|
@@ -26,10 +28,7 @@ if defined?(JRUBY_VERSION) && JRUBY_VERSION.to_f < 1.7
|
|
|
26
28
|
node.child_nodes.each(&process)
|
|
27
29
|
end
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
process[JRuby.parse(File.read(path), path)]
|
|
31
|
-
rescue => e
|
|
32
|
-
end
|
|
31
|
+
process[JRuby.parse(File.read(path), path)]
|
|
33
32
|
|
|
34
33
|
if (first = covered_lines.detect { |x| x }) && first > 0
|
|
35
34
|
fixed[File.expand_path(path)] = covered_lines
|
data/lib/simplecov/result.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'digest/sha1'
|
|
2
|
+
require 'forwardable'
|
|
2
3
|
|
|
3
4
|
module SimpleCov
|
|
4
5
|
#
|
|
@@ -6,6 +7,7 @@ module SimpleCov
|
|
|
6
7
|
# library generates (Coverage.result).
|
|
7
8
|
#
|
|
8
9
|
class Result
|
|
10
|
+
extend Forwardable
|
|
9
11
|
# Returns the original Coverage.result used for this instance of SimpleCov::Result
|
|
10
12
|
attr_reader :original_result
|
|
11
13
|
# Returns all files that are applicable to this result (sans filters!) as instances of SimpleCov::SourceFile. Aliased as :source_files
|
|
@@ -16,21 +18,16 @@ module SimpleCov
|
|
|
16
18
|
# Explicitly set the command name that was used for this coverage result. Defaults to SimpleCov.command_name
|
|
17
19
|
attr_writer :command_name
|
|
18
20
|
|
|
21
|
+
def_delegators :files, :covered_percent, :covered_strength, :covered_lines, :missed_lines
|
|
22
|
+
def_delegator :files, :lines_of_code, :total_lines
|
|
23
|
+
|
|
19
24
|
# Initialize a new SimpleCov::Result from given Coverage.result (a Hash of filenames each containing an array of
|
|
20
25
|
# coverage data)
|
|
21
26
|
def initialize(original_result)
|
|
22
|
-
@original_result = original_result.
|
|
23
|
-
|
|
24
|
-
# Squeeze filepaths (i.e. "/a/b/../c" becomes "/a/c")
|
|
25
|
-
@original_result.keys.each do |filename|
|
|
26
|
-
expanded_filename = File.expand_path filename
|
|
27
|
-
@original_result[expanded_filename] = @original_result.delete filename
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
@files = SimpleCov::FileList.new(@original_result.map do |filename, coverage|
|
|
27
|
+
@original_result = original_result.freeze
|
|
28
|
+
@files = SimpleCov::FileList.new(original_result.map do |filename, coverage|
|
|
31
29
|
SimpleCov::SourceFile.new(filename, coverage) if File.file?(filename)
|
|
32
30
|
end.compact.sort_by(&:filename))
|
|
33
|
-
|
|
34
31
|
filter!
|
|
35
32
|
end
|
|
36
33
|
|
|
@@ -44,56 +41,6 @@ module SimpleCov
|
|
|
44
41
|
@groups ||= SimpleCov.grouped(files)
|
|
45
42
|
end
|
|
46
43
|
|
|
47
|
-
# The overall percentual coverage for this result
|
|
48
|
-
def covered_percent
|
|
49
|
-
# Make sure that weird rounding error from #15, #23 and #24 does not occur again!
|
|
50
|
-
total_lines.zero? ? 0 : 100.0 * covered_lines / total_lines
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# The multiple of coverage for this result
|
|
54
|
-
def covered_strength
|
|
55
|
-
return 0 if total_lines.zero?
|
|
56
|
-
return @covered_strength if @covered_strength
|
|
57
|
-
m = 0
|
|
58
|
-
@files.each do |file|
|
|
59
|
-
original_result[file.filename].each do |line_result|
|
|
60
|
-
if line_result
|
|
61
|
-
m += line_result
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
@covered_strength = m.to_f / total_lines
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Returns the count of lines that are covered
|
|
69
|
-
def covered_lines
|
|
70
|
-
return @covered_lines if defined? @covered_lines
|
|
71
|
-
@covered_lines = 0
|
|
72
|
-
@files.each do |file|
|
|
73
|
-
original_result[file.filename].each do |line_result|
|
|
74
|
-
@covered_lines += 1 if line_result and line_result > 0
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
@covered_lines
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# Returns the count of missed lines
|
|
81
|
-
def missed_lines
|
|
82
|
-
return @missed_lines if defined? @missed_lines
|
|
83
|
-
@missed_lines = 0
|
|
84
|
-
@files.each do |file|
|
|
85
|
-
original_result[file.filename].each do |line_result|
|
|
86
|
-
@missed_lines += 1 if line_result == 0
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
@missed_lines
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
# Total count of relevant lines (covered + missed)
|
|
93
|
-
def total_lines
|
|
94
|
-
@total_lines ||= (covered_lines + missed_lines)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
44
|
# Applies the configured SimpleCov.formatter on this result
|
|
98
45
|
def format!
|
|
99
46
|
SimpleCov.formatter.new.format(self)
|
data/lib/simplecov/version.rb
CHANGED
data/simplecov.gemspec
CHANGED
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
|
|
|
15
15
|
|
|
16
16
|
gem.add_dependency 'multi_json'
|
|
17
17
|
gem.add_dependency 'lockfile', '>= 2.1.0'
|
|
18
|
-
gem.add_dependency 'simplecov-html', '~> 0.
|
|
18
|
+
gem.add_dependency 'simplecov-html', '~> 0.8.0'
|
|
19
19
|
gem.add_dependency 'docile', '~> 1.1.0'
|
|
20
20
|
|
|
21
21
|
gem.add_development_dependency 'appraisal', '~> 0.5.1'
|
data/test/test_file_list.rb
CHANGED
|
@@ -5,18 +5,17 @@ class TestFileList < Test::Unit::TestCase
|
|
|
5
5
|
setup do
|
|
6
6
|
original_result = {source_fixture('sample.rb') => [nil, 1, 1, 1, nil, nil, 1, 1, nil, nil],
|
|
7
7
|
source_fixture('app/models/user.rb') => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
|
|
8
|
-
source_fixture('app/controllers/sample_controller.rb') => [nil,
|
|
8
|
+
source_fixture('app/controllers/sample_controller.rb') => [nil, 2, 2, 0, nil, nil, 0, nil, nil, nil]}
|
|
9
9
|
@file_list = SimpleCov::Result.new(original_result).files
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
should("have
|
|
13
|
-
should("have
|
|
14
|
-
should("have
|
|
15
|
-
should("have
|
|
12
|
+
should("have 11 covered_lines") { assert_equal 11, @file_list.covered_lines }
|
|
13
|
+
should("have 3 missed_lines") { assert_equal 3, @file_list.missed_lines }
|
|
14
|
+
should("have 19 never_lines") { assert_equal 19, @file_list.never_lines }
|
|
15
|
+
should("have 14 lines_of_code") { assert_equal 14, @file_list.lines_of_code }
|
|
16
16
|
should("have 3 skipped_lines") { assert_equal 3, @file_list.skipped_lines }
|
|
17
17
|
|
|
18
|
-
should
|
|
19
|
-
|
|
20
|
-
end
|
|
18
|
+
should("have correct covered_percent") { assert_equal 100.0*11/14, @file_list.covered_percent }
|
|
19
|
+
should("have correct covered_strength") { assert_equal 13.to_f/14, @file_list.covered_strength }
|
|
21
20
|
end
|
|
22
21
|
end if SimpleCov.usable?
|
data/test/test_result.rb
CHANGED
|
@@ -37,6 +37,12 @@ class TestResult < Test::Unit::TestCase
|
|
|
37
37
|
assert_equal 100.0*13/15, @result.covered_percent
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
[:covered_percent, :covered_strength, :covered_lines, :missed_lines, :total_lines].each do |msg|
|
|
41
|
+
should "respond to #{msg}" do
|
|
42
|
+
assert @result.respond_to? msg
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
40
46
|
context "dumped with to_hash" do
|
|
41
47
|
setup { @hash = @result.to_hash }
|
|
42
48
|
should("be a hash") { assert_equal Hash, @hash.class }
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: simplecov
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christoph Olszowka
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-11-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: multi_json
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - ~>
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.
|
|
47
|
+
version: 0.8.0
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - ~>
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.
|
|
54
|
+
version: 0.8.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: docile
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -186,7 +186,7 @@ files:
|
|
|
186
186
|
- lib/simplecov/formatter.rb
|
|
187
187
|
- lib/simplecov/formatter/multi_formatter.rb
|
|
188
188
|
- lib/simplecov/formatter/simple_formatter.rb
|
|
189
|
-
- lib/simplecov/
|
|
189
|
+
- lib/simplecov/jruby_fix.rb
|
|
190
190
|
- lib/simplecov/json.rb
|
|
191
191
|
- lib/simplecov/last_run.rb
|
|
192
192
|
- lib/simplecov/merge_helpers.rb
|
|
@@ -256,9 +256,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
256
256
|
version: '0'
|
|
257
257
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
258
|
requirements:
|
|
259
|
-
- - '
|
|
259
|
+
- - '>='
|
|
260
260
|
- !ruby/object:Gem::Version
|
|
261
|
-
version:
|
|
261
|
+
version: '0'
|
|
262
262
|
requirements: []
|
|
263
263
|
rubyforge_project:
|
|
264
264
|
rubygems_version: 2.0.3
|