hydra 0.16.7 → 0.17.0

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.
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.