cover_me 1.0.0.pre4 → 1.0.0.rc1
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.
- data/README +2 -2
- data/lib/cover_me.rb +23 -9
- data/lib/cover_me/config.rb +5 -0
- data/lib/cover_me/processor.rb +3 -3
- data/lib/cover_me/report.rb +2 -2
- data/lib/cover_me/results.rb +44 -0
- data/lib/generators/cover_me/install/install_generator.rb +33 -0
- data/lib/generators/cover_me/install/templates/cover_me.rake +16 -0
- metadata +27 -7
data/README
CHANGED
@@ -32,9 +32,9 @@ After spending a morning playing with it, I was quickly able to grow the idea in
|
|
32
32
|
|
33
33
|
==Use
|
34
34
|
|
35
|
-
CoverMe is pretty easy to use, and has been tested with Ruby 1.9.2 and Rails 3.
|
35
|
+
CoverMe is pretty easy to use, and has been tested with Ruby 1.9.2 and Rails 3. First, add CoverMe to your Gemfile:
|
36
36
|
|
37
|
-
gem 'cover_me', '>= 1.0.0.
|
37
|
+
gem 'cover_me', '>= 1.0.0.rc1', :group => :test
|
38
38
|
|
39
39
|
Now make sure to install the gem with Bundler:
|
40
40
|
|
data/lib/cover_me.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# http://engineering.attinteractive.com/2010/08/code-coverage-in-ruby-1-9/
|
2
|
-
|
3
2
|
require 'coverage'
|
4
3
|
require 'erb'
|
5
4
|
require 'fileutils'
|
@@ -7,6 +6,24 @@ require 'configatron'
|
|
7
6
|
require 'hashie'
|
8
7
|
|
9
8
|
module CoverMe
|
9
|
+
|
10
|
+
class << self
|
11
|
+
|
12
|
+
def complete!
|
13
|
+
data_file = CoverMe.config.results.store
|
14
|
+
|
15
|
+
if File.exists?(data_file)
|
16
|
+
data = CoverMe::Results.read_results(data_file)
|
17
|
+
|
18
|
+
CoverMe::Processor.new(data).process!
|
19
|
+
CoverMe.config.at_exit.call
|
20
|
+
|
21
|
+
File.delete(data_file)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
10
27
|
end
|
11
28
|
|
12
29
|
path = File.join(File.dirname(__FILE__), 'cover_me')
|
@@ -16,16 +33,13 @@ require File.expand_path(File.join(path, 'config'))
|
|
16
33
|
|
17
34
|
CoverMe.set_defaults
|
18
35
|
|
19
|
-
%w{index report formatter processor html_formatter}.each do |file|
|
36
|
+
%w{index report formatter processor html_formatter results}.each do |file|
|
20
37
|
require File.expand_path(File.join(path, file))
|
21
38
|
end
|
22
39
|
|
23
40
|
# Start the code coverage
|
24
|
-
|
25
|
-
Coverage.start
|
41
|
+
Coverage.start
|
26
42
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
31
|
-
# end
|
43
|
+
at_exit do
|
44
|
+
CoverMe::Results.merge_results!(Coverage.result)
|
45
|
+
end
|
data/lib/cover_me/config.rb
CHANGED
@@ -20,9 +20,14 @@ module CoverMe
|
|
20
20
|
def set_defaults # :nodoc:
|
21
21
|
CoverMe.config do |c|
|
22
22
|
c.project.set_default(:root, Configatron::Delayed.new {Rails.root.to_s})
|
23
|
+
c.results.set_default(:store, Configatron::Delayed.new {File.join(CoverMe.config.project.root, 'coverage.data')})
|
23
24
|
c.set_default(:file_pattern, Configatron::Delayed.new do
|
24
25
|
/(#{CoverMe.config.project.root}\/app\/.+\.rb|#{CoverMe.config.project.root}\/lib\/.+\.rb)/ix
|
25
26
|
end)
|
27
|
+
|
28
|
+
c.proximity.set_default(:near, 90)
|
29
|
+
c.proximity.set_default(:hit, 100)
|
30
|
+
|
26
31
|
c.set_default(:formatter, Configatron::Delayed.new {CoverMe::HtmlFormatter})
|
27
32
|
c.set_default(:at_exit, Proc.new {
|
28
33
|
if CoverMe.config.formatter == CoverMe::HtmlFormatter
|
data/lib/cover_me/processor.rb
CHANGED
@@ -21,11 +21,11 @@ class CoverMe::Processor
|
|
21
21
|
if filename.match(self.options.pattern)
|
22
22
|
report = CoverMe::Report.new(filename, coverage)
|
23
23
|
self.index.reports << report
|
24
|
-
self.options
|
24
|
+
self.options[:formatter].format(report)
|
25
25
|
end
|
26
26
|
end
|
27
|
-
self.options
|
28
|
-
self.options
|
27
|
+
self.options[:formatter].format(self.index)
|
28
|
+
self.options[:formatter].finalize
|
29
29
|
end
|
30
30
|
|
31
31
|
end
|
data/lib/cover_me/report.rb
CHANGED
@@ -23,8 +23,8 @@ class CoverMe::Report
|
|
23
23
|
def proximity
|
24
24
|
unless @proximity
|
25
25
|
@proximity = 'miss'
|
26
|
-
@proximity = 'near' if self.executed_percent >=
|
27
|
-
@proximity = 'hit' if self.executed_percent >=
|
26
|
+
@proximity = 'near' if self.executed_percent >= CoverMe.config.proximity.near
|
27
|
+
@proximity = 'hit' if self.executed_percent >= CoverMe.config.proximity.hit
|
28
28
|
end
|
29
29
|
return @proximity
|
30
30
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module CoverMe
|
2
|
+
module Results
|
3
|
+
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def read_results(path = CoverMe.config.results.store)
|
7
|
+
data = {}
|
8
|
+
if File.exists?(path)
|
9
|
+
data = eval(File.read(path)) || {}
|
10
|
+
end
|
11
|
+
return data
|
12
|
+
end
|
13
|
+
|
14
|
+
def merge_results!(cov_results, path = CoverMe.config.results.store)
|
15
|
+
|
16
|
+
data = CoverMe::Results.read_results(path)
|
17
|
+
|
18
|
+
cov_results.each do |file, results|
|
19
|
+
if data.has_key?(file)
|
20
|
+
results.each_with_index do |result, i|
|
21
|
+
summed_value = result # default
|
22
|
+
if result.nil?
|
23
|
+
summed_value = data[file][i]
|
24
|
+
elsif !data[file][i].nil?
|
25
|
+
summed_value = data[file][i] + result
|
26
|
+
end
|
27
|
+
data[file][i] = summed_value
|
28
|
+
end
|
29
|
+
else
|
30
|
+
data[file] = results
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
File.open(path, 'w') do |f|
|
35
|
+
f.write(data.inspect)
|
36
|
+
end
|
37
|
+
|
38
|
+
return data
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end # Results
|
44
|
+
end # CoverMe
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
puts 'cover me generator!!'
|
4
|
+
|
5
|
+
# class LayoutGenerator < Rails::Generators::Base
|
6
|
+
# def self.source_root
|
7
|
+
# @_cover_me_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
8
|
+
# end
|
9
|
+
#
|
10
|
+
# def generate_layout
|
11
|
+
# copy_file "cover_me.rake", "lib/tasks/cover_me.rake"
|
12
|
+
# end
|
13
|
+
# end
|
14
|
+
|
15
|
+
module CoverMe
|
16
|
+
class InstallGenerator < Rails::Generators::Base #:nodoc:
|
17
|
+
|
18
|
+
desc 'Installs a Rake task for the CoverMe gem.'
|
19
|
+
|
20
|
+
def self.source_root
|
21
|
+
@_cover_me_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.banner
|
25
|
+
"rails generate cover_me:install"
|
26
|
+
end
|
27
|
+
|
28
|
+
def copy_files
|
29
|
+
template 'cover_me.rake', 'lib/tasks/cover_me.rake'
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 1
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.0.
|
9
|
+
- rc1
|
10
|
+
version: 1.0.0.rc1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- markbates
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-09-30 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -61,6 +61,7 @@ files:
|
|
61
61
|
- lib/cover_me/index.rb
|
62
62
|
- lib/cover_me/processor.rb
|
63
63
|
- lib/cover_me/report.rb
|
64
|
+
- lib/cover_me/results.rb
|
64
65
|
- lib/cover_me/templates/index.css
|
65
66
|
- lib/cover_me/templates/index.html.erb
|
66
67
|
- lib/cover_me/templates/jquery.js
|
@@ -68,13 +69,31 @@ files:
|
|
68
69
|
- lib/cover_me/templates/report.css
|
69
70
|
- lib/cover_me/templates/report.html.erb
|
70
71
|
- lib/cover_me.rb
|
72
|
+
- lib/generators/cover_me/install/install_generator.rb
|
73
|
+
- lib/generators/cover_me/install/templates/cover_me.rake
|
71
74
|
- README
|
72
75
|
- LICENSE
|
73
76
|
has_rdoc: true
|
74
77
|
homepage: http://www.metabates.com
|
75
78
|
licenses: []
|
76
79
|
|
77
|
-
post_install_message:
|
80
|
+
post_install_message: |
|
81
|
+
Thank you for installing CoverMe!
|
82
|
+
|
83
|
+
USAGE:
|
84
|
+
At the top of your 'test_helper.rb' or 'spec_helper.rb' place the following:
|
85
|
+
|
86
|
+
require 'cover_me'
|
87
|
+
|
88
|
+
!!! IT IS VERY IMPORTANT THAT THE REQUIRE STATEMENT BE THE VERY FIRST LINE OF THE FILE !!!
|
89
|
+
|
90
|
+
RAILS 3:
|
91
|
+
If you are planning on using this with a Rails 3 project please run the following:
|
92
|
+
|
93
|
+
$ rails g cover_me:install
|
94
|
+
|
95
|
+
This will install a Rake task to wrap your tests in CoverMe.
|
96
|
+
|
78
97
|
rdoc_options: []
|
79
98
|
|
80
99
|
require_paths:
|
@@ -84,10 +103,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
103
|
requirements:
|
85
104
|
- - ">="
|
86
105
|
- !ruby/object:Gem::Version
|
87
|
-
hash: -280141288175222533
|
88
106
|
segments:
|
89
|
-
-
|
90
|
-
|
107
|
+
- 1
|
108
|
+
- 9
|
109
|
+
- 2
|
110
|
+
version: 1.9.2
|
91
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
112
|
none: false
|
93
113
|
requirements:
|