karl-autotest-growl 0.1.6 → 0.1.7

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 CHANGED
@@ -1,3 +1,17 @@
1
+ == 0.1.4 2009-07-23
2
+
3
+ * 1 major improvement
4
+ * Support for Windows (Karl O'Keeffe)
5
+
6
+ == 0.1.3 2009-07-22
7
+
8
+ * 1 major improvement
9
+ * Better result analysis and more readable notifications
10
+ * 3 minor improvement
11
+ * Move Cucumber notification to :ran_features hook (Karl O'Keeffe)
12
+ * Add one_notification_per_run configuration option
13
+ * Notification for undefined Cucumber scenarios/steps
14
+
1
15
  == 0.1.2 2009-06-12
2
16
 
3
17
  * 3 major improvements
data/Manifest.txt CHANGED
@@ -5,6 +5,7 @@ README.rdoc
5
5
  Rakefile
6
6
  autotest-growl.gemspec
7
7
  growl/growlnotify
8
+ growl/growlnotify.com
8
9
  img/error.png
9
10
  img/failed.png
10
11
  img/info.png
@@ -12,6 +13,7 @@ img/passed.png
12
13
  img/pending.png
13
14
  lib/autotest-growl.rb
14
15
  lib/autotest/growl.rb
16
+ lib/autotest/result.rb
15
17
  script/console
16
18
  script/destroy
17
19
  script/generate
data/PostInstall.txt CHANGED
@@ -5,7 +5,8 @@ require 'autotest/growl'
5
5
 
6
6
  Make sure Growl is installed on your computer. Download it from:
7
7
 
8
- http://growl.info
8
+ http://growl.info (Mac OS X)
9
+ http://growlforwindows.com (Windows)
9
10
 
10
11
  If Growl notifications are not always displayed, take a look at the README
11
12
  for assistance.
data/README.rdoc CHANGED
@@ -16,7 +16,7 @@ priorities:
16
16
 
17
17
  * 2 for error or failed
18
18
  * 0 for info
19
- * -1 for pending or unknown
19
+ * -1 for pending, undefined or unknown
20
20
  * -2 for passed
21
21
 
22
22
  Furthermore the terminal running autotest is cleared on every cycle (unless
@@ -32,8 +32,9 @@ might take a while though as autotest itself is currently misbehaving on Ruby
32
32
 
33
33
  == REQUIREMENTS:
34
34
 
35
- * Growl >= 1.1.4
36
- * ZenTest >= 4.1.0
35
+ * Growl >= 1.1.5 (Mac OS X) or >= 2.0b18 (Windows)
36
+ * ZenTest >= 4.1.3
37
+ * extensions >= 0.6.0
37
38
 
38
39
  == INSTALL:
39
40
 
@@ -47,7 +48,8 @@ Then add the following line to your ~/.autotest file:
47
48
 
48
49
  Make sure Growl is installed on your computer. You can download it from:
49
50
 
50
- http://growl.info
51
+ Mac OS X: http://growl.info
52
+ Windows: http://growlforwindows.com
51
53
 
52
54
  == CONFIGURATION:
53
55
 
@@ -71,6 +73,13 @@ All tests have passed", add the following to your ~/.autotest:
71
73
 
72
74
  Autotest::Growl::hide_label = true
73
75
 
76
+ === One Notifications per Run
77
+
78
+ Allow only one test and one feature notification per run by adding the
79
+ following to your ~/.autotest:
80
+
81
+ Autotest::Growl::one_notification_per_run = true
82
+
74
83
  === Show Modified Files
75
84
 
76
85
  Add the following to your ~/.autotest if you would like to receive a Growl
@@ -95,16 +104,10 @@ Or remove all outdated versions of all installed gems:
95
104
 
96
105
  sudo gem cleanup
97
106
 
98
- === Missing Cucumber Notifications
99
-
100
- If you are using autotest-fsevent as well, the require statements are not
101
- ordered correctly. The require for autotest-fsevent must come after all
102
- other requires in your ~/.autotest.
103
-
104
- === Unreliable Growl Notifications
107
+ === Unreliable Growl Notifications on Mac OS X
105
108
 
106
- Under some circumstances, Growl notifications seem to be swallowed randomly.
107
- If this happens to you, try the following.
109
+ Under some circumstances, Growl notifications seem to be swallowed randomly
110
+ on Mac OS X. If this happens to you, try the following.
108
111
 
109
112
  Add this to your ~/.autotest:
110
113
 
@@ -144,6 +147,7 @@ Thanks to the following folks who have contributed to this project:
144
147
 
145
148
  * Michael Moen
146
149
  * Graham Savage
150
+ * Karl O'Keeffe
147
151
 
148
152
  == LICENSE:
149
153
 
data/Rakefile CHANGED
@@ -1,29 +1,28 @@
1
- require 'rubygems' unless ENV['NO_RUBYGEMS']
2
- %w[rake rake/clean fileutils newgem rubigen].each { |f| require f }
3
- require File.dirname(__FILE__) + '/lib/autotest-growl'
1
+ require 'rubygems'
2
+ gem 'hoe', '>= 2.1.0'
3
+ require 'hoe'
4
+ require 'fileutils'
5
+ require './lib/autotest-growl'
4
6
 
5
- $hoe = Hoe.new('autotest-growl', AutotestGrowl::VERSION) do |p|
6
- p.developer('Sven Schwyn', 'ruby@bitcetera.com')
7
- p.summary = %q{Next generation Growl notification support for ZenTest's autotest.}
8
- p.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.}
9
- p.url = %q{http://www.bitcetera.com/products/autotest-growl}
10
- p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
11
- p.post_install_message = "\n\e[1;32m" + File.read('PostInstall.txt') + "\e[0;30m\n"
12
- p.rubyforge_name = p.name
13
- p.extra_deps = [
14
- ['ZenTest','>= 4.1.0'],
15
- ]
16
- p.extra_dev_deps = [
17
- ['newgem', ">= #{::Newgem::VERSION}"]
18
- ]
7
+ Hoe.plugin :newgem
8
+ # Hoe.plugin :website
9
+ # Hoe.plugin :cucumberfeatures
19
10
 
20
- p.clean_globs |= %w[**/.DS_Store tmp *.log]
21
- path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
22
- p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
23
- p.rsync_args = '-av --delete --ignore-errors'
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.changes = self.paragraphs_of("History.txt", 0..1).join("\n\n")
17
+ self.post_install_message = "\n\e[1;32m" + File.read('PostInstall.txt') + "\e[0;30m\n"
18
+ self.rubyforge_name = self.name
19
+ self.extra_deps = [
20
+ ['ZenTest','>= 4.1.3'],
21
+ ['extensions', '>= 0.6.0']
22
+ ]
24
23
  end
25
24
 
26
25
  require 'newgem/tasks'
27
26
  Dir['tasks/**/*.rake'].each { |t| load t }
28
27
 
29
- task :default => [:spec]
28
+ task :default => [:spec]
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{autotest-growl}
5
- s.version = "0.1.6"
5
+ s.version = "0.1.7"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Sven Schwyn", "Karl O'Keeffe"]
9
- s.date = %q{2009-06-03}
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 supports Cucumber.}
8
+ s.authors = ["Sven Schwyn"]
9
+ s.date = %q{2009-07-24}
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
11
  s.email = ["ruby@bitcetera.com"]
12
- s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc"]
13
- s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "autotest-growl.gemspec", "growl/growlnotify", "growl/growlnotify.com", "growl/growlnotify.exe", "img/error.png", "img/failed.png", "img/passed.png", "img/pending.png", "lib/autotest-growl.rb", "lib/autotest/growl.rb", "script/console", "script/destroy", "script/generate", "spec/autotest-growl_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/rspec.rake"]
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
14
  s.homepage = %q{http://www.bitcetera.com/products/autotest-growl}
15
15
  s.post_install_message = %q{
16
16
  In order to use autotest-growl, the following line has to be added to your
@@ -20,7 +20,8 @@ require 'autotest/growl'
20
20
 
21
21
  Make sure Growl is installed on your computer. Download it from:
22
22
 
23
- http://growl.info
23
+ http://growl.info (Mac OS X)
24
+ http://growlforwindows.com (Windows)
24
25
 
25
26
  If Growl notifications are not always displayed, take a look at the README
26
27
  for assistance.
@@ -34,14 +35,14 @@ http://www.bitcetera.com/products/autotest-growl
34
35
  | ZenTest no longer comes with bundled Growl support and therefore the |
35
36
  | require in your ~/.autotest must not contain the absolute path to this |
36
37
  | gem anymore. Please update your ~/.autotest to contain the require line |
37
- | mentioned above. |
38
+ | mentioned above. Make sure no ZenTest version <=4.0.0 is installed. |
38
39
  +-------------------------------------------------------------------------+
39
40
  
40
41
  }
41
42
  s.rdoc_options = ["--main", "README.rdoc"]
42
43
  s.require_paths = ["lib"]
43
44
  s.rubyforge_project = %q{autotest-growl}
44
- s.rubygems_version = %q{1.3.3}
45
+ s.rubygems_version = %q{1.3.5}
45
46
  s.summary = %q{Next generation Growl notification support for ZenTest's autotest.}
46
47
 
47
48
  if s.respond_to? :specification_version then
@@ -49,17 +50,17 @@ http://www.bitcetera.com/products/autotest-growl
49
50
  s.specification_version = 3
50
51
 
51
52
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
52
- s.add_runtime_dependency(%q<ZenTest>, [">= 4.1.0"])
53
- s.add_development_dependency(%q<newgem>, [">= 1.4.1"])
54
- s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
53
+ s.add_runtime_dependency(%q<ZenTest>, [">= 4.1.3"])
54
+ s.add_runtime_dependency(%q<extensions>, [">= 0.6.0"])
55
+ s.add_development_dependency(%q<hoe>, [">= 2.3.2"])
55
56
  else
56
- s.add_dependency(%q<ZenTest>, [">= 4.1.0"])
57
- s.add_dependency(%q<newgem>, [">= 1.4.1"])
58
- s.add_dependency(%q<hoe>, [">= 1.8.0"])
57
+ s.add_dependency(%q<ZenTest>, [">= 4.1.3"])
58
+ s.add_dependency(%q<extensions>, [">= 0.6.0"])
59
+ s.add_dependency(%q<hoe>, [">= 2.3.2"])
59
60
  end
60
61
  else
61
- s.add_dependency(%q<ZenTest>, [">= 4.1.0"])
62
- s.add_dependency(%q<newgem>, [">= 1.4.1"])
63
- s.add_dependency(%q<hoe>, [">= 1.8.0"])
62
+ s.add_dependency(%q<ZenTest>, [">= 4.1.3"])
63
+ s.add_dependency(%q<extensions>, [">= 0.6.0"])
64
+ s.add_dependency(%q<hoe>, [">= 2.3.2"])
64
65
  end
65
66
  end
data/growl/growlnotify CHANGED
Binary file
data/img/info.png ADDED
Binary file
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'autotest'
3
+ require File.join(File.dirname(__FILE__), 'result')
3
4
 
4
5
  ##
5
6
  # Autotest::Growl
@@ -13,12 +14,15 @@ require 'autotest'
13
14
  # require 'autotest/growl'
14
15
  module Autotest::Growl
15
16
 
16
- GEM_PATH = File.expand_path(File.join(File.dirname(__FILE__), '../..'))
17
+ GEM_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
17
18
 
18
19
  @label = ''
19
20
  @modified_files = []
21
+ @ran_tests = false
22
+ @ran_features = false
20
23
 
21
24
  @@remote_notification = false
25
+ @@one_notification_per_run = false
22
26
  @@clear_terminal = true
23
27
  @@hide_label = false
24
28
  @@show_modified_files = false
@@ -29,6 +33,12 @@ module Autotest::Growl
29
33
  @@remote_notification = boolean
30
34
  end
31
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
+
32
42
  ##
33
43
  # Whether to clear the terminal before running tests (default) or not.
34
44
  def self.clear_terminal=(boolean)
@@ -54,28 +64,31 @@ module Autotest::Growl
54
64
 
55
65
  ##
56
66
  # Display a message through Growl.
57
- def self.growl title, message, icon, priority=0, stick=""
67
+ def self.growl(title, message, icon, priority=0, stick="")
58
68
  growl = File.join(GEM_PATH, 'growl', 'growlnotify')
59
69
  image = File.join(ENV['HOME'], '.autotest-growl', "#{icon}.png")
60
70
  image = File.join(GEM_PATH, 'img', "#{icon}.png") unless File.exists?(image)
61
71
 
62
- if is_windows?
63
- growl += '.com'
64
- cmd = "#{growl} #{message.inspect} /a:\"autotest\" /r:\"Autotest\" /n:\"Autotest\" /i:\"#{image}\" /p:#{priority} /t:\"#{title}\""
65
- else
66
- if @@remote_notification
67
- cmd = "#{growl} -H localhost -n autotest --image '#{image}' -p #{priority} -m #{message.inspect} '#{title}' #{stick}"
68
- else
69
- cmd = "#{growl} -n autotest --image '#{image}' -p #{priority} -m #{message.inspect} '#{title}' #{stick}"
70
- end
71
- end
72
-
73
- system cmd
72
+ case RUBY_PLATFORM
73
+ when /mswin/
74
+ growl += '.com'
75
+ system %(#{growl} #{message.inspect} /a:"autotest" /r:"Autotest" /n:"Autotest" /i:"#{image}" /p:#{priority} /t:"#{title}")
76
+ when /darwin/
77
+ if @@remote_notification
78
+ system %(#{growl} -H localhost -n autotest --image '#{image}' -p #{priority} -m '#{message}' '#{title}' #{stick})
79
+ else
80
+ system %(#{growl} -n autotest --image '#{image}' -p #{priority} -m '#{message}' '#{title}' #{stick})
81
+ end
82
+ else
83
+ raise "#{RUBY_PLATFORM} is not supported by autotest-growl"
84
+ end
85
+
74
86
  end
75
87
 
76
88
  ##
77
89
  # Display the modified files.
78
90
  Autotest.add_hook :updated do |autotest, modified|
91
+ @ran_tests = @ran_features = false
79
92
  if @@show_modified_files
80
93
  if modified != @last_modified
81
94
  growl @label + 'Modifications detected.', modified.collect {|m| m[0]}.join(', '), 'info', 0
@@ -89,50 +102,73 @@ module Autotest::Growl
89
102
  # Set the label and clear the terminal.
90
103
  Autotest.add_hook :run_command do
91
104
  @label = File.basename(Dir.pwd).upcase + ': ' if !@@hide_label
92
- @run_scenarios = false
93
105
  print "\n"*2 + '-'*80 + "\n"*2
94
106
  print "\e[2J\e[f" if @@clear_terminal
95
107
  false
96
108
  end
97
109
 
98
110
  ##
99
- # Parse the test results and send them to Growl.
111
+ # Parse the RSpec and Test::Unit results and send them to Growl.
100
112
  Autotest.add_hook :ran_command do |autotest|
101
- gist = autotest.results.grep(/\d+\s+(example|test)s?/).map {|s| s.gsub(/(\e.*?m|\n)/, '') }.join(" / ")
102
- if gist == ''
103
- growl @label + 'Cannot run tests.', '', 'error', 2
104
- else
105
- if gist =~ /[1-9]\d*\s+(failure|error)/
106
- growl @label + 'Some tests have failed.', gist, 'failed', 2
107
- elsif gist =~ /pending/
108
- growl @label + 'Some tests are pending.', gist, 'pending', -1
109
- @run_scenarios = true
113
+ unless @@one_notification_per_run && @ran_tests
114
+ result = Result.new(autotest)
115
+ if result.exists?
116
+ case result.framework
117
+ when 'test-unit'
118
+ if result.has?('test-error')
119
+ growl @label + 'Cannot run some unit tests.', "#{result.get('test-error')} in #{result.get('test')}", 'error', 2
120
+ elsif result.has?('test-failed')
121
+ growl @label + 'Some unit tests failed.', "#{result['test-failed']} of #{result.get('test-assertion')} in #{result.get('test')} failed", 'failed', 2
122
+ else
123
+ growl @label + 'All unit tests passed.', "#{result.get('test-assertion')} in #{result.get('test')}", 'passed', -2
124
+ end
125
+ when 'rspec'
126
+ if result.has?('example-failed')
127
+ growl @label + 'Some RSpec examples failed.', "#{result['example-failed']} of #{result.get('example')} failed", 'failed', 2
128
+ elsif result.has?('example-pending')
129
+ growl @label + 'Some RSpec examples are pending.', "#{result['example-pending']} of #{result.get('example')} pending", 'pending', -1
130
+ else
131
+ growl @label + 'All RSpec examples passed.', "#{result.get('example')}", 'passed', -2
132
+ end
133
+ end
110
134
  else
111
- growl @label + 'All tests have passed.', gist, 'passed', -2
112
- @run_scenarios = true
135
+ growl @label + 'Could not run tests.', '', 'error', 2
113
136
  end
137
+ @ran_test = true
114
138
  end
115
139
  false
116
140
  end
117
141
 
118
- # Growl results of Cucumber
142
+ ##
143
+ # Parse the Cucumber results and sent them to Growl.
119
144
  Autotest.add_hook :ran_features do |autotest|
120
-
121
- gist = autotest.results.grep(/\d+\s+scenario.*\)/).join(" / ").strip()
122
- if gist == ''
123
- growl @label + 'Cannot run scenarios.', '', 'error'
124
- else
125
- if gist =~ /[1-9]\d*\s+(failed)/
126
- growl @label + 'Some scenarios have failed.', gist, 'failed'
127
- elsif gist =~ /[1-9]\d*\s+(undefined)/
128
- growl @label + 'Some scenarios are undefinied.', gist, 'pending'
129
- elsif gist =~ /[1-9]\d*\s+(pending)/
130
- growl @label + 'Some scenarios are pending.', gist, 'pending'
131
- else
132
- growl @label + 'All scenarios have passed.', gist, 'passed'
133
- end
134
-
135
- end
145
+ unless @@one_notification_per_run && @ran_features
146
+ result = Result.new(autotest)
147
+ if result.exists?
148
+ case result.framework
149
+ when 'cucumber'
150
+ explanation = []
151
+ if result.has?('scenario-undefined') || result.has?('step-undefined')
152
+ explanation << "#{result['scenario-undefined']} of #{result.get('scenario')} not defined" if result['scenario-undefined']
153
+ explanation << "#{result['step-undefined']} of #{result.get('step')} not defined" if result['step-undefined']
154
+ growl @label + 'Some Cucumber scenarios are not defined.', "#{explanation.join("\n")}", 'pending', -1
155
+ elsif result.has?('scenario-failed') || result.has?('step-failed')
156
+ explanation << "#{result['scenario-failed']} of #{result.get('scenario')} failed" if result['scenario-failed']
157
+ explanation << "#{result['step-failed']} of #{result.get('step')} failed" if result['step-failed']
158
+ growl @label + 'Some Cucumber scenarios failed.', "#{explanation.join("\n")}", 'failed', 2
159
+ elsif result.has?('scenario-pending') || result.has?('step-pending')
160
+ explanation << "#{result['scenario-pending']} of #{result.get('scenario')} pending" if result['scenario-pending']
161
+ explanation << "#{result['step-pending']} of #{result.get('step')} pending" if result['step-pending']
162
+ growl @label + 'Some Cucumber scenarios are pending.', "#{explanation.join("\n")}", 'pending', -1
163
+ else
164
+ growl @label + 'All Cucumber features passed.', '', 'passed', -2
165
+ end
166
+ end
167
+ else
168
+ growl @label + 'Could not run features.', '', 'error', 2
169
+ end
170
+ @ran_features = true
171
+ end
136
172
  false
137
173
  end
138
174
 
@@ -0,0 +1,66 @@
1
+ require 'extensions/string'
2
+
3
+ class Result
4
+
5
+ ##
6
+ # Analyze test result lines and return the numbers in a hash.
7
+ def initialize(autotest)
8
+ @numbers = {}
9
+ lines = autotest.results.map {|s| s.gsub(/(\e.*?m|\n)/, '') } # remove escape sequences
10
+ lines.reject! {|line| !line.match(/\d+\s+(example|test|scenario|step)s?/) } # isolate result numbers
11
+ lines.each do |line|
12
+ prefix = nil
13
+ line.scan(/([1-9]\d*)\s(\w+)/) do |number, kind|
14
+ kind.sub!(/s$/, '') # singularize
15
+ kind.sub!(/failure/, 'failed') # homogenize
16
+ if prefix
17
+ @numbers["#{prefix}-#{kind}"] = number.to_i
18
+ else
19
+ @numbers[kind] = number.to_i
20
+ prefix = kind
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ ##
27
+ # Determine the testing framework used.
28
+ def framework
29
+ case
30
+ when @numbers['test']: 'test-unit'
31
+ when @numbers['example']: 'rspec'
32
+ when @numbers['scenario']: 'cucumber'
33
+ end
34
+ end
35
+
36
+ ##
37
+ # Determine whether a result exists at all.
38
+ def exists?
39
+ !@numbers.empty?
40
+ end
41
+
42
+ ##
43
+ # Check whether a specific result is present.
44
+ def has?(kind)
45
+ @numbers.has_key?(kind)
46
+ end
47
+
48
+ ##
49
+ # Get a plain result number.
50
+ def [](kind)
51
+ @numbers[kind]
52
+ end
53
+
54
+ ##
55
+ # Get a labelled result number. The prefix is removed and the label pluralized if necessary.
56
+ def get(kind)
57
+ "#{@numbers[kind]} #{kind.sub(/^.*-/, '')}#{'s' if @numbers[kind] != 1 && !(kind.ends_with?('ed') || kind.ends_with?('ing') )}" if @numbers[kind]
58
+ end
59
+
60
+ ##
61
+ # Get the fatal error if any.
62
+ def fatal_error
63
+
64
+ end
65
+
66
+ end
@@ -1,10 +1,10 @@
1
1
  $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
- require File.dirname(__FILE__) + '/autotest/growl'
4
+ require File.join(File.dirname(__FILE__), 'autotest', 'growl')
5
5
 
6
6
  module AutotestGrowl
7
7
 
8
- VERSION = '0.1.2'
8
+ VERSION = '0.1.7'
9
9
 
10
10
  end
data/script/console CHANGED
@@ -5,6 +5,6 @@ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
5
5
  libs = " -r irb/completion"
6
6
  # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
7
  # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/autotest-growl.rb'}"
9
- puts "Loading autotest-growl gem"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/testli.rb'}"
9
+ puts "Loading testli gem"
10
10
  exec "#{irb} #{libs} --simple-prompt"
@@ -3,48 +3,78 @@ require File.dirname(__FILE__) + '/spec_helper.rb'
3
3
  describe "handling results" do
4
4
  before do
5
5
  @autotest = Autotest.new
6
+ @autotest.hook(:updated)
6
7
  end
7
8
 
8
9
  describe "for RSpec" do
9
- it "should show a passing Growl notification" do
10
+ it "should show a 'passed' notification" do
10
11
  Autotest::Growl.should_receive(:growl).and_return('passed')
11
12
  @autotest.results = ["10 examples, 0 failures"]
12
13
  @autotest.hook(:ran_command)
13
14
  end
14
15
 
15
- it "should show a failing Growl notification" do
16
- Autotest::Growl.should_receive(:growl).and_return('passed')
16
+ it "should show a 'failed' notification" do
17
+ Autotest::Growl.should_receive(:growl).and_return('failed')
17
18
  @autotest.results = ["10 examples, 1 failures"]
18
19
  @autotest.hook(:ran_command)
19
20
  end
20
21
 
21
- it "should show a pending Growl notification" do
22
- Autotest::Growl.should_receive(:growl).and_return('passed')
22
+ it "should show a 'pending' notification" do
23
+ Autotest::Growl.should_receive(:growl).and_return('pending')
23
24
  @autotest.results = ["10 examples, 0 failures, 1 pending"]
24
25
  @autotest.hook(:ran_command)
25
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
26
33
  end
27
34
 
28
35
  describe "for Test::Unit" do
29
- it "should show a passing Growl notification" do
36
+ it "should show a 'passed' notification" do
30
37
  Autotest::Growl.should_receive(:growl).and_return('passed')
31
38
  @autotest.results = ["1 tests, 1 assertions, 0 failures, 0 errors"]
32
39
  @autotest.hook(:ran_command)
33
40
  end
34
41
 
35
- it "should show a failing Growl notification" do
36
- Autotest::Growl.should_receive(:growl).twice.and_return('passed')
42
+ it "should show a 'failed' notification" do
43
+ Autotest::Growl.should_receive(:growl).and_return('failed')
37
44
  @autotest.results = ["1 tests, 1 assertions, 1 failures, 0 errors"]
38
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')
39
50
  @autotest.results = ["1 tests, 1 assertions, 0 failures, 1 errors"]
40
51
  @autotest.hook(:ran_command)
41
52
  end
42
53
  end
43
54
 
44
- # FIXME: This is a temporary workaround until Cucumber is properly integrated!
45
55
  describe "for Cucumber" do
46
- it "should show a passing Growl notification"
47
- it "should show a failing Growl notification"
48
- it "should show a pending Growl notification"
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
49
79
  end
50
80
  end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karl-autotest-growl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Schwyn
8
- - Karl O'Keeffe
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
11
 
13
- date: 2009-06-03 00:00:00 -07:00
12
+ date: 2009-07-24 00:00:00 -07:00
14
13
  default_executable:
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
@@ -21,17 +20,17 @@ dependencies:
21
20
  requirements:
22
21
  - - ">="
23
22
  - !ruby/object:Gem::Version
24
- version: 4.1.0
23
+ version: 4.1.3
25
24
  version:
26
25
  - !ruby/object:Gem::Dependency
27
- name: newgem
28
- type: :development
26
+ name: extensions
27
+ type: :runtime
29
28
  version_requirement:
30
29
  version_requirements: !ruby/object:Gem::Requirement
31
30
  requirements:
32
31
  - - ">="
33
32
  - !ruby/object:Gem::Version
34
- version: 1.4.1
33
+ version: 0.6.0
35
34
  version:
36
35
  - !ruby/object:Gem::Dependency
37
36
  name: hoe
@@ -41,9 +40,9 @@ dependencies:
41
40
  requirements:
42
41
  - - ">="
43
42
  - !ruby/object:Gem::Version
44
- version: 1.8.0
43
+ version: 2.3.2
45
44
  version:
46
- description: This gem aims to improve support for Growl notification by ZenTest's autotest. It comes with a nice colored Ruby icon set and supports Cucumber.
45
+ 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.
47
46
  email:
48
47
  - ruby@bitcetera.com
49
48
  executables: []
@@ -54,7 +53,6 @@ extra_rdoc_files:
54
53
  - History.txt
55
54
  - Manifest.txt
56
55
  - PostInstall.txt
57
- - README.rdoc
58
56
  files:
59
57
  - History.txt
60
58
  - Manifest.txt
@@ -64,13 +62,14 @@ files:
64
62
  - autotest-growl.gemspec
65
63
  - growl/growlnotify
66
64
  - growl/growlnotify.com
67
- - growl/growlnotify.exe
68
65
  - img/error.png
69
66
  - img/failed.png
67
+ - img/info.png
70
68
  - img/passed.png
71
69
  - img/pending.png
72
70
  - lib/autotest-growl.rb
73
71
  - lib/autotest/growl.rb
72
+ - lib/autotest/result.rb
74
73
  - script/console
75
74
  - script/destroy
76
75
  - script/generate
@@ -85,7 +84,8 @@ post_install_message: "\n\
85
84
  ~/.autotest file:\n\n\
86
85
  require 'autotest/growl'\n\n\
87
86
  Make sure Growl is installed on your computer. Download it from:\n\n\
88
- http://growl.info\n\n\
87
+ http://growl.info (Mac OS X)\n\
88
+ http://growlforwindows.com (Windows)\n\n\
89
89
  If Growl notifications are not always displayed, take a look at the README\n\
90
90
  for assistance.\n\n\
91
91
  For more information, feedback and bug submissions, please visit:\n\n\
@@ -95,7 +95,7 @@ post_install_message: "\n\
95
95
  | ZenTest no longer comes with bundled Growl support and therefore the |\n\
96
96
  | require in your ~/.autotest must not contain the absolute path to this |\n\
97
97
  | gem anymore. Please update your ~/.autotest to contain the require line |\n\
98
- | mentioned above. |\n\
98
+ | mentioned above. Make sure no ZenTest version <=4.0.0 is installed. |\n\
99
99
  +-------------------------------------------------------------------------+\n\
100
100
  \e[0;30m\n"
101
101
  rdoc_options:
Binary file