hydra 0.13.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +30 -0
- data/VERSION +1 -1
- data/hydra-icon-64x64.png +0 -0
- data/hydra.gemspec +4 -1
- data/lib/hydra.rb +2 -1
- data/lib/hydra/listener/notifier.rb +17 -0
- data/lib/hydra/listener/progress_bar.rb +48 -0
- data/lib/hydra/master.rb +5 -0
- data/lib/hydra/tasks.rb +7 -5
- metadata +4 -1
data/README.rdoc
CHANGED
@@ -132,6 +132,36 @@ Use ssh_opts to set the port or compression options.
|
|
132
132
|
The *directory* option is the path for the project directory
|
133
133
|
where the tests should be run.
|
134
134
|
|
135
|
+
=== Using Hydra::Listeners
|
136
|
+
|
137
|
+
Hydra comes with a couple of listeners for the events it fires. By
|
138
|
+
default, Hydra::Listener::MinimalOutput is used to display the
|
139
|
+
files being tests and the ./F/E for each file and F/E output.
|
140
|
+
|
141
|
+
It also uses Hydra::Listener::ReportGenerator to generate reports
|
142
|
+
of the test files to that it can order them by their run times.
|
143
|
+
|
144
|
+
To use another listener, just add a listeners node to the config file.
|
145
|
+
For example, if you are on Ubuntu Linux (or have access to the
|
146
|
+
notify-send command) you can add a notifier listener like this:
|
147
|
+
|
148
|
+
listeners:
|
149
|
+
- Hydra::Listener::Notifier.new
|
150
|
+
|
151
|
+
Note that if you make a listener node, the default listeners will be
|
152
|
+
overridden, so you will no longer have the standard minimal output
|
153
|
+
unless you do:
|
154
|
+
|
155
|
+
listeners:
|
156
|
+
- Hydra::Listener::Notifier.new
|
157
|
+
- Hydra::Listener::MinimalOutput.new
|
158
|
+
|
159
|
+
Listeners take one argument to their contstructor: an IO object. So,
|
160
|
+
you can easily output Hydra to a variety of log files. For example:
|
161
|
+
|
162
|
+
listeners:
|
163
|
+
- Hydra::Listener::ReportGenerator.new(File.new('/home/ngauthier/Desktop/hydra_log.yml', 'w'))
|
164
|
+
|
135
165
|
== More Information
|
136
166
|
|
137
167
|
For more information on Hydra, check out the rdocs:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.14.0
|
Binary file
|
data/hydra.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{hydra}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.14.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"]
|
@@ -26,12 +26,15 @@ Gem::Specification.new do |s|
|
|
26
26
|
"TODO",
|
27
27
|
"VERSION",
|
28
28
|
"caliper.yml",
|
29
|
+
"hydra-icon-64x64.png",
|
29
30
|
"hydra.gemspec",
|
30
31
|
"hydra_gray.png",
|
31
32
|
"lib/hydra.rb",
|
32
33
|
"lib/hydra/hash.rb",
|
33
34
|
"lib/hydra/listener/abstract.rb",
|
34
35
|
"lib/hydra/listener/minimal_output.rb",
|
36
|
+
"lib/hydra/listener/notifier.rb",
|
37
|
+
"lib/hydra/listener/progress_bar.rb",
|
35
38
|
"lib/hydra/listener/report_generator.rb",
|
36
39
|
"lib/hydra/master.rb",
|
37
40
|
"lib/hydra/message.rb",
|
data/lib/hydra.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Hydra #:nodoc:
|
2
|
+
module Listener #:nodoc:
|
3
|
+
# Sends a command to Notifier when the testing has finished
|
4
|
+
# http://manpages.ubuntu.com/manpages/gutsy/man1/notify-send.1.html
|
5
|
+
class Notifier < Hydra::Listener::Abstract
|
6
|
+
# output a finished notification
|
7
|
+
def testing_end
|
8
|
+
icon_path = File.join(
|
9
|
+
File.dirname(__FILE__), '..', '..', '..',
|
10
|
+
'hydra-icon-64x64.png'
|
11
|
+
)
|
12
|
+
`notify-send -i #{icon_path} "Hydra" "Testing Completed"`
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Hydra #:nodoc:
|
2
|
+
module Listener #:nodoc:
|
3
|
+
# Output a progress bar as files are completed
|
4
|
+
class ProgressBar < Hydra::Listener::Abstract
|
5
|
+
# Store the total number of files
|
6
|
+
def testing_begin(files)
|
7
|
+
@total_files = files.size
|
8
|
+
@files_completed = 0
|
9
|
+
@test_output = ""
|
10
|
+
@errors = false
|
11
|
+
render_progress_bar
|
12
|
+
end
|
13
|
+
|
14
|
+
# Increment completed files count and update bar
|
15
|
+
def file_end(file, output)
|
16
|
+
unless output == '.'
|
17
|
+
@output.write "\r#{' '*60}\r#{output}\n"
|
18
|
+
@errors = true
|
19
|
+
end
|
20
|
+
@files_completed += 1
|
21
|
+
render_progress_bar
|
22
|
+
end
|
23
|
+
|
24
|
+
# Break the line
|
25
|
+
def testing_end
|
26
|
+
render_progress_bar
|
27
|
+
@output.write "\n"
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def render_progress_bar
|
33
|
+
width = 30
|
34
|
+
complete = ((@files_completed.to_f / @total_files.to_f) * width).to_i
|
35
|
+
@output.write "\r" # move to beginning
|
36
|
+
@output.write 'Progress ['
|
37
|
+
@output.write @errors ? "\033[1;31m" : "\033[1;32m"
|
38
|
+
complete.times{@output.write '#'}
|
39
|
+
@output.write '>'
|
40
|
+
(width-complete).times{@output.write ' '}
|
41
|
+
@output.write "\033[0m"
|
42
|
+
@output.write "] #{@files_completed}/#{@total_files}"
|
43
|
+
@output.flush
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
data/lib/hydra/master.rb
CHANGED
@@ -38,6 +38,11 @@ module Hydra #:nodoc:
|
|
38
38
|
@workers = []
|
39
39
|
@listeners = []
|
40
40
|
@event_listeners = Array(opts.fetch('listeners') { nil } )
|
41
|
+
@event_listeners.select{|l| l.is_a? String}.each do |l|
|
42
|
+
@event_listeners.delete_at(@event_listeners.index(l))
|
43
|
+
listener = eval(l)
|
44
|
+
@event_listeners << listener if listener.is_a?(Hydra::Listener::Abstract)
|
45
|
+
end
|
41
46
|
@verbose = opts.fetch('verbose') { false }
|
42
47
|
@autosort = opts.fetch('autosort') { true }
|
43
48
|
@sync = opts.fetch('sync') { nil }
|
data/lib/hydra/tasks.rb
CHANGED
@@ -19,16 +19,18 @@ module Hydra #:nodoc:
|
|
19
19
|
# If not set, it will check 'hydra.yml' and 'config/hydra.yml'
|
20
20
|
attr_accessor :config
|
21
21
|
|
22
|
-
# Set to true if you want hydra to generate a report.
|
23
|
-
# Defaults to false
|
24
|
-
attr_accessor :report
|
25
|
-
|
26
22
|
# Automatically sort files using their historical runtimes.
|
27
23
|
# Defaults to true
|
28
24
|
# To disable:
|
29
25
|
# t.autosort = false
|
30
26
|
attr_accessor :autosort
|
31
27
|
|
28
|
+
# Event listeners. Defaults to the MinimalOutput listener.
|
29
|
+
# You can add additional listeners if you'd like. For example,
|
30
|
+
# on linux (with notify-send) you can add the notifier listener:
|
31
|
+
# t.listeners << Hydra::Listener::Notifier.new
|
32
|
+
attr_accessor :listeners
|
33
|
+
|
32
34
|
#
|
33
35
|
# Search for the hydra config file
|
34
36
|
def find_config_file
|
@@ -66,7 +68,7 @@ module Hydra #:nodoc:
|
|
66
68
|
@files = []
|
67
69
|
@verbose = false
|
68
70
|
@autosort = true
|
69
|
-
@listeners = [Hydra::Listener::
|
71
|
+
@listeners = [Hydra::Listener::ProgressBar.new]
|
70
72
|
|
71
73
|
yield self if block_given?
|
72
74
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Gauthier
|
@@ -41,12 +41,15 @@ files:
|
|
41
41
|
- TODO
|
42
42
|
- VERSION
|
43
43
|
- caliper.yml
|
44
|
+
- hydra-icon-64x64.png
|
44
45
|
- hydra.gemspec
|
45
46
|
- hydra_gray.png
|
46
47
|
- lib/hydra.rb
|
47
48
|
- lib/hydra/hash.rb
|
48
49
|
- lib/hydra/listener/abstract.rb
|
49
50
|
- lib/hydra/listener/minimal_output.rb
|
51
|
+
- lib/hydra/listener/notifier.rb
|
52
|
+
- lib/hydra/listener/progress_bar.rb
|
50
53
|
- lib/hydra/listener/report_generator.rb
|
51
54
|
- lib/hydra/master.rb
|
52
55
|
- lib/hydra/message.rb
|