hydra 0.16.7 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/Rakefile +1 -1
  2. data/VERSION +1 -1
  3. data/hydra.gemspec +5 -5
  4. data/lib/hydra/tasks.rb +75 -1
  5. metadata +7 -7
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ begin
12
12
  gem.authors = ["Nick Gauthier"]
13
13
  gem.add_development_dependency "shoulda", "= 2.10.3"
14
14
  gem.add_development_dependency "rspec", "= 1.3.0"
15
- gem.add_development_dependency "cucumber", "= 0.6.4"
15
+ gem.add_development_dependency "cucumber", "= 0.7.2"
16
16
  end
17
17
  Jeweler::GemcutterTasks.new
18
18
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.16.7
1
+ 0.17.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{hydra}
8
- s.version = "0.16.7"
8
+ s.version = "0.17.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Nick Gauthier"]
12
- s.date = %q{2010-04-28}
12
+ s.date = %q{2010-05-10}
13
13
  s.description = %q{Spread your tests over multiple machines to test your code faster.}
14
14
  s.email = %q{nick@smartlogicsolutions.com}
15
15
  s.extra_rdoc_files = [
@@ -104,16 +104,16 @@ Gem::Specification.new do |s|
104
104
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
105
105
  s.add_development_dependency(%q<shoulda>, ["= 2.10.3"])
106
106
  s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
107
- s.add_development_dependency(%q<cucumber>, ["= 0.6.4"])
107
+ s.add_development_dependency(%q<cucumber>, ["= 0.7.2"])
108
108
  else
109
109
  s.add_dependency(%q<shoulda>, ["= 2.10.3"])
110
110
  s.add_dependency(%q<rspec>, ["= 1.3.0"])
111
- s.add_dependency(%q<cucumber>, ["= 0.6.4"])
111
+ s.add_dependency(%q<cucumber>, ["= 0.7.2"])
112
112
  end
113
113
  else
114
114
  s.add_dependency(%q<shoulda>, ["= 2.10.3"])
115
115
  s.add_dependency(%q<rspec>, ["= 1.3.0"])
116
- s.add_dependency(%q<cucumber>, ["= 0.6.4"])
116
+ s.add_dependency(%q<cucumber>, ["= 0.7.2"])
117
117
  end
118
118
  end
119
119
 
@@ -98,7 +98,81 @@ module Hydra #:nodoc:
98
98
  desc "Hydra Tests" + (@name == :hydra ? "" : " for #{@name}")
99
99
  task @name do
100
100
  Hydra::Master.new(@opts)
101
- #exit(0) #bypass test on_exit output
101
+ end
102
+ end
103
+ end
104
+
105
+ # Define a test task that uses hydra to profile your test files
106
+ #
107
+ # Hydra::ProfileTask.new('hydra:prof') do |t|
108
+ # t.add_files 'test/unit/**/*_test.rb'
109
+ # t.add_files 'test/functional/**/*_test.rb'
110
+ # t.add_files 'test/integration/**/*_test.rb'
111
+ # t.generate_html = true # defaults to false
112
+ # t.generate_text = true # defaults to true
113
+ # end
114
+ class ProfileTask < Hydra::Task
115
+ # boolean: generate html output from ruby-prof
116
+ attr_accessor :generate_html
117
+ # boolean: generate text output from ruby-prof
118
+ attr_accessor :generate_text
119
+
120
+ # Create a new Hydra ProfileTask
121
+ def initialize(name = 'hydra:profile')
122
+ @name = name
123
+ @files = []
124
+ @verbose = false
125
+ @generate_html = false
126
+ @generate_text = true
127
+
128
+ yield self if block_given?
129
+
130
+ # Ensure we override rspec's at_exit
131
+ require 'hydra/spec/autorun_override'
132
+
133
+ @config = find_config_file
134
+
135
+ @opts = {
136
+ :verbose => @verbose,
137
+ :files => @files
138
+ }
139
+ define
140
+ end
141
+
142
+ private
143
+ # Create the rake task defined by this HydraTestTask
144
+ def define
145
+ desc "Hydra Test Profile" + (@name == :hydra ? "" : " for #{@name}")
146
+ task @name do
147
+ require 'ruby-prof'
148
+ RubyProf.start
149
+
150
+ runner = Hydra::Runner.new(:io => File.new('/dev/null', 'w'))
151
+ @files.each do |file|
152
+ $stdout.write runner.run_file(file)
153
+ $stdout.flush
154
+ end
155
+
156
+ $stdout.write "\nTests complete. Generating profiling output\n"
157
+ $stdout.flush
158
+
159
+ result = RubyProf.stop
160
+
161
+ if @generate_html
162
+ printer = RubyProf::GraphHtmlPrinter.new(result)
163
+ out = File.new("ruby-prof.html", 'w')
164
+ printer.print(out, :min_self => 0.05)
165
+ out.close
166
+ $stdout.write "Profiling data written to [ruby-prof.html]\n"
167
+ end
168
+
169
+ if @generate_text
170
+ printer = RubyProf::FlatPrinter.new(result)
171
+ out = File.new("ruby-prof.txt", 'w')
172
+ printer.print(out, :min_self => 0.05)
173
+ out.close
174
+ $stdout.write "Profiling data written to [ruby-prof.txt]\n"
175
+ end
102
176
  end
103
177
  end
104
178
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 16
8
- - 7
9
- version: 0.16.7
7
+ - 17
8
+ - 0
9
+ version: 0.17.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Nick Gauthier
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-28 00:00:00 -04:00
17
+ date: 2010-05-10 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -54,9 +54,9 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  segments:
56
56
  - 0
57
- - 6
58
- - 4
59
- version: 0.6.4
57
+ - 7
58
+ - 2
59
+ version: 0.7.2
60
60
  type: :development
61
61
  version_requirements: *id003
62
62
  description: Spread your tests over multiple machines to test your code faster.