rkh-autotest-growl 0.1.5.1

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/History.txt ADDED
@@ -0,0 +1,41 @@
1
+ == edge
2
+
3
+ * 1 minor improvement
4
+ * Reset the postinstall text color to previous (Konstantin Haase)
5
+
6
+ == 0.1.5 2009-07-27
7
+
8
+ * 1 major improvement
9
+ * More reliable growlnotify call
10
+
11
+ == 0.1.4 2009-07-23
12
+
13
+ * 1 major improvement
14
+ * Support for Windows (Karl O'Keeffe)
15
+
16
+ == 0.1.3 2009-07-22
17
+
18
+ * 1 major improvement
19
+ * Better result analysis and more readable notifications
20
+ * 3 minor improvement
21
+ * Move Cucumber notification to :ran_features hook (Karl O'Keeffe)
22
+ * Add one_notification_per_run configuration option
23
+ * Notification for undefined Cucumber scenarios/steps
24
+
25
+ == 0.1.2 2009-06-12
26
+
27
+ * 3 major improvements
28
+ * Add priorities to notifications (Michael Moen)
29
+ * Add clear_terminal configuration option (Michael Moen)
30
+ * Add show_modified_files configuration option (Graham Savage)
31
+
32
+ == 0.1.1 2009-06-02
33
+
34
+ * 1 major improvement
35
+ * Suppress Cucumber notification if not used
36
+
37
+ == 0.1.0 2009-05-28
38
+
39
+ * Initial release
40
+ * Growl notifications for Test::Unit, RSpec and Cucumber (workaround)
41
+ * Formerly part of autotest-mac which is now deprecated
data/Manifest.txt ADDED
@@ -0,0 +1,23 @@
1
+ History.txt
2
+ Manifest.txt
3
+ PostInstall.txt
4
+ README.rdoc
5
+ Rakefile
6
+ autotest-growl.gemspec
7
+ growl/growlnotify
8
+ growl/growlnotify.com
9
+ img/error.png
10
+ img/failed.png
11
+ img/info.png
12
+ img/passed.png
13
+ img/pending.png
14
+ lib/autotest-growl.rb
15
+ lib/autotest/growl.rb
16
+ lib/autotest/result.rb
17
+ script/console
18
+ script/destroy
19
+ script/generate
20
+ spec/autotest-growl_spec.rb
21
+ spec/spec.opts
22
+ spec/spec_helper.rb
23
+ tasks/rspec.rake
data/PostInstall.txt ADDED
@@ -0,0 +1,16 @@
1
+ In order to use autotest-growl, the following line has to be added to your
2
+ ~/.autotest file:
3
+
4
+ require 'autotest/growl'
5
+
6
+ Make sure Growl is installed on your computer. Download it from:
7
+
8
+ http://growl.info (Mac OS X)
9
+ http://growlforwindows.com (Windows)
10
+
11
+ If Growl notifications are not always displayed, take a look at the README
12
+ for assistance.
13
+
14
+ For more information, feedback and bug submissions, please visit:
15
+
16
+ http://www.bitcetera.com/products/autotest-growl
data/README.rdoc ADDED
@@ -0,0 +1,180 @@
1
+ = Autotest Growl
2
+
3
+ * Author: Sven Schwyn (http://www.bitcetera.com)
4
+ * Homepage: http://www.bitcetera.com/products/autotest-growl
5
+ * Issues and forum: https://forge.bitcetera.com/projects/show/autotest-growl
6
+
7
+ == DESCRIPTION:
8
+
9
+ This gem aims to improve support for Growl notification by ZenTest's autotest.
10
+ It comes with a nice colored Ruby icon set and - for now - supports Cucumber
11
+ notifications by means of a workaround.
12
+
13
+ The priority of a notification is set according to the actual result so you
14
+ can configure Growl to style the notifications differently based on these
15
+ priorities:
16
+
17
+ * 2 for error or failed
18
+ * 0 for info
19
+ * -1 for pending, undefined or unknown
20
+ * -2 for passed
21
+
22
+ Furthermore the terminal running autotest is cleared on every cycle (unless
23
+ configured otherwise). Don't worry though, it's still possible to scroll up
24
+ to see the output of previous cycles - at least on the Terminal.app from
25
+ Apple.
26
+
27
+ === Ruby 1.9.1 Note
28
+
29
+ For the moment, autotest growl doesn't seem to work on Ruby 1.9.1. Fixing this
30
+ might take a while though as autotest itself is currently misbehaving on Ruby
31
+ 1.9 - at least on my setup.
32
+
33
+ == REQUIREMENTS:
34
+
35
+ * Growl >= 1.1.5 (Mac OS X) or >= 2.0b18 (Windows)
36
+ * ZenTest >= 4.1.3
37
+
38
+ == INSTALL:
39
+
40
+ First install the gem:
41
+
42
+ sudo gem install autotest-growl
43
+
44
+ Then add the following line to your ~/.autotest file:
45
+
46
+ require 'autotest/growl'
47
+
48
+ Make sure Growl is installed on your computer. You can download it from:
49
+
50
+ Mac OS X: http://growl.info
51
+ Windows: http://growlforwindows.com
52
+
53
+ == CONFIGURATION:
54
+
55
+ === Custom Icons
56
+
57
+ Using your own set of icons is pretty simple. Just create a directory
58
+ ~/.autotest-growl, copy your icons there and name them passed.png,
59
+ pending.png, failed.png, error.png and info.png.
60
+
61
+ === Don't Clear the Terminal
62
+
63
+ Add the following to your ~/.autotest if you don't want the terminal to
64
+ be cleared before running a test:
65
+
66
+ Autotest::Growl::clear_terminal = false
67
+
68
+ === Hide the Label
69
+
70
+ If you prefer the Growl notifications not to show labels such as "LABEL:
71
+ All tests have passed", add the following to your ~/.autotest:
72
+
73
+ Autotest::Growl::hide_label = true
74
+
75
+ === One Notifications per Run
76
+
77
+ Allow only one test and one feature notification per run by adding the
78
+ following to your ~/.autotest:
79
+
80
+ Autotest::Growl::one_notification_per_run = true
81
+
82
+ === Show Modified Files
83
+
84
+ Add the following to your ~/.autotest if you would like to receive a Growl
85
+ notification listing the files modified before tests are re-run.
86
+
87
+ Autotest::Growl::show_modified_files = true
88
+
89
+ == TROUBLESHOOTING:
90
+
91
+ === Loading the Plugin Seems to Fail
92
+
93
+ Most likely you still have an old version of ZenTest <= 4.0.0 installed,
94
+ check it with:
95
+
96
+ gem list ZenTest
97
+
98
+ To uninstall a specific version (e.g. 4.0.0), type:
99
+
100
+ sudo gem uninstall ZenTest --version=4.0.0
101
+
102
+ Or remove all outdated versions of all installed gems:
103
+
104
+ sudo gem cleanup
105
+
106
+ === Unreliable Growl Notifications on Mac OS X
107
+
108
+ Under some circumstances, Growl notifications seem to be swallowed randomly
109
+ on Mac OS X. If this happens to you, try the following.
110
+
111
+ Add this to your ~/.autotest:
112
+
113
+ Autotest::Growl::remote_notification = true
114
+
115
+ Now open "System Preferences -> Growl -> Network" and set the checkboxes
116
+ "Listen for incoming notifications" and "Allow remote application
117
+ registration”. Try whether remote notifications work with the following
118
+ test:
119
+
120
+ find /Library/Ruby /usr -name growlnotify -exec {} -H localhost -n autotest -m ok \;
121
+
122
+ If you get a NSPortTimeoutException, you should restart Growl and check
123
+ whether a firewall is blocking the connection. Once the notification is
124
+ displayed, go back to the System Preferences and disable the checkbox
125
+ "Allow remote application registration" again.
126
+
127
+ == DEVELOPMENT:
128
+
129
+ You can install the bleeding-edge version as follows:
130
+
131
+ sudo gem uninstall autotest-growl
132
+ sudo gem install svoop-autotest-growl --source http://gems.github.com
133
+
134
+ Bleeding-edge gems contains a fourth version digit group (e.g. the .8 in
135
+ 0.1.5.8) to make sure Github builds the gem whenever new code is committed.
136
+ If there is no fourth version digit group, the edge version is identical
137
+ to the stable version from Rubyforge.
138
+
139
+ Please submit issues on:
140
+
141
+ https://forge.bitcetera.com/projects/show/autotest-growl
142
+
143
+ To contribute code, fork the project on Github, add your code and submit a
144
+ pull request:
145
+
146
+ http://github.com/guides/fork-a-project-and-submit-your-modifications
147
+
148
+ == CONTRIBUTIONS:
149
+
150
+ Thanks to the following folks who have contributed to this project:
151
+
152
+ * Michael Moen
153
+ * Graham Savage
154
+ * Karl O'Keeffe
155
+ * Konstantin Haase
156
+
157
+ == LICENSE:
158
+
159
+ (The MIT License)
160
+
161
+ Copyright (c) 2009 Sven Schwyn
162
+
163
+ Permission is hereby granted, free of charge, to any person obtaining
164
+ a copy of this software and associated documentation files (the
165
+ 'Software'), to deal in the Software without restriction, including
166
+ without limitation the rights to use, copy, modify, merge, publish,
167
+ distribute, sublicense, and/or sell copies of the Software, and to
168
+ permit persons to whom the Software is furnished to do so, subject to
169
+ the following conditions:
170
+
171
+ The above copyright notice and this permission notice shall be
172
+ included in all copies or substantial portions of the Software.
173
+
174
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
175
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
176
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
177
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
178
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
179
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
180
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,26 @@
1
+ require 'rubygems'
2
+ gem 'hoe', '>= 2.1.0'
3
+ require 'hoe'
4
+ require 'fileutils'
5
+ require './lib/autotest-growl'
6
+
7
+ Hoe.plugin :newgem
8
+ # Hoe.plugin :website
9
+ # Hoe.plugin :cucumberfeatures
10
+
11
+ $hoe = Hoe.spec 'autotest-growl' do
12
+ self.developer 'Sven Schwyn', 'ruby@bitcetera.com'
13
+ self.summary = %q{Next generation Growl notification support for ZenTest's autotest.}
14
+ self.description = %q{This gem aims to improve support for Growl notification by ZenTest's autotest. It comes with a nice colored Ruby icon set and - for now - supports Cucumber by means of a workaround.}
15
+ self.url = %q{http://www.bitcetera.com/products/autotest-growl}
16
+ self.post_install_message = "\n\e[1;32m" + File.read('PostInstall.txt') + "\e[0m\n"
17
+ self.rubyforge_name = self.name
18
+ self.extra_deps = [
19
+ ['ZenTest','>= 4.1.3'],
20
+ ]
21
+ end
22
+
23
+ require 'newgem/tasks'
24
+ Dir['tasks/**/*.rake'].each { |t| load t }
25
+
26
+ task :default => [:spec]
@@ -0,0 +1,55 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{autotest-growl}
5
+ s.version = "0.1.5.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Sven Schwyn"]
9
+ s.date = %q{2009-07-28}
10
+ s.description = %q{This gem aims to improve support for Growl notification by ZenTest's autotest. It comes with a nice colored Ruby icon set and - for now - supports Cucumber by means of a workaround.}
11
+ s.email = ["ruby@bitcetera.com"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt"]
13
+ s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "autotest-growl.gemspec", "growl/growlnotify", "growl/growlnotify.com", "img/error.png", "img/failed.png", "img/info.png", "img/passed.png", "img/pending.png", "lib/autotest-growl.rb", "lib/autotest/growl.rb", "lib/autotest/result.rb", "script/console", "script/destroy", "script/generate", "spec/autotest-growl_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/rspec.rake"]
14
+ s.homepage = %q{http://www.bitcetera.com/products/autotest-growl}
15
+ s.post_install_message = %q{
16
+ In order to use autotest-growl, the following line has to be added to your
17
+ ~/.autotest file:
18
+
19
+ require 'autotest/growl'
20
+
21
+ Make sure Growl is installed on your computer. Download it from:
22
+
23
+ http://growl.info (Mac OS X)
24
+ http://growlforwindows.com (Windows)
25
+
26
+ If Growl notifications are not always displayed, take a look at the README
27
+ for assistance.
28
+
29
+ For more information, feedback and bug submissions, please visit:
30
+
31
+ http://www.bitcetera.com/products/autotest-growl
32
+ 
33
+ }
34
+ s.rdoc_options = ["--main", "README.rdoc"]
35
+ s.require_paths = ["lib"]
36
+ s.rubyforge_project = %q{autotest-growl}
37
+ s.rubygems_version = %q{1.3.4}
38
+ s.summary = %q{Next generation Growl notification support for ZenTest's autotest.}
39
+
40
+ if s.respond_to? :specification_version then
41
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
42
+ s.specification_version = 3
43
+
44
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<ZenTest>, [">= 4.1.3"])
46
+ s.add_development_dependency(%q<hoe>, [">= 2.3.2"])
47
+ else
48
+ s.add_dependency(%q<ZenTest>, [">= 4.1.3"])
49
+ s.add_dependency(%q<hoe>, [">= 2.3.2"])
50
+ end
51
+ else
52
+ s.add_dependency(%q<ZenTest>, [">= 4.1.3"])
53
+ s.add_dependency(%q<hoe>, [">= 2.3.2"])
54
+ end
55
+ end
data/growl/growlnotify ADDED
Binary file
Binary file
data/img/error.png ADDED
Binary file
data/img/failed.png ADDED
Binary file
data/img/info.png ADDED
Binary file
data/img/passed.png ADDED
Binary file
data/img/pending.png ADDED
Binary file
@@ -0,0 +1,168 @@
1
+ require 'rubygems'
2
+ require 'autotest'
3
+ require File.join(File.dirname(__FILE__), 'result')
4
+
5
+ ##
6
+ # Autotest::Growl
7
+ #
8
+ # == FEATUERS:
9
+ # * Display autotest results as local or remote Growl notifications.
10
+ # * Clean the terminal on every test cycle while maintaining scrollback.
11
+ #
12
+ # == SYNOPSIS:
13
+ # ~/.autotest
14
+ # require 'autotest/growl'
15
+ module Autotest::Growl
16
+
17
+ GEM_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
18
+
19
+ @label = ''
20
+ @modified_files = []
21
+ @ran_tests = false
22
+ @ran_features = false
23
+
24
+ @@remote_notification = false
25
+ @@one_notification_per_run = false
26
+ @@clear_terminal = true
27
+ @@hide_label = false
28
+ @@show_modified_files = false
29
+
30
+ ##
31
+ # Whether to use remote or local notificaton (default).
32
+ def self.remote_notification=(boolean)
33
+ @@remote_notification = boolean
34
+ end
35
+
36
+ ##
37
+ # Whether to limit the number of notifications per run to one or not (default).
38
+ def self.one_notification_per_run=(boolean)
39
+ @@one_notification_per_run = boolean
40
+ end
41
+
42
+ ##
43
+ # Whether to clear the terminal before running tests (default) or not.
44
+ def self.clear_terminal=(boolean)
45
+ @@clear_terminal = boolean
46
+ end
47
+
48
+ ##
49
+ # Whether to display the label (default) or not.
50
+ def self.hide_label=(boolean)
51
+ @@hide_label = boolean
52
+ end
53
+
54
+ ##
55
+ # Whether to display the modified files or not (default).
56
+ def self.show_modified_files=(boolean)
57
+ @@show_modified_files = boolean
58
+ end
59
+
60
+ ##
61
+ # Display a message through Growl.
62
+ def self.growl(title, message, icon, priority=0, stick="")
63
+ growl = File.join(GEM_PATH, 'growl', 'growlnotify')
64
+ image = File.join(ENV['HOME'], '.autotest-growl', "#{icon}.png")
65
+ image = File.join(GEM_PATH, 'img', "#{icon}.png") unless File.exists?(image)
66
+ case RUBY_PLATFORM
67
+ when /mswin/
68
+ growl += '.com'
69
+ system %(#{growl} #{message.inspect} /a:"Autotest" /r:"Autotest" /n:"Autotest" /i:"#{image}" /p:#{priority} /t:"#{title}")
70
+ when /darwin/
71
+ if @@remote_notification
72
+ system %(#{growl} -H localhost -n Autotest --image '#{image}' -p #{priority} -m '#{message}' '#{title}' #{stick} &)
73
+ else
74
+ system %(#{growl} -w -n Autotest --image '#{image}' -p #{priority} -m '#{message}' '#{title}' #{stick} &)
75
+ end
76
+ else
77
+ raise "#{RUBY_PLATFORM} is not supported by autotest-growl"
78
+ end
79
+ end
80
+
81
+ ##
82
+ # Display the modified files.
83
+ Autotest.add_hook :updated do |autotest, modified|
84
+ @ran_tests = @ran_features = false
85
+ if @@show_modified_files
86
+ if modified != @last_modified
87
+ growl @label + 'Modifications detected.', modified.collect {|m| m[0]}.join(', '), 'info', 0
88
+ @last_modified = modified
89
+ end
90
+ end
91
+ false
92
+ end
93
+
94
+ ##
95
+ # Set the label and clear the terminal.
96
+ Autotest.add_hook :run_command do
97
+ @label = File.basename(Dir.pwd).upcase + ': ' if !@@hide_label
98
+ print "\n"*2 + '-'*80 + "\n"*2
99
+ print "\e[2J\e[f" if @@clear_terminal
100
+ false
101
+ end
102
+
103
+ ##
104
+ # Parse the RSpec and Test::Unit results and send them to Growl.
105
+ Autotest.add_hook :ran_command do |autotest|
106
+ unless @@one_notification_per_run && @ran_tests
107
+ result = Result.new(autotest)
108
+ if result.exists?
109
+ case result.framework
110
+ when 'test-unit'
111
+ if result.has?('test-error')
112
+ growl @label + 'Cannot run some unit tests.', "#{result.get('test-error')} in #{result.get('test')}", 'error', 2
113
+ elsif result.has?('test-failed')
114
+ growl @label + 'Some unit tests failed.', "#{result['test-failed']} of #{result.get('test-assertion')} in #{result.get('test')} failed", 'failed', 2
115
+ else
116
+ growl @label + 'All unit tests passed.', "#{result.get('test-assertion')} in #{result.get('test')}", 'passed', -2
117
+ end
118
+ when 'rspec'
119
+ if result.has?('example-failed')
120
+ growl @label + 'Some RSpec examples failed.', "#{result['example-failed']} of #{result.get('example')} failed", 'failed', 2
121
+ elsif result.has?('example-pending')
122
+ growl @label + 'Some RSpec examples are pending.', "#{result['example-pending']} of #{result.get('example')} pending", 'pending', -1
123
+ else
124
+ growl @label + 'All RSpec examples passed.', "#{result.get('example')}", 'passed', -2
125
+ end
126
+ end
127
+ else
128
+ growl @label + 'Could not run tests.', '', 'error', 2
129
+ end
130
+ @ran_test = true
131
+ end
132
+ false
133
+ end
134
+
135
+ ##
136
+ # Parse the Cucumber results and sent them to Growl.
137
+ Autotest.add_hook :ran_features do |autotest|
138
+ unless @@one_notification_per_run && @ran_features
139
+ result = Result.new(autotest)
140
+ if result.exists?
141
+ case result.framework
142
+ when 'cucumber'
143
+ explanation = []
144
+ if result.has?('scenario-undefined') || result.has?('step-undefined')
145
+ explanation << "#{result['scenario-undefined']} of #{result.get('scenario')} not defined" if result['scenario-undefined']
146
+ explanation << "#{result['step-undefined']} of #{result.get('step')} not defined" if result['step-undefined']
147
+ growl @label + 'Some Cucumber scenarios are not defined.', "#{explanation.join("\n")}", 'pending', -1
148
+ elsif result.has?('scenario-failed') || result.has?('step-failed')
149
+ explanation << "#{result['scenario-failed']} of #{result.get('scenario')} failed" if result['scenario-failed']
150
+ explanation << "#{result['step-failed']} of #{result.get('step')} failed" if result['step-failed']
151
+ growl @label + 'Some Cucumber scenarios failed.', "#{explanation.join("\n")}", 'failed', 2
152
+ elsif result.has?('scenario-pending') || result.has?('step-pending')
153
+ explanation << "#{result['scenario-pending']} of #{result.get('scenario')} pending" if result['scenario-pending']
154
+ explanation << "#{result['step-pending']} of #{result.get('step')} pending" if result['step-pending']
155
+ growl @label + 'Some Cucumber scenarios are pending.', "#{explanation.join("\n")}", 'pending', -1
156
+ else
157
+ growl @label + 'All Cucumber features passed.', '', 'passed', -2
158
+ end
159
+ end
160
+ else
161
+ growl @label + 'Could not run features.', '', 'error', 2
162
+ end
163
+ @ran_features = true
164
+ end
165
+ false
166
+ end
167
+
168
+ end
@@ -0,0 +1,64 @@
1
+ class Result
2
+
3
+ ##
4
+ # Analyze test result lines and return the numbers in a hash.
5
+ def initialize(autotest)
6
+ @numbers = {}
7
+ lines = autotest.results.map {|s| s.gsub(/(\e.*?m|\n)/, '') } # remove escape sequences
8
+ lines.reject! {|line| !line.match(/\d+\s+(example|test|scenario|step)s?/) } # isolate result numbers
9
+ lines.each do |line|
10
+ prefix = nil
11
+ line.scan(/([1-9]\d*)\s(\w+)/) do |number, kind|
12
+ kind.sub!(/s$/, '') # singularize
13
+ kind.sub!(/failure/, 'failed') # homogenize
14
+ if prefix
15
+ @numbers["#{prefix}-#{kind}"] = number.to_i
16
+ else
17
+ @numbers[kind] = number.to_i
18
+ prefix = kind
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ ##
25
+ # Determine the testing framework used.
26
+ def framework
27
+ case
28
+ when @numbers['test']: 'test-unit'
29
+ when @numbers['example']: 'rspec'
30
+ when @numbers['scenario']: 'cucumber'
31
+ end
32
+ end
33
+
34
+ ##
35
+ # Determine whether a result exists at all.
36
+ def exists?
37
+ !@numbers.empty?
38
+ end
39
+
40
+ ##
41
+ # Check whether a specific result is present.
42
+ def has?(kind)
43
+ @numbers.has_key?(kind)
44
+ end
45
+
46
+ ##
47
+ # Get a plain result number.
48
+ def [](kind)
49
+ @numbers[kind]
50
+ end
51
+
52
+ ##
53
+ # Get a labelled result number. The prefix is removed and the label pluralized if necessary.
54
+ def get(kind)
55
+ "#{@numbers[kind]} #{kind.sub(/^.*-/, '')}#{'s' if @numbers[kind] != 1 && !kind.match(/(ed|ing)$/)}" if @numbers[kind]
56
+ end
57
+
58
+ ##
59
+ # Get the fatal error if any.
60
+ def fatal_error
61
+
62
+ end
63
+
64
+ end
@@ -0,0 +1,10 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ require File.join(File.dirname(__FILE__), 'autotest', 'growl')
5
+
6
+ module AutotestGrowl
7
+
8
+ VERSION = '0.1.5.1'
9
+
10
+ end
data/script/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/testli.rb'}"
9
+ puts "Loading testli gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
@@ -0,0 +1,80 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "handling results" do
4
+ before do
5
+ @autotest = Autotest.new
6
+ @autotest.hook(:updated)
7
+ end
8
+
9
+ describe "for RSpec" do
10
+ it "should show a 'passed' notification" do
11
+ Autotest::Growl.should_receive(:growl).and_return('passed')
12
+ @autotest.results = ["10 examples, 0 failures"]
13
+ @autotest.hook(:ran_command)
14
+ end
15
+
16
+ it "should show a 'failed' notification" do
17
+ Autotest::Growl.should_receive(:growl).and_return('failed')
18
+ @autotest.results = ["10 examples, 1 failures"]
19
+ @autotest.hook(:ran_command)
20
+ end
21
+
22
+ it "should show a 'pending' notification" do
23
+ Autotest::Growl.should_receive(:growl).and_return('pending')
24
+ @autotest.results = ["10 examples, 0 failures, 1 pending"]
25
+ @autotest.hook(:ran_command)
26
+ end
27
+
28
+ it "should show an 'error' notification" do
29
+ Autotest::Growl.should_receive(:growl).and_return('error')
30
+ @autotest.results = []
31
+ @autotest.hook(:ran_command)
32
+ end
33
+ end
34
+
35
+ describe "for Test::Unit" do
36
+ it "should show a 'passed' notification" do
37
+ Autotest::Growl.should_receive(:growl).and_return('passed')
38
+ @autotest.results = ["1 tests, 1 assertions, 0 failures, 0 errors"]
39
+ @autotest.hook(:ran_command)
40
+ end
41
+
42
+ it "should show a 'failed' notification" do
43
+ Autotest::Growl.should_receive(:growl).and_return('failed')
44
+ @autotest.results = ["1 tests, 1 assertions, 1 failures, 0 errors"]
45
+ @autotest.hook(:ran_command)
46
+ end
47
+
48
+ it "should show an 'error' notification" do
49
+ Autotest::Growl.should_receive(:growl).and_return('error')
50
+ @autotest.results = ["1 tests, 1 assertions, 0 failures, 1 errors"]
51
+ @autotest.hook(:ran_command)
52
+ end
53
+ end
54
+
55
+ describe "for Cucumber" do
56
+ it "should show a 'passed' notification" do
57
+ Autotest::Growl.should_receive(:growl).and_return('passed')
58
+ @autotest.results = ["1 scenario (1 passed)", "1 step (1 passed)"]
59
+ @autotest.hook(:ran_features)
60
+ end
61
+
62
+ it "should show a 'failed' notification" do
63
+ Autotest::Growl.should_receive(:growl).and_return('failed')
64
+ @autotest.results = ["2 scenarios (1 failed, 1 passed)", "2 steps (1 failed, 1 passed)"]
65
+ @autotest.hook(:ran_features)
66
+ end
67
+
68
+ it "should show a 'pending' notification" do
69
+ Autotest::Growl.should_receive(:growl).and_return('pending')
70
+ @autotest.results = ["2 scenarios (1 undefined, 1 passed)", "2 steps (1 undefined, 1 passed)"]
71
+ @autotest.hook(:ran_features)
72
+ end
73
+
74
+ it "should show an 'error' notification" do
75
+ Autotest::Growl.should_receive(:growl).and_return('error')
76
+ @autotest.results = []
77
+ @autotest.hook(:ran_features)
78
+ end
79
+ end
80
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,16 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
5
+ gem 'rspec'
6
+ require 'spec'
7
+ end
8
+
9
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
10
+ require 'autotest/growl'
11
+
12
+ module Autotest::Growl
13
+ def self.growl(title, message, icon, priority=0, stick="")
14
+ icon
15
+ end
16
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec/models"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/**/*_spec.rb']
21
+ end
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rkh-autotest-growl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5.1
5
+ platform: ruby
6
+ authors:
7
+ - Sven Schwyn
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-28 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ZenTest
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 4.1.3
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hoe
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.2
34
+ version:
35
+ description: This gem aims to improve support for Growl notification by ZenTest's autotest. It comes with a nice colored Ruby icon set and - for now - supports Cucumber by means of a workaround.
36
+ email:
37
+ - ruby@bitcetera.com
38
+ executables: []
39
+
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - History.txt
44
+ - Manifest.txt
45
+ - PostInstall.txt
46
+ files:
47
+ - History.txt
48
+ - Manifest.txt
49
+ - PostInstall.txt
50
+ - README.rdoc
51
+ - Rakefile
52
+ - autotest-growl.gemspec
53
+ - growl/growlnotify
54
+ - growl/growlnotify.com
55
+ - img/error.png
56
+ - img/failed.png
57
+ - img/info.png
58
+ - img/passed.png
59
+ - img/pending.png
60
+ - lib/autotest-growl.rb
61
+ - lib/autotest/growl.rb
62
+ - lib/autotest/result.rb
63
+ - script/console
64
+ - script/destroy
65
+ - script/generate
66
+ - spec/autotest-growl_spec.rb
67
+ - spec/spec.opts
68
+ - spec/spec_helper.rb
69
+ - tasks/rspec.rake
70
+ has_rdoc: false
71
+ homepage: http://www.bitcetera.com/products/autotest-growl
72
+ licenses:
73
+ post_install_message: "\n\
74
+ \e[1;32mIn order to use autotest-growl, the following line has to be added to your\n\
75
+ ~/.autotest file:\n\n\
76
+ require 'autotest/growl'\n\n\
77
+ Make sure Growl is installed on your computer. Download it from:\n\n\
78
+ http://growl.info (Mac OS X)\n\
79
+ http://growlforwindows.com (Windows)\n\n\
80
+ If Growl notifications are not always displayed, take a look at the README\n\
81
+ for assistance.\n\n\
82
+ For more information, feedback and bug submissions, please visit:\n\n\
83
+ http://www.bitcetera.com/products/autotest-growl\n\
84
+ \e[0m\n"
85
+ rdoc_options:
86
+ - --main
87
+ - README.rdoc
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: "0"
95
+ version:
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ version:
102
+ requirements: []
103
+
104
+ rubyforge_project: autotest-growl
105
+ rubygems_version: 1.3.5
106
+ signing_key:
107
+ specification_version: 3
108
+ summary: Next generation Growl notification support for ZenTest's autotest.
109
+ test_files: []
110
+