rcov_stats 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGELOG +5 -0
  2. data/README +8 -1
  3. data/lib/rcov_stats.rb +56 -68
  4. metadata +5 -5
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 2.2.0 (September 2010)
2
+ fixed root paths
3
+ added rspec2 support
4
+ added support of no bundler
5
+ some code improvements
1
6
  2.1.1 (September 2010)
2
7
  missing require
3
8
  2.1.0 (September 2010)
data/README CHANGED
@@ -6,13 +6,20 @@ RcovStats provides rcov extension, so you can select test files and test covered
6
6
  How to install :
7
7
 
8
8
  ** for Merb:
9
- gem install rcov_stats #from gemcutter
9
+ gem install rcov_stats
10
10
  ## puts this dependency inside your config/init.rb file ##
11
11
  dependency "rcov_stats"
12
12
  ** for Rails
13
13
  ## puts this into Gemfile file ##
14
14
  gem "rcov_stats"
15
15
 
16
+ ## puts also this code to RakeFile (for Rails3 before Application.load_tasks)
17
+
18
+ begin
19
+ require 'rcov_stats_tasks'
20
+ rescue LoadError; end
21
+
22
+
16
23
 
17
24
  How to configure
18
25
 
data/lib/rcov_stats.rb CHANGED
@@ -1,21 +1,7 @@
1
1
  require "fileutils"
2
2
  require "erb"
3
3
  require "hpricot"
4
-
5
- class RcovStatsForErb
6
-
7
- def initialize( options )
8
- options.each_pair do |key, value|
9
- instance_variable_set(:"@#{key}",value)
10
- end
11
- end
12
-
13
- def get_binding
14
- binding
15
- end
16
-
17
- end
18
-
4
+ require 'rcov_stats_related/erb_binding'
19
5
 
20
6
  class RcovStats
21
7
 
@@ -26,25 +12,31 @@ class RcovStats
26
12
  self.send("#{name}=", value) if value
27
13
  end
28
14
 
29
- cattr_accessor_with_default :is_rails, Object.const_defined?('Rails')
30
- cattr_accessor_with_default :is_merb, Object.const_defined?('Merb')
31
- cattr_accessor_with_default :root, ((@@is_rails && Rails.root) or (@@is_merb && Merb.root) or nil)
15
+ cattr_accessor_with_default :is_rails, defined?(Rails)
16
+ cattr_accessor_with_default :is_merb, defined?(Merb)
17
+
18
+ def self.root
19
+ "."
20
+ end
21
+
22
+ raise "Rcov Stats could not detect Rails or Merb framework" unless root
23
+
32
24
  cattr_accessor_with_default :rcov_stats_dir, File.dirname(__FILE__)
33
- cattr_accessor_with_default :rcov_stats_config_file, File.join(@@root, 'config', 'rcov_stats.yml')
34
- cattr_accessor_with_default :use_rspec, File.exists?(File.join(@@root, 'spec'))
35
- cattr_accessor_with_default :test_name, @@use_rspec ? "spec" : "test"
36
- cattr_accessor_with_default :test_file_indicator, "*_#{@@test_name}.rb"
25
+ cattr_accessor_with_default :rcov_stats_config_file, File.join(root, 'config', 'rcov_stats.yml')
26
+
37
27
  cattr_accessor_with_default :cover_file_indicator, "*.rb"
38
28
 
39
29
  attr_accessor :name, :sections
40
30
 
31
+
32
+
41
33
  def initialize(name_, sections_ = nil)
42
34
  self.name = name_
43
35
  self.sections = sections_.blank? ? [name_] : sections_
44
36
  end
45
37
 
46
38
  def self.get_config(option)
47
- YAML::load(File.open(File.join(@@root, 'config', 'rcov_stats.yml')))[option]
39
+ YAML::load(File.open(File.join(root, 'config', 'rcov_stats.yml')))[option]
48
40
  end
49
41
 
50
42
  def self.before_rcov
@@ -68,7 +60,7 @@ class RcovStats
68
60
  def parse_file_to_test(list)
69
61
  result = []
70
62
  list.each do |f|
71
- file_list = File.directory?(File.join(@@root, @@test_name, f)) ? File.join(@@test_name, f, "**", @@test_file_indicator) : File.join(@@test_name, f)
63
+ file_list = File.directory?(File.join(self.class.root, test_name, f)) ? File.join(test_name, f, "**", test_file_indicator) : File.join(test_name, f)
72
64
  unless (list_of_read_files = Dir[file_list]).empty?
73
65
  result += list_of_read_files
74
66
  end
@@ -79,7 +71,7 @@ class RcovStats
79
71
  def parse_file_to_cover(list)
80
72
  result = []
81
73
  list.each do |f|
82
- file_list = File.directory?(File.join(@@root, f)) ? File.join(f, "**", @@cover_file_indicator) : File.join(f)
74
+ file_list = File.directory?(File.join(self.class.root, f)) ? File.join(f, "**", self.class.cover_file_indicator) : File.join(f)
83
75
  unless (list_of_read_files = Dir[file_list]).empty?
84
76
  result += list_of_read_files
85
77
  end
@@ -87,46 +79,19 @@ class RcovStats
87
79
  result.uniq
88
80
  end
89
81
 
90
- def invoke_rcov_task
91
- require 'rake/win32'
92
- files_to_cover_parsed = parse_file_to_cover(files_to_cover).map { |f| "(#{f})".gsub("/", "\/") }.join("|")
93
- rcov_settings = "--sort coverage --text-summary -x \"^(?!(#{files_to_cover_parsed}))\" "
94
- rcov_settings +="--output=#{File.join(@@root, "coverage", @name)} "
95
- rcov_tests = parse_file_to_test(files_to_test)
96
- return false if rcov_tests.empty?
97
- rcov_settings += rcov_tests.join(' ')
98
- cmd = "bundle exec rcov #{rcov_settings}"
99
- Rake::Win32.windows? ? Rake::Win32.rake_system(cmd) : system(cmd)
100
- end
101
-
102
- def invoke_rcov_spec_task
103
- require 'spec/rake/spectask'
104
- rcov_tests = parse_file_to_test(files_to_test)
105
- return false if rcov_tests.empty?
106
- Spec::Rake::SpecTask.new(@name) do |t|
107
- spec_opts = File.join(@@root, @@test_name, 'spec.opts')
108
- t.spec_opts = ['--options', "\"#{spec_opts}\""] if File.exists?(spec_opts)
109
- t.spec_files = rcov_tests
110
- t.rcov = true
111
- t.rcov_dir = File.join(@@root, "coverage", @name)
112
- files_to_cover_parsed = parse_file_to_cover(files_to_cover).map { |f| "(#{f})".gsub("/", "\/") }.join("|")
113
- t.rcov_opts = ["--text-summary", "--sort", "coverage", "-x", "\"^(?!(#{files_to_cover_parsed}))\""]
114
- end
115
- end
116
-
117
- def invoke
118
- @@use_rspec ? invoke_rcov_spec_task : invoke_rcov_task
82
+ def test_file_indicator
83
+ "*_#{test_name}.rb"
119
84
  end
120
85
 
121
86
  def generate_index
122
- Dir[File.join(@@rcov_stats_dir, '..', 'templates/*')].each do |i|
123
- FileUtils.cp(i, File.join(@@root, 'coverage', i.split("/").last))
87
+ Dir[File.join(self.class.rcov_stats_dir, '..', 'templates/*')].each do |i|
88
+ FileUtils.mkdir_p File.join(self.class.root, 'coverage')
89
+ FileUtils.cp(i, File.join(self.class.root, 'coverage', i.split("/").last))
124
90
  end
125
91
 
126
-
127
-
128
92
  @sections.each do |i|
129
- coverage_index = File.join(@@root, 'coverage', i, "index.html")
93
+ FileUtils.mkdir_p File.join(self.class.root, 'coverage', i)
94
+ coverage_index = File.join(self.class.root, 'coverage', i, "index.html")
130
95
  next unless File.exists?(coverage_index)
131
96
  doc = open(coverage_index) { |f| Hpricot(f) }
132
97
  footer_tts = doc.search("//tfoot/tr/td//tt")
@@ -145,23 +110,46 @@ class RcovStats
145
110
  template_object["generated_on"] = "Generated on #{Time.now}"
146
111
 
147
112
 
148
- template_source = ERB.new(IO.read(File.join(@@root, 'coverage', "index.html")))
113
+ template_source = ERB.new(IO.read(File.join(self.class.root, 'coverage', "index.html")))
149
114
 
150
- File.open(File.join(@@root, 'coverage', "index.html"), "w+") do |f|
151
- f.write( template_source.result(RcovStatsForErb.new(template_object).get_binding))
115
+ File.open(File.join(self.class.root, 'coverage', "index.html"), "w+") do |f|
116
+ f.write( template_source.result(RcovStatsRelated::ErbBinding.new(template_object).get_binding))
152
117
  end
153
118
  end
154
119
  end
155
120
 
121
+ def bundler?
122
+ File.exist?("./Gemfile")
123
+ end
124
+
156
125
  def self.setup
157
- if @@is_merb
158
- Merb::Plugins.add_rakefiles(File.join(@@rcov_stats_dir, "rcov_stats_tasks"))
126
+ if is_merb
127
+ Merb::Plugins.add_rakefiles(File.join(rcov_stats_dir, "rcov_stats_tasks"))
159
128
  end
160
- unless File.exists?(@@rcov_stats_config_file)
161
- which_conf_use = (@@use_rspec ? 'rcov_rspec' : 'rcov_standard') + '.yml'
162
- FileUtils.cp(File.join(@@rcov_stats_dir, '..', 'config', which_conf_use), @@rcov_stats_config_file)
129
+
130
+ if defined?(RSpec)
131
+ require 'rcov_stats_related/integrations/rspec2'
132
+ include RcovStatsRelated::Integrations::Rspec2
133
+ which_conf_use = 'rcov_rspec'
134
+ elsif defined?(Spec)
135
+ require 'rcov_stats_related/integrations/rspec'
136
+ include RcovStatsRelated::Integrations::Rspec
137
+ which_conf_use = 'rcov_rspec'
138
+ else
139
+ require 'rcov_stats_related/integrations/test_unit'
140
+ include RcovStatsRelated::Integrations::TestUnit
141
+ which_conf_use = 'rcov_standard'
142
+ end
143
+
144
+
145
+ unless File.exists?(rcov_stats_config_file)
146
+ which_conf_use += '.yml'
147
+ FileUtils.cp(File.join(rcov_stats_dir, '..', 'config', which_conf_use), rcov_stats_config_file)
163
148
  end
164
149
  end
165
150
  end
166
151
 
167
- RcovStats.setup
152
+
153
+ RcovStats.setup
154
+
155
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rcov_stats
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
- - 1
9
- - 1
10
- version: 2.1.1
8
+ - 2
9
+ - 0
10
+ version: 2.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bartosz Knapik
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-14 00:00:00 +02:00
18
+ date: 2010-09-15 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency