simplecov 0.3.1 → 0.3.2
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.rdoc +33 -16
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/lib/simplecov.rb +3 -1
- data/lib/simplecov/adapters.rb +2 -0
- data/lib/simplecov/command_guesser.rb +21 -0
- data/lib/simplecov/configuration.rb +12 -4
- data/simplecov.gemspec +10 -5
- data/test/test_command_guesser.rb +18 -0
- metadata +25 -8
- data/simple_cov.gemspec +0 -81
data/README.rdoc
CHANGED
@@ -8,24 +8,40 @@ In most cases, you'll want overall coverage results for your projects, including
|
|
8
8
|
etc. Simplecov automatically takes care of this by caching and then merging results when generating reports, so your
|
9
9
|
coverage report gives you a more accurate report on the blank spots in your test coverage.
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
you will want to use the simplecov-html gem (http://github.com/colszowka/simplecov-html).
|
11
|
+
The official formatter of SimpleCov is packaged as a separate gem called simplecov-html and will be installed automatically
|
12
|
+
when you do gem install simplecov. You can find it at http://github.com/colszowka/simplecov-html
|
14
13
|
|
15
14
|
== Basic usage
|
16
15
|
|
17
16
|
Update your Gemfile with this and do a bundle install:
|
18
17
|
group :test do
|
19
|
-
gem 'simplecov
|
18
|
+
gem 'simplecov', '>= 0.3.2' # Will install simplecov-html as a dependency
|
20
19
|
end
|
21
20
|
|
22
21
|
Then, add the following to your Rails test/test_helper.rb (right at the top, line 00):
|
23
22
|
|
24
|
-
require 'simplecov
|
23
|
+
require 'simplecov'
|
25
24
|
SimpleCov.start 'rails'
|
26
25
|
|
27
26
|
Now, when running rake test you'll get a coverage/ folder inside your app's root where you can browse your code coverage.
|
28
27
|
|
28
|
+
== Example output
|
29
|
+
|
30
|
+
For the Devise Ruby gem (some tests were removed, they just have too awesome test coverage...)
|
31
|
+
|
32
|
+
http://img.skitch.com/20100823-n9f52i3ty3qa7cqj33rafghrtc.png
|
33
|
+
|
34
|
+
== Usage with Cucumber and RSpec (name your framework)
|
35
|
+
|
36
|
+
Similarily to the usage with Test::Unit described above, the only thing you have to do is to add the simplecov
|
37
|
+
config to the very top of your Cucumber/RSpec/whatever setup file.
|
38
|
+
|
39
|
+
Just add the setup snippet at the very(!) top of features/support/env.rb (for Cucumber) or spec/spec_helper.rb (for RSpec).
|
40
|
+
Other test frameworks should work accordingly.
|
41
|
+
|
42
|
+
require 'simplecov'
|
43
|
+
SimpleCov.start 'rails'
|
44
|
+
|
29
45
|
== Configuration
|
30
46
|
|
31
47
|
Configuration settings can be applied in three formats.
|
@@ -127,28 +143,29 @@ There are two things to note here though:
|
|
127
143
|
|
128
144
|
=== Test suite names
|
129
145
|
|
130
|
-
|
131
|
-
|
132
|
-
|
146
|
+
Simplecov tries to guess the name of the currently running test suite based upon the shell command the tests are running
|
147
|
+
on (from v0.3.2+). This should work fine for Unit Tests, RSpec and Cucumber. If it fails, it will use the shell command
|
148
|
+
that invoked the test suite as a command name.
|
133
149
|
|
134
|
-
|
135
|
-
test suite is. You can do so by specifying SimpleCov.command_name in one test file that is
|
150
|
+
If you have some non-standard setup and still want nicely labeled test suites, you have to give Simplecov a cue what the
|
151
|
+
name of the currently running test suite is. You can do so by specifying SimpleCov.command_name in one test file that is
|
152
|
+
part of your specific suite.
|
136
153
|
|
137
|
-
So,
|
138
|
-
the structure of those projects is. You can apply this accordingly to the RSpecs
|
154
|
+
So, to customize the suite names on a Rails app (yeah, sorry for being Rails biased, but everyone knows what
|
155
|
+
the structure of those projects is. You can apply this accordingly to the RSpecs in your Outlook-WebDAV-Calendar-Sync gem),
|
139
156
|
you could do something like this:
|
140
157
|
|
141
158
|
# test/unit/some_test.rb
|
142
|
-
SimpleCov.command_name '
|
159
|
+
SimpleCov.command_name 'test:units'
|
143
160
|
|
144
161
|
# test/functionals/some_controller_test.rb
|
145
|
-
SimpleCov.command_name "
|
162
|
+
SimpleCov.command_name "test:functionals"
|
146
163
|
|
147
164
|
# test/integration/some_integration_test.rb
|
148
|
-
SimpleCov.command_name "
|
165
|
+
SimpleCov.command_name "test:integration"
|
149
166
|
|
150
167
|
# features/steps/web_steps.rb
|
151
|
-
SimpleCov.command_name "
|
168
|
+
SimpleCov.command_name "features"
|
152
169
|
|
153
170
|
Note that this has only to be invoked ONCE PER TEST SUITE, so even if you have 200 unit test files, specifying it in
|
154
171
|
some_test.rb is fair enough.
|
data/Rakefile
CHANGED
@@ -5,11 +5,12 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "simplecov"
|
8
|
-
gem.summary = %Q{Code coverage for Ruby 1.9}
|
9
|
-
gem.description = %Q{Code coverage for Ruby 1.9}
|
8
|
+
gem.summary = %Q{Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites}
|
9
|
+
gem.description = %Q{Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites}
|
10
10
|
gem.email = "christoph at olszowka.de"
|
11
11
|
gem.homepage = "http://github.com/colszowka/simplecov"
|
12
12
|
gem.authors = ["Christoph Olszowka"]
|
13
|
+
gem.add_dependency 'simplecov-html', ">= 0.3.5"
|
13
14
|
gem.add_development_dependency "shoulda", "= 2.10.3"
|
14
15
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
16
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/lib/simplecov.rb
CHANGED
@@ -105,10 +105,12 @@ require 'simplecov/filter'
|
|
105
105
|
require 'simplecov/formatter'
|
106
106
|
require 'simplecov/merge_helpers'
|
107
107
|
require 'simplecov/result_merger'
|
108
|
+
require 'simplecov/command_guesser'
|
109
|
+
require 'simplecov-html'
|
108
110
|
|
109
111
|
# Default configuration
|
110
112
|
SimpleCov.configure do
|
111
|
-
formatter SimpleCov::Formatter::
|
113
|
+
formatter SimpleCov::Formatter::HTMLFormatter
|
112
114
|
# Exclude files outside of SimpleCov.root
|
113
115
|
load_adapter 'root_filter'
|
114
116
|
end
|
data/lib/simplecov/adapters.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
#
|
2
|
+
# Helper that tries to find out what test suite is running (for SimpleCov.command_name)
|
3
|
+
#
|
4
|
+
module SimpleCov::CommandGuesser
|
5
|
+
def self.guess(command)
|
6
|
+
case command
|
7
|
+
when /#{'test/functional/'}/
|
8
|
+
"Functional Tests"
|
9
|
+
when /#{'test/integration/'}/
|
10
|
+
"Integration Tests"
|
11
|
+
when /#{'test/'}/
|
12
|
+
"Unit Tests"
|
13
|
+
when /cucumber/, /features/
|
14
|
+
"Cucumber Features"
|
15
|
+
when /#{'spec/'}/
|
16
|
+
"RSpec"
|
17
|
+
else
|
18
|
+
return command
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -45,11 +45,19 @@ module SimpleCov::Configuration
|
|
45
45
|
@filters ||= []
|
46
46
|
end
|
47
47
|
|
48
|
-
# The name of the command currently running.
|
49
|
-
#
|
50
|
-
#
|
48
|
+
# The name of the command (a.k.a. Test Suite) currently running. Used for result
|
49
|
+
# merging and caching. It first tries to make a guess based upon the command line
|
50
|
+
# arguments the current test suite is running on and should automatically detect
|
51
|
+
# unit tests, functional tests, integration tests, rpsec and cucumber and label
|
52
|
+
# them properly. If it fails to recognize the current command, the command name
|
53
|
+
# is set to the shell command that the current suite is running on.
|
54
|
+
#
|
55
|
+
# You can specify it manually with SimpleCov.command_name("test:units") - please
|
56
|
+
# also check out the corresponding section in README.rdoc
|
51
57
|
def command_name(name=nil)
|
52
|
-
@name
|
58
|
+
@name = name unless name.nil?
|
59
|
+
@name ||= SimpleCov::CommandGuesser.guess("#{$0} #{ARGV.join(" ")}")
|
60
|
+
@name
|
53
61
|
end
|
54
62
|
|
55
63
|
#
|
data/simplecov.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{simplecov}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Christoph Olszowka"]
|
12
|
-
s.date = %q{2010-08-
|
13
|
-
s.description = %q{Code coverage for Ruby 1.9}
|
12
|
+
s.date = %q{2010-08-25}
|
13
|
+
s.description = %q{Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites}
|
14
14
|
s.email = %q{christoph at olszowka.de}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"VERSION",
|
26
26
|
"lib/simplecov.rb",
|
27
27
|
"lib/simplecov/adapters.rb",
|
28
|
+
"lib/simplecov/command_guesser.rb",
|
28
29
|
"lib/simplecov/configuration.rb",
|
29
30
|
"lib/simplecov/filter.rb",
|
30
31
|
"lib/simplecov/formatter.rb",
|
@@ -33,7 +34,6 @@ Gem::Specification.new do |s|
|
|
33
34
|
"lib/simplecov/result.rb",
|
34
35
|
"lib/simplecov/result_merger.rb",
|
35
36
|
"lib/simplecov/source_file.rb",
|
36
|
-
"simple_cov.gemspec",
|
37
37
|
"simplecov.gemspec",
|
38
38
|
"test/fixtures/app/controllers/sample_controller.rb",
|
39
39
|
"test/fixtures/app/models/user.rb",
|
@@ -41,6 +41,7 @@ Gem::Specification.new do |s|
|
|
41
41
|
"test/fixtures/resultset2.rb",
|
42
42
|
"test/fixtures/sample.rb",
|
43
43
|
"test/helper.rb",
|
44
|
+
"test/test_command_guesser.rb",
|
44
45
|
"test/test_filters.rb",
|
45
46
|
"test/test_merge_helpers.rb",
|
46
47
|
"test/test_result.rb",
|
@@ -51,7 +52,7 @@ Gem::Specification.new do |s|
|
|
51
52
|
s.rdoc_options = ["--charset=UTF-8"]
|
52
53
|
s.require_paths = ["lib"]
|
53
54
|
s.rubygems_version = %q{1.3.7}
|
54
|
-
s.summary = %q{Code coverage for Ruby 1.9}
|
55
|
+
s.summary = %q{Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites}
|
55
56
|
s.test_files = [
|
56
57
|
"test/fixtures/app/controllers/sample_controller.rb",
|
57
58
|
"test/fixtures/app/models/user.rb",
|
@@ -59,6 +60,7 @@ Gem::Specification.new do |s|
|
|
59
60
|
"test/fixtures/resultset2.rb",
|
60
61
|
"test/fixtures/sample.rb",
|
61
62
|
"test/helper.rb",
|
63
|
+
"test/test_command_guesser.rb",
|
62
64
|
"test/test_filters.rb",
|
63
65
|
"test/test_merge_helpers.rb",
|
64
66
|
"test/test_result.rb",
|
@@ -71,11 +73,14 @@ Gem::Specification.new do |s|
|
|
71
73
|
s.specification_version = 3
|
72
74
|
|
73
75
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
76
|
+
s.add_runtime_dependency(%q<simplecov-html>, [">= 0.3.5"])
|
74
77
|
s.add_development_dependency(%q<shoulda>, ["= 2.10.3"])
|
75
78
|
else
|
79
|
+
s.add_dependency(%q<simplecov-html>, [">= 0.3.5"])
|
76
80
|
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
|
77
81
|
end
|
78
82
|
else
|
83
|
+
s.add_dependency(%q<simplecov-html>, [">= 0.3.5"])
|
79
84
|
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
|
80
85
|
end
|
81
86
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestCommandGuesser < Test::Unit::TestCase
|
4
|
+
def self.should_guess_command_name(expectation, *argv)
|
5
|
+
argv.each do |args|
|
6
|
+
should "return '#{expectation}' for '#{args}'" do
|
7
|
+
assert_equal expectation, SimpleCov::CommandGuesser.guess(args)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
should_guess_command_name "Unit Tests", '/some/path/test/units/foo_bar_test.rb', 'test/units/foo.rb', 'test/foo.rb'
|
13
|
+
should_guess_command_name "Functional Tests", '/some/path/test/functional/foo_bar_controller_test.rb'
|
14
|
+
should_guess_command_name "Integration Tests", '/some/path/test/integration/foo_bar_controller_test.rb'
|
15
|
+
should_guess_command_name "Cucumber Features", 'features', 'cucumber', 'cucumber features'
|
16
|
+
should_guess_command_name "RSpec", '/some/path/spec/foo.rb'
|
17
|
+
should_guess_command_name "some_arbitrary_command with arguments", 'some_arbitrary_command with arguments'
|
18
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 2
|
9
|
+
version: 0.3.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Christoph Olszowka
|
@@ -14,13 +14,28 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-08-
|
17
|
+
date: 2010-08-25 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: simplecov-html
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 3
|
31
|
+
- 5
|
32
|
+
version: 0.3.5
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: shoulda
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
24
39
|
none: false
|
25
40
|
requirements:
|
26
41
|
- - "="
|
@@ -31,8 +46,8 @@ dependencies:
|
|
31
46
|
- 3
|
32
47
|
version: 2.10.3
|
33
48
|
type: :development
|
34
|
-
version_requirements: *
|
35
|
-
description: Code coverage for Ruby 1.9
|
49
|
+
version_requirements: *id002
|
50
|
+
description: Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites
|
36
51
|
email: christoph at olszowka.de
|
37
52
|
executables: []
|
38
53
|
|
@@ -50,6 +65,7 @@ files:
|
|
50
65
|
- VERSION
|
51
66
|
- lib/simplecov.rb
|
52
67
|
- lib/simplecov/adapters.rb
|
68
|
+
- lib/simplecov/command_guesser.rb
|
53
69
|
- lib/simplecov/configuration.rb
|
54
70
|
- lib/simplecov/filter.rb
|
55
71
|
- lib/simplecov/formatter.rb
|
@@ -58,7 +74,6 @@ files:
|
|
58
74
|
- lib/simplecov/result.rb
|
59
75
|
- lib/simplecov/result_merger.rb
|
60
76
|
- lib/simplecov/source_file.rb
|
61
|
-
- simple_cov.gemspec
|
62
77
|
- simplecov.gemspec
|
63
78
|
- test/fixtures/app/controllers/sample_controller.rb
|
64
79
|
- test/fixtures/app/models/user.rb
|
@@ -66,6 +81,7 @@ files:
|
|
66
81
|
- test/fixtures/resultset2.rb
|
67
82
|
- test/fixtures/sample.rb
|
68
83
|
- test/helper.rb
|
84
|
+
- test/test_command_guesser.rb
|
69
85
|
- test/test_filters.rb
|
70
86
|
- test/test_merge_helpers.rb
|
71
87
|
- test/test_result.rb
|
@@ -102,7 +118,7 @@ rubyforge_project:
|
|
102
118
|
rubygems_version: 1.3.7
|
103
119
|
signing_key:
|
104
120
|
specification_version: 3
|
105
|
-
summary: Code coverage for Ruby 1.9
|
121
|
+
summary: Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites
|
106
122
|
test_files:
|
107
123
|
- test/fixtures/app/controllers/sample_controller.rb
|
108
124
|
- test/fixtures/app/models/user.rb
|
@@ -110,6 +126,7 @@ test_files:
|
|
110
126
|
- test/fixtures/resultset2.rb
|
111
127
|
- test/fixtures/sample.rb
|
112
128
|
- test/helper.rb
|
129
|
+
- test/test_command_guesser.rb
|
113
130
|
- test/test_filters.rb
|
114
131
|
- test/test_merge_helpers.rb
|
115
132
|
- test/test_result.rb
|
data/simple_cov.gemspec
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{simple_cov}
|
8
|
-
s.version = "0.2.0"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Christoph Olszowka"]
|
12
|
-
s.date = %q{2010-08-20}
|
13
|
-
s.description = %q{Makes ruby 1.9's code coverage library's results more accessible in an object-oriented manner and adds some sugar on top}
|
14
|
-
s.email = %q{christoph at olszowka.de}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.rdoc",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"lib/simple_cov.rb",
|
27
|
-
"lib/simple_cov/adapters.rb",
|
28
|
-
"lib/simple_cov/configuration.rb",
|
29
|
-
"lib/simple_cov/filter.rb",
|
30
|
-
"lib/simple_cov/formatter.rb",
|
31
|
-
"lib/simple_cov/formatter/simple_formatter.rb",
|
32
|
-
"lib/simple_cov/merge_helpers.rb",
|
33
|
-
"lib/simple_cov/result.rb",
|
34
|
-
"lib/simple_cov/result_merger.rb",
|
35
|
-
"lib/simple_cov/source_file.rb",
|
36
|
-
"simple_cov.gemspec",
|
37
|
-
"test/fixtures/app/controllers/sample_controller.rb",
|
38
|
-
"test/fixtures/app/models/user.rb",
|
39
|
-
"test/fixtures/resultset1.rb",
|
40
|
-
"test/fixtures/resultset2.rb",
|
41
|
-
"test/fixtures/sample.rb",
|
42
|
-
"test/helper.rb",
|
43
|
-
"test/test_filters.rb",
|
44
|
-
"test/test_merge_helpers.rb",
|
45
|
-
"test/test_result.rb",
|
46
|
-
"test/test_source_file.rb",
|
47
|
-
"test/test_source_file_line.rb"
|
48
|
-
]
|
49
|
-
s.homepage = %q{http://github.com/colszowka/simple_cov}
|
50
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
51
|
-
s.require_paths = ["lib"]
|
52
|
-
s.rubygems_version = %q{1.3.7}
|
53
|
-
s.summary = %q{Makes ruby 1.9's code coverage library's results more accessible in an object-oriented manner and adds some sugar on top}
|
54
|
-
s.test_files = [
|
55
|
-
"test/fixtures/app/controllers/sample_controller.rb",
|
56
|
-
"test/fixtures/app/models/user.rb",
|
57
|
-
"test/fixtures/resultset1.rb",
|
58
|
-
"test/fixtures/resultset2.rb",
|
59
|
-
"test/fixtures/sample.rb",
|
60
|
-
"test/helper.rb",
|
61
|
-
"test/test_filters.rb",
|
62
|
-
"test/test_merge_helpers.rb",
|
63
|
-
"test/test_result.rb",
|
64
|
-
"test/test_source_file.rb",
|
65
|
-
"test/test_source_file_line.rb"
|
66
|
-
]
|
67
|
-
|
68
|
-
if s.respond_to? :specification_version then
|
69
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
70
|
-
s.specification_version = 3
|
71
|
-
|
72
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
73
|
-
s.add_development_dependency(%q<shoulda>, ["= 2.10.3"])
|
74
|
-
else
|
75
|
-
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
|
76
|
-
end
|
77
|
-
else
|
78
|
-
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|