coco 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2ad77928953cdcb188c1a23fd0e3305876a3d63
4
- data.tar.gz: 6575f5fea0141f3824172835eb1f701485d694cf
3
+ metadata.gz: 43c9f3652fdd1a0d076a55cc16ff8f479c6e243a
4
+ data.tar.gz: 922a59fa96f022356bbd639b94f02299a44d209f
5
5
  SHA512:
6
- metadata.gz: acb60b91e3097ea477f510a3cb235cc02b120e29399b5228f0f7c519855152fd458757f6242b5dffd95dfdd2479b5d97b21a5f8c3985abaade3398c7aff883ee
7
- data.tar.gz: fd645a95bbc252eb7face09d94cf7b0e305eeedda922431a51c9d5597b271b224eb8fef4b77c4e8d9b44634c5c7598510ab9d5b46c1ac1dc4bf0780b6d64e77f
6
+ metadata.gz: 466b4ece64b0ba67bc5537094ec57f2b2289e7b8d043c163bf889e361fc48c45145404837924e492cf74b43b0df6bf1ccb3260eea80efc8ec8963f0ed0063bea
7
+ data.tar.gz: 39f8c68fc9edb94231328c5aae8b37ff0c311fdea2c904e28c4d76d58f8bb987d208783ab80b7558b6a8a393d1ad565e8a5dfd47367a769c9badae21bb9f5f5f
@@ -2,6 +2,23 @@ Next version (Unreleased)
2
2
  =================================================
3
3
 
4
4
 
5
+ v0.15.0 (2017-02-27)
6
+ =================================================
7
+
8
+ ## Added
9
+
10
+ * It's now possible to exit (with code status 2) from coco when the coverage
11
+ is less than a particular threshold. This feature allow the build to fail in
12
+ continuous integration. This behavior is controlled by the option
13
+ `:exit_if_coverage_below` and is to 0 by default (that is it's not active).
14
+
15
+ ## Changed
16
+
17
+ * The coverage rate is now displayed in decimal format. So it's 12.34% instead
18
+ of 12%. This change affect the console summary as well as the index page of
19
+ the HTML report.
20
+
21
+
5
22
  v0.14.0 (2016-04-16)
6
23
  =================================================
7
24
 
@@ -1,41 +1,41 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- coco (0.14.0)
4
+ coco (0.15.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- builder (3.2.2)
10
- cucumber (2.3.3)
9
+ builder (3.2.3)
10
+ cucumber (2.4.0)
11
11
  builder (>= 2.1.2)
12
- cucumber-core (~> 1.4.0)
12
+ cucumber-core (~> 1.5.0)
13
13
  cucumber-wire (~> 0.0.1)
14
14
  diff-lcs (>= 1.1.3)
15
- gherkin (~> 3.2.0)
15
+ gherkin (~> 4.0)
16
16
  multi_json (>= 1.7.5, < 2.0)
17
17
  multi_test (>= 0.1.2)
18
- cucumber-core (1.4.0)
19
- gherkin (~> 3.2.0)
18
+ cucumber-core (1.5.0)
19
+ gherkin (~> 4.0)
20
20
  cucumber-wire (0.0.1)
21
- diff-lcs (1.2.5)
22
- gherkin (3.2.0)
23
- multi_json (1.11.2)
21
+ diff-lcs (1.3)
22
+ gherkin (4.0.0)
23
+ multi_json (1.12.1)
24
24
  multi_test (0.1.2)
25
- rake (10.4.2)
26
- rspec (3.4.0)
27
- rspec-core (~> 3.4.0)
28
- rspec-expectations (~> 3.4.0)
29
- rspec-mocks (~> 3.4.0)
30
- rspec-core (3.4.4)
31
- rspec-support (~> 3.4.0)
32
- rspec-expectations (3.4.0)
25
+ rake (12.0.0)
26
+ rspec (3.5.0)
27
+ rspec-core (~> 3.5.0)
28
+ rspec-expectations (~> 3.5.0)
29
+ rspec-mocks (~> 3.5.0)
30
+ rspec-core (3.5.4)
31
+ rspec-support (~> 3.5.0)
32
+ rspec-expectations (3.5.0)
33
33
  diff-lcs (>= 1.2.0, < 2.0)
34
- rspec-support (~> 3.4.0)
35
- rspec-mocks (3.4.1)
34
+ rspec-support (~> 3.5.0)
35
+ rspec-mocks (3.5.0)
36
36
  diff-lcs (>= 1.2.0, < 2.0)
37
- rspec-support (~> 3.4.0)
38
- rspec-support (3.4.1)
37
+ rspec-support (~> 3.5.0)
38
+ rspec-support (3.5.0)
39
39
 
40
40
  PLATFORMS
41
41
  ruby
@@ -48,4 +48,4 @@ DEPENDENCIES
48
48
  rspec (~> 3.4)
49
49
 
50
50
  BUNDLED WITH
51
- 1.11.2
51
+ 1.13.7
@@ -3,11 +3,9 @@ coco [![Build Status](https://travis-ci.org/lkdjiin/coco.png)](https://travis-ci
3
3
 
4
4
  — *«If it's well-covered it doesn't mean it's well-tested!»* —
5
5
 
6
- Code coverage tool for ruby 2.0, 2.1, 2.2 and 2.3.
7
- =======
6
+ # Code coverage tool for ruby 2.x
8
7
 
9
- Install
10
- --------------------------------
8
+ ## Install
11
9
 
12
10
  In your Gemfile:
13
11
 
@@ -23,8 +21,7 @@ And in case you want to test the latest development:
23
21
 
24
22
  gem 'coco', github: 'lkdjiin/coco', branch: 'development'
25
23
 
26
- Usage
27
- --------------------------------
24
+ ## Usage
28
25
  Require the coco library at the beginning of your tests:
29
26
 
30
27
  require 'coco'
@@ -50,8 +47,7 @@ the `coverage/index.html` to access a line by line report.
50
47
  _Note: files with a coverage of 0% are only listed in index.html ; there
51
48
  is no line by line report for such files._
52
49
 
53
- Basic Configuration
54
- ----------------------------------
50
+ ## Basic Configuration
55
51
 
56
52
  Configuration is done via a YAML file. You can configure:
57
53
 
@@ -144,21 +140,7 @@ _Note: YAML is very punctilious with the syntax. In particular, paid attention
144
140
  to not put any leading spaces or tab at all._
145
141
 
146
142
 
147
- Advanced configuration
148
- ---------------------------------
149
-
150
- ### See coverage of all files in the console
151
-
152
- By default, with a multilines report style on the console, Coco will display
153
- only the files with a coverage above the threshold. And as the threshold is
154
- 100% by default, nothing will be displayed if your test suite is 100% covered.
155
- This could be annoying for some people, or worst, you could even feel like Coco
156
- doing something the wrong way.
157
-
158
- So, to display in green the covered files, put this in your `.coco.yml`
159
- configuration file:
160
-
161
- :exclude_above_threshold: false
143
+ ## Advanced configuration
162
144
 
163
145
  ### When to start coco, and when not to start it
164
146
 
@@ -191,6 +173,34 @@ environement variable `COCO`, like this:
191
173
 
192
174
  COCO=1 rspec
193
175
 
176
+ ### Premature exit if coverage is under a particular threshold
177
+
178
+ If you're using some kind of continuous integration, there is some chance you
179
+ would like the build to fail if the coverage is under a particular threshold.
180
+ In such case you want to set the `exit_if_coverage_below` option.
181
+
182
+ #### Example
183
+
184
+ Put this in your `.coco.yml` configuration file:
185
+
186
+ :exit_if_coverage_below: 95
187
+
188
+ This will make coco fail if the coverage percentage is below 95%.
189
+
190
+
191
+ ### See coverage of all files in the console
192
+
193
+ By default, with a multilines report style on the console, Coco will display
194
+ only the files with a coverage above the threshold. And as the threshold is
195
+ 100% by default, nothing will be displayed if your test suite is 100% covered.
196
+ This could be annoying for some people, or worst, you could even feel like Coco
197
+ doing something the wrong way.
198
+
199
+ So, to display in green the covered files, put this in your `.coco.yml`
200
+ configuration file:
201
+
202
+ :exclude_above_threshold: false
203
+
194
204
  ### Index page URI in your terminal
195
205
 
196
206
  If your terminal supports opening an URI with a double-clic (or any
@@ -213,8 +223,7 @@ Now, when running tests, you will see something like the following:
213
223
  See file:///path/to/your/coverage/index.html
214
224
 
215
225
 
216
- How is this different than [SimpleCov](https://github.com/colszowka/simplecov) ?
217
- --------------------------------
226
+ ## How is this different than [SimpleCov](https://github.com/colszowka/simplecov) ?
218
227
 
219
228
  I designed Coco from the start to have only the features I need. And I don't
220
229
  need much: 95% of the time, all I want is a tiny one line summary in my console.
@@ -229,26 +238,22 @@ To synthesize, if you have big needs, give SimpleCov a try ; if you have small
229
238
  needs, give Coco a try.
230
239
 
231
240
 
232
- Contributing
233
- --------------------------------
241
+ ## Contributing
234
242
 
235
243
  1. Fork it.
236
- 2. Create your feature branch **from the development branch**:
237
- - `git checkout development`
238
- - `git pull origin development`
244
+ 2. Create your feature branch
245
+ - `git pull origin master`
239
246
  - `git checkout -b my-new-feature`
240
247
  3. Commit your changes (`git commit -am 'Add some feature'`)
241
248
  4. Push to the branch (`git push origin my-new-feature`)
242
249
  5. Create a Pull Request.
243
250
 
244
251
 
245
- License
246
- --------------------------------
252
+ ## License
247
253
  MIT, see LICENSE.
248
254
 
249
255
 
250
- Questions and/or Comments
251
- --------------------------------
256
+ ## Questions and/or Comments
252
257
 
253
258
  Feel free to email [Xavier Nayrac](mailto:xavier.nayrac@gmail.com)
254
259
  with any questions, or contact me on [twitter](https://twitter.com/lkdjiin).
data/TODO.md ADDED
@@ -0,0 +1,3 @@
1
+ twitter
2
+ blog / exemple avec travis et/ou circle
3
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.14.0
1
+ 0.15.0
@@ -11,7 +11,7 @@ require 'coco/deprecated_message'
11
11
  require 'coverage'
12
12
 
13
13
  # Public: Main namespace of Coco, a code coverage utilily for
14
- # Ruby from 2.0 to 2.3.
14
+ # Ruby 2.x.
15
15
  #
16
16
  module Coco
17
17
  ROOT = File.expand_path(File.dirname(__FILE__) + '/..').freeze
@@ -30,6 +30,7 @@ module Coco
30
30
  show_link_in_terminal: false,
31
31
  exclude_above_threshold: true,
32
32
  theme: 'light',
33
+ exit_if_coverage_below: 0,
33
34
  }.freeze
34
35
 
35
36
  # Public: Initialize a Configuration.
@@ -12,7 +12,7 @@ module Coco
12
12
  end
13
13
 
14
14
  def to_s
15
- "Cover #{average}% | #{uncovered_count} uncovered | #{count} files"
15
+ "Cover #{'%.2f' % average}% | #{uncovered_count} uncovered | #{count} files"
16
16
  end
17
17
 
18
18
  # Public: Computes the average coverage rate.
@@ -25,10 +25,10 @@ module Coco
25
25
  # In words: Take the sum of the coverage's percentage of all files
26
26
  # and divide this sum by the number of files.
27
27
  #
28
- # Returns the Fixnum rounded average rate of coverage.
28
+ # Returns the Float average rate of coverage.
29
29
  #
30
30
  def average
31
- files_present? ? (sum / count).round : 0
31
+ files_present? ? sum / count : 0
32
32
  end
33
33
 
34
34
  private
@@ -3,6 +3,7 @@ module Coco
3
3
  # A project reports statistics about the code coverage.
4
4
  #
5
5
  class Project
6
+ EXIT_ON_LOW_COVERAGE_CODE = 2
6
7
 
7
8
  # raw_result - The hash obtain by the call to `Coverage.result`.
8
9
  # out - The output where results will be displayed, by
@@ -23,10 +24,26 @@ module Coco
23
24
 
24
25
  report_on_console
25
26
  report_in_html
27
+
28
+ maybe_exit_if_low_coverage
26
29
  end
27
30
 
28
31
  private
29
32
 
33
+ def maybe_exit_if_low_coverage
34
+ return if coverage_is_satisfying?
35
+
36
+ message = "Sadly, the code coverage is below the required value of " +
37
+ "#{@config[:exit_if_coverage_below]}%"
38
+ @out.puts ColoredString.new(message).red
39
+
40
+ exit(EXIT_ON_LOW_COVERAGE_CODE)
41
+ end
42
+
43
+ def coverage_is_satisfying?
44
+ Summary.new(result, uncovered).average >= @config[:exit_if_coverage_below]
45
+ end
46
+
30
47
  def report_on_console
31
48
  formatter = ConsoleFormatter.new(uncovered, @config[:threshold],
32
49
  result, @config)
@@ -19,7 +19,7 @@
19
19
 
20
20
  <section class="summary">
21
21
  <p>
22
- <span class="summary-rate">Rate <%= @summary.average %>%</span>
22
+ <span class="summary-rate">Rate <%= '%.2f' % @summary.average %>%</span>
23
23
  <span class="summary-uncovered">Uncovered <%= @summary.uncovered_count %></span>
24
24
  <span class="summary-files">Files <%= @summary.count %></span>
25
25
  </p>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coco
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xavier Nayrac
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-16 00:00:00.000000000 Z
11
+ date: 2017-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,6 +84,7 @@ files:
84
84
  - LICENSE
85
85
  - README.markdown
86
86
  - Rakefile
87
+ - TODO.md
87
88
  - VERSION
88
89
  - lib/coco.rb
89
90
  - lib/coco/configuration.rb
@@ -137,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  version: '0'
138
139
  requirements: []
139
140
  rubyforge_project:
140
- rubygems_version: 2.4.5
141
+ rubygems_version: 2.6.8
141
142
  signing_key:
142
143
  specification_version: 4
143
144
  summary: Code coverage tool for ruby 2.x