simplecov 0.3.7 → 0.3.9
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/Gemfile +1 -7
- data/Gemfile.lock +7 -10
- data/LICENSE +1 -1
- data/README.rdoc +59 -7
- data/Rakefile +15 -27
- data/lib/simplecov.rb +16 -7
- data/lib/simplecov/configuration.rb +1 -0
- data/lib/simplecov/result.rb +1 -1
- data/lib/simplecov/version.rb +3 -0
- data/simplecov.gemspec +20 -101
- data/test/helper.rb +10 -5
- data/test/shoulda_macros.rb +11 -0
- data/test/test_1_8_fallbacks.rb +33 -0
- data/test/test_command_guesser.rb +13 -11
- data/test/test_filters.rb +53 -51
- data/test/test_merge_helpers.rb +76 -74
- data/test/test_result.rb +95 -93
- data/test/test_return_codes.rb +26 -24
- data/test/test_source_file.rb +45 -43
- data/test/test_source_file_line.rb +78 -76
- metadata +15 -26
- data/VERSION +0 -1
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
simplecov (0.3.9)
|
5
|
+
simplecov-html (>= 0.3.7)
|
6
|
+
|
1
7
|
GEM
|
2
8
|
remote: http://rubygems.org/
|
3
9
|
specs:
|
4
10
|
diff-lcs (1.1.2)
|
5
|
-
gemcutter (0.6.1)
|
6
|
-
git (1.2.5)
|
7
|
-
jeweler (1.4.0)
|
8
|
-
gemcutter (>= 0.1.0)
|
9
|
-
git (>= 1.2.5)
|
10
|
-
rubyforge (>= 2.0.0)
|
11
|
-
json_pure (1.4.6)
|
12
11
|
rspec (2.0.1)
|
13
12
|
rspec-core (~> 2.0.1)
|
14
13
|
rspec-expectations (~> 2.0.1)
|
@@ -19,8 +18,6 @@ GEM
|
|
19
18
|
rspec-mocks (2.0.1)
|
20
19
|
rspec-core (~> 2.0.1)
|
21
20
|
rspec-expectations (~> 2.0.1)
|
22
|
-
rubyforge (2.0.4)
|
23
|
-
json_pure (>= 1.1.7)
|
24
21
|
shoulda (2.10.3)
|
25
22
|
simplecov-html (0.3.8)
|
26
23
|
|
@@ -28,7 +25,7 @@ PLATFORMS
|
|
28
25
|
ruby
|
29
26
|
|
30
27
|
DEPENDENCIES
|
31
|
-
jeweler (= 1.4.0)
|
32
28
|
rspec (~> 2.0.0)
|
33
29
|
shoulda (= 2.10.3)
|
30
|
+
simplecov!
|
34
31
|
simplecov-html (>= 0.3.7)
|
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,21 +1,22 @@
|
|
1
|
-
=
|
1
|
+
= SimpleCov
|
2
2
|
|
3
3
|
SimpleCov is a code coverage analysis tool for Ruby 1.9. It uses 1.9's built-in Coverage library to gather code
|
4
4
|
coverage data, but makes processing it's results much easier by providing a clean API to filter, group, merge, format
|
5
|
-
and display those results, thus giving you a complete code coverage suite with just a couple lines of
|
5
|
+
and display those results, thus giving you a complete code coverage suite that can be set up with just a couple lines of
|
6
|
+
code.
|
6
7
|
|
7
8
|
In most cases, you'll want overall coverage results for your projects, including all types of tests, cucumber features
|
8
9
|
etc. Simplecov automatically takes care of this by caching and then merging results when generating reports, so your
|
9
|
-
coverage
|
10
|
+
report actually covers coverage across your test suites and thereby gives you a better picture of blank spots.
|
10
11
|
|
11
|
-
The official formatter of SimpleCov is packaged as a separate gem called simplecov-html
|
12
|
-
when you
|
12
|
+
The official formatter of SimpleCov is packaged as a separate gem called simplecov-html but will be installed and configured
|
13
|
+
automatically when you launch SimpleCov. If you're curious, you can find it at http://github.com/colszowka/simplecov-html
|
13
14
|
|
14
15
|
== Basic usage
|
15
16
|
|
16
17
|
Update your Gemfile with this and do a bundle install:
|
17
18
|
group :test do
|
18
|
-
gem 'simplecov', '>= 0.3.
|
19
|
+
gem 'simplecov', '>= 0.3.8', :require => false # Will install simplecov-html as a dependency
|
19
20
|
end
|
20
21
|
|
21
22
|
Then, add the following to your Rails test/test_helper.rb (right at the top, line 00):
|
@@ -250,6 +251,40 @@ You can use your own formatter with:
|
|
250
251
|
When calling SimpleCov.result.format!, it will be invoked with SimpleCov::Formatter::YourFormatter.new.format(result), "result"
|
251
252
|
being an instance of SimpleCov::Result. Do whatever your wish with that!
|
252
253
|
|
254
|
+
== Using multiple formatters
|
255
|
+
|
256
|
+
There is currently no built-in support for this, but you could help yourself with a wrapper class:
|
257
|
+
|
258
|
+
class SimpleCov::Formatter::MergedFormatter
|
259
|
+
def format(result)
|
260
|
+
SimpleCov::Formatter::HTMLFormatter.new.format(result)
|
261
|
+
SimpleCov::Formatter::CSVFormatter.new.format(result)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
Then configure the formatter to use the new merger:
|
266
|
+
|
267
|
+
SimpleCov.formatter = SimpleCov::Formatter::MergedFormatter
|
268
|
+
|
269
|
+
== Available formatters
|
270
|
+
|
271
|
+
Apart from the direct companion simplecov-html (https://github.com/colszowka/simplecov-html), there are other formatters
|
272
|
+
available:
|
273
|
+
|
274
|
+
==== simplecov_rcov
|
275
|
+
by Fernando Guillen
|
276
|
+
|
277
|
+
https://github.com/fguillen/simplecov-rcov
|
278
|
+
|
279
|
+
"The target of this formatter is to cheat on Hudson so I can use the Ruby metrics plugin with SimpleCov."
|
280
|
+
|
281
|
+
==== simplecov_csv
|
282
|
+
by Fernando Guillen
|
283
|
+
|
284
|
+
https://github.com/fguillen/simplecov-csv
|
285
|
+
|
286
|
+
CSV formatter for SimpleCov code coverage tool for ruby 1.9+
|
287
|
+
|
253
288
|
== Configuration options
|
254
289
|
|
255
290
|
=== SimpleCov.root '/some/path/to/coverage'
|
@@ -270,8 +305,25 @@ Thanks to Aaron Patterson (http://engineering.attinteractive.com/2010/08/code-co
|
|
270
305
|
for this!
|
271
306
|
|
272
307
|
== TODO
|
308
|
+
|
273
309
|
* Improve on tests (integration tests)
|
274
310
|
|
311
|
+
== Developer notes
|
312
|
+
|
313
|
+
The test suite is built for execution on multiple versions of Ruby to ensure that SimpleCov keeps quiet on Ruby 1.8.
|
314
|
+
|
315
|
+
RVM is used for that, and let me tell you that you probably want to install it if you haven't yet.
|
316
|
+
|
317
|
+
To invoke the test suite on multiple rubies, install the dev bundle using
|
318
|
+
|
319
|
+
rake multitest:bundle
|
320
|
+
|
321
|
+
and then you should be ready to launch the tests:
|
322
|
+
|
323
|
+
rake multitest
|
324
|
+
|
325
|
+
The ruby versions used for testing can be found in the Rakefile.
|
326
|
+
|
275
327
|
== Note on Patches/Pull Requests
|
276
328
|
|
277
329
|
* Fork the project.
|
@@ -284,4 +336,4 @@ for this!
|
|
284
336
|
|
285
337
|
== Copyright
|
286
338
|
|
287
|
-
Copyright (c) 2010 Christoph Olszowka. See LICENSE for details.
|
339
|
+
Copyright (c) 2010-2011 Christoph Olszowka. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,25 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "simplecov"
|
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
|
-
gem.email = "christoph at olszowka de"
|
11
|
-
gem.homepage = "http://github.com/colszowka/simplecov"
|
12
|
-
gem.authors = ["Christoph Olszowka"]
|
13
|
-
gem.add_dependency 'simplecov-html', ">= 0.3.7"
|
14
|
-
gem.add_development_dependency "shoulda", "2.10.3"
|
15
|
-
gem.add_development_dependency "rspec", "~> 2.0.0"
|
16
|
-
gem.add_development_dependency "jeweler", "1.4.0"
|
17
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
18
|
-
end
|
19
|
-
Jeweler::GemcutterTasks.new
|
20
|
-
rescue LoadError
|
21
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
22
|
-
end
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
23
3
|
|
24
4
|
require 'rake/testtask'
|
25
5
|
Rake::TestTask.new(:test) do |test|
|
@@ -28,16 +8,24 @@ Rake::TestTask.new(:test) do |test|
|
|
28
8
|
test.verbose = true
|
29
9
|
end
|
30
10
|
|
31
|
-
task :test => :check_dependencies
|
32
|
-
|
33
11
|
task :default => :test
|
34
12
|
|
35
13
|
require 'rake/rdoctask'
|
36
14
|
Rake::RDocTask.new do |rdoc|
|
37
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
38
|
-
|
39
15
|
rdoc.rdoc_dir = 'rdoc'
|
40
|
-
rdoc.title = "simplecov #{version}"
|
41
16
|
rdoc.rdoc_files.include('README*')
|
42
17
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
43
18
|
end
|
19
|
+
|
20
|
+
TestedRubyVersions = %w(1.9.2 1.8.7 1.8.6)
|
21
|
+
|
22
|
+
desc "Perorms bundle install on all rvm-tested ruby versions (#{TestedRubyVersions.join(', ')})"
|
23
|
+
task :"multitest:bundle" do
|
24
|
+
system "rvm #{TestedRubyVersions.join(',')} exec bundle install"
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Runs tests using rvm for: #{TestedRubyVersions.join(', ')}"
|
28
|
+
task :multitest do
|
29
|
+
system "rvm #{TestedRubyVersions.join(',')} rake test"
|
30
|
+
end
|
31
|
+
|
data/lib/simplecov.rb
CHANGED
@@ -5,9 +5,6 @@ module SimpleCov
|
|
5
5
|
# Indicates invalid coverage data
|
6
6
|
class CoverageDataError < StandardError; end;
|
7
7
|
|
8
|
-
# The version of the simplecov gem
|
9
|
-
VERSION = File.read(File.join(File.dirname(__FILE__), '../VERSION'))
|
10
|
-
|
11
8
|
class << self
|
12
9
|
attr_accessor :running#, :result # TODO: Remove result?
|
13
10
|
|
@@ -29,10 +26,8 @@ module SimpleCov
|
|
29
26
|
# Please check out the RDoc for SimpleCov::Configuration to find about available config options
|
30
27
|
#
|
31
28
|
def start(adapter=nil, &block)
|
32
|
-
unless
|
33
|
-
|
34
|
-
return false
|
35
|
-
end
|
29
|
+
return false unless SimpleCov.usable?
|
30
|
+
|
36
31
|
require 'coverage'
|
37
32
|
load_adapter(adapter) unless adapter.nil?
|
38
33
|
Coverage.start
|
@@ -93,6 +88,17 @@ module SimpleCov
|
|
93
88
|
adapters.load(name)
|
94
89
|
end
|
95
90
|
|
91
|
+
#
|
92
|
+
# Checks whether we're on a proper version of ruby (1.9+) and returns false if this is not the case,
|
93
|
+
# also printing an appropriate warning
|
94
|
+
#
|
95
|
+
def usable?
|
96
|
+
unless "1.9".respond_to?(:encoding)
|
97
|
+
warn "WARNING: SimpleCov is activated, but you're not running Ruby 1.9+ - no coverage analysis will happen"
|
98
|
+
return false
|
99
|
+
end
|
100
|
+
true
|
101
|
+
end
|
96
102
|
end
|
97
103
|
end
|
98
104
|
|
@@ -107,6 +113,9 @@ require 'simplecov/formatter'
|
|
107
113
|
require 'simplecov/merge_helpers'
|
108
114
|
require 'simplecov/result_merger'
|
109
115
|
require 'simplecov/command_guesser'
|
116
|
+
require 'simplecov/version'
|
117
|
+
|
118
|
+
# Load formatter gem
|
110
119
|
require 'simplecov-html'
|
111
120
|
|
112
121
|
# Default configuration
|
data/lib/simplecov/result.rb
CHANGED
@@ -6,7 +6,7 @@ module SimpleCov
|
|
6
6
|
# A simplecov code coverage result, initialized from the Hash Ruby 1.9's built-in coverage
|
7
7
|
# library generates (Coverage.result).
|
8
8
|
#
|
9
|
-
class Result
|
9
|
+
class Result
|
10
10
|
# Returns the original Coverage.result used for this instance of SimpleCov::Result
|
11
11
|
attr_reader :original_result
|
12
12
|
# Returns all files that are applicable to this result (sans filters!) as instances of SimpleCov::SourceFile. Aliased as :source_files
|
data/simplecov.gemspec
CHANGED
@@ -1,106 +1,25 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "simplecov/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
6
|
+
s.name = "simplecov"
|
7
|
+
s.version = SimpleCov::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Christoph Olszowka"]
|
10
|
+
s.email = ["christoph at olszowka de"]
|
11
|
+
s.homepage = "http://github.com/colszowka/simplecov"
|
12
|
+
s.summary = %Q{Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites}
|
13
|
+
s.description = %Q{Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites}
|
9
14
|
|
10
|
-
s.
|
11
|
-
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
".gitignore",
|
22
|
-
".rvmrc",
|
23
|
-
"Gemfile",
|
24
|
-
"Gemfile.lock",
|
25
|
-
"LICENSE",
|
26
|
-
"README.rdoc",
|
27
|
-
"Rakefile",
|
28
|
-
"VERSION",
|
29
|
-
"lib/simplecov.rb",
|
30
|
-
"lib/simplecov/adapters.rb",
|
31
|
-
"lib/simplecov/command_guesser.rb",
|
32
|
-
"lib/simplecov/configuration.rb",
|
33
|
-
"lib/simplecov/filter.rb",
|
34
|
-
"lib/simplecov/formatter.rb",
|
35
|
-
"lib/simplecov/formatter/simple_formatter.rb",
|
36
|
-
"lib/simplecov/merge_helpers.rb",
|
37
|
-
"lib/simplecov/result.rb",
|
38
|
-
"lib/simplecov/result_merger.rb",
|
39
|
-
"lib/simplecov/source_file.rb",
|
40
|
-
"simplecov.gemspec",
|
41
|
-
"test/fixtures/app/controllers/sample_controller.rb",
|
42
|
-
"test/fixtures/app/models/user.rb",
|
43
|
-
"test/fixtures/frameworks/rspec_bad.rb",
|
44
|
-
"test/fixtures/frameworks/rspec_good.rb",
|
45
|
-
"test/fixtures/frameworks/testunit_bad.rb",
|
46
|
-
"test/fixtures/frameworks/testunit_good.rb",
|
47
|
-
"test/fixtures/resultset1.rb",
|
48
|
-
"test/fixtures/resultset2.rb",
|
49
|
-
"test/fixtures/sample.rb",
|
50
|
-
"test/helper.rb",
|
51
|
-
"test/test_command_guesser.rb",
|
52
|
-
"test/test_filters.rb",
|
53
|
-
"test/test_merge_helpers.rb",
|
54
|
-
"test/test_result.rb",
|
55
|
-
"test/test_return_codes.rb",
|
56
|
-
"test/test_source_file.rb",
|
57
|
-
"test/test_source_file_line.rb"
|
58
|
-
]
|
59
|
-
s.homepage = %q{http://github.com/colszowka/simplecov}
|
60
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
61
|
-
s.require_paths = ["lib"]
|
62
|
-
s.rubygems_version = %q{1.3.7}
|
63
|
-
s.summary = %q{Code coverage for Ruby 1.9 with a powerful configuration library and automatic merging of coverage across test suites}
|
64
|
-
s.test_files = [
|
65
|
-
"test/fixtures/app/controllers/sample_controller.rb",
|
66
|
-
"test/fixtures/app/models/user.rb",
|
67
|
-
"test/fixtures/frameworks/rspec_bad.rb",
|
68
|
-
"test/fixtures/frameworks/rspec_good.rb",
|
69
|
-
"test/fixtures/frameworks/testunit_bad.rb",
|
70
|
-
"test/fixtures/frameworks/testunit_good.rb",
|
71
|
-
"test/fixtures/resultset1.rb",
|
72
|
-
"test/fixtures/resultset2.rb",
|
73
|
-
"test/fixtures/sample.rb",
|
74
|
-
"test/helper.rb",
|
75
|
-
"test/test_command_guesser.rb",
|
76
|
-
"test/test_filters.rb",
|
77
|
-
"test/test_merge_helpers.rb",
|
78
|
-
"test/test_result.rb",
|
79
|
-
"test/test_return_codes.rb",
|
80
|
-
"test/test_source_file.rb",
|
81
|
-
"test/test_source_file_line.rb"
|
82
|
-
]
|
83
|
-
|
84
|
-
if s.respond_to? :specification_version then
|
85
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
86
|
-
s.specification_version = 3
|
87
|
-
|
88
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
89
|
-
s.add_runtime_dependency(%q<simplecov-html>, [">= 0.3.7"])
|
90
|
-
s.add_development_dependency(%q<shoulda>, ["= 2.10.3"])
|
91
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.0.0"])
|
92
|
-
s.add_development_dependency(%q<jeweler>, ["= 1.4.0"])
|
93
|
-
else
|
94
|
-
s.add_dependency(%q<simplecov-html>, [">= 0.3.7"])
|
95
|
-
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
|
96
|
-
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
97
|
-
s.add_dependency(%q<jeweler>, ["= 1.4.0"])
|
98
|
-
end
|
99
|
-
else
|
100
|
-
s.add_dependency(%q<simplecov-html>, [">= 0.3.7"])
|
101
|
-
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
|
102
|
-
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
103
|
-
s.add_dependency(%q<jeweler>, ["= 1.4.0"])
|
104
|
-
end
|
105
|
-
end
|
15
|
+
s.rubyforge_project = "simplecov"
|
16
|
+
|
17
|
+
s.add_dependency 'simplecov-html', ">= 0.3.7"
|
18
|
+
s.add_development_dependency "shoulda", "2.10.3"
|
19
|
+
s.add_development_dependency "rspec", "~> 2.0.0"
|
106
20
|
|
21
|
+
s.files = `git ls-files`.split("\n")
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
24
|
+
s.require_paths = ["lib"]
|
25
|
+
end
|
data/test/helper.rb
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'simplecov'
|
4
|
+
|
4
5
|
require 'test/unit'
|
5
6
|
require 'shoulda'
|
6
7
|
|
7
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
8
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
9
|
-
require 'simplecov'
|
10
8
|
SimpleCov.coverage_dir('tmp/coverage')
|
11
9
|
|
12
10
|
class Test::Unit::TestCase
|
13
11
|
def source_fixture(filename)
|
14
12
|
File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', filename))
|
15
13
|
end
|
14
|
+
|
15
|
+
# Keep 1.8-rubies from complaining about missing tests in each file that covers only 1.9 functionality
|
16
|
+
def default_test
|
17
|
+
end
|
16
18
|
end
|
19
|
+
|
20
|
+
require 'shoulda_macros'
|
21
|
+
Test::Unit::TestCase.send :extend, ShouldaMacros
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module ShouldaMacros
|
2
|
+
#
|
3
|
+
# Simple block helper for running certain tests only on specific ruby versions.
|
4
|
+
# The given strings will be regexp-matched against RUBY_VERSION
|
5
|
+
#
|
6
|
+
def on_ruby(*ruby_versions)
|
7
|
+
context "On Ruby #{RUBY_VERSION}" do
|
8
|
+
yield
|
9
|
+
end if ruby_versions.any? {|v| RUBY_VERSION =~ /#{v}/ }
|
10
|
+
end
|
11
|
+
end
|