test_notifier 0.0.5 → 0.0.6

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
@@ -15,6 +15,10 @@
15
15
 
16
16
  * title was displayed incorrectly on growlnotify
17
17
 
18
- == 0.0.5 2007-11-08
18
+ == 0.0.5 2007-10-18
19
19
 
20
- * only mac os x and windows are checked; other systems go to the "else" statement
20
+ * bug fix
21
+
22
+ == 0.0.6 2008-01-14
23
+
24
+ * added support for both Test::Unit and RSpec, with or without Autotest
data/Manifest.txt CHANGED
@@ -6,6 +6,9 @@ Rakefile
6
6
  config/hoe.rb
7
7
  config/requirements.rb
8
8
  lib/test_notifier.rb
9
+ lib/test_notifier/test_unit.rb
10
+ lib/test_notifier/autotest.rb
11
+ lib/test_notifier/rspec.rb
9
12
  lib/test_notifier/icons/error.png
10
13
  lib/test_notifier/icons/failure.png
11
14
  lib/test_notifier/icons/passed.png
data/README.txt CHANGED
@@ -34,6 +34,11 @@ Windows
34
34
  2) Install ruby-snarl:
35
35
  gem install ruby-snarl
36
36
 
37
+ Usage
38
+ -----
39
+ If you're using Test::Unit you should add `require "test_notifier/test_unit"`
40
+ If you're using RSpec you should add `require "test_notifier/rspec"`
41
+ If you're using Autotest you should add `require "test_notifier/autotest"` to the file `~/.autotest`
37
42
 
38
43
  --
39
44
  Found this useful? Consider a donation (any amount):
data/lib/test_notifier.rb CHANGED
@@ -1,53 +1,78 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
1
  require 'snarl' if RUBY_PLATFORM =~ /mswin/
4
- require 'test/unit/ui/console/testrunner'
5
2
 
6
- module Test
7
- module Unit
8
- module UI
9
- module Console
10
- class TestRunner
11
- FAILED_TITLE = "FAILED"
12
- PASSED_TITLE = "Passed"
13
-
14
- alias finished_original finished
15
-
16
- def finished(elapsed_time)
17
- finished_original(elapsed_time)
18
- matches, *output = *@result.to_s.match(/(\d+)\stests,\s(\d+)\sassertions,\s(\d+)\sfailures,\s(\d+)\serrors/)
19
-
20
- output = output.map {|i| i.to_i }
21
- t, a, f, e = output
22
-
23
- if f > 0 || e > 0
24
- # test has failed or raised an error
25
- title = FAILED_TITLE
26
- image = e > 0 ? "error.png" : "failure.png"
27
- elsif a > 0
28
- # everything's ok
29
- title = PASSED_TITLE
30
- image = "passed.png"
31
- else
32
- # no assertions
33
- return
34
- end
35
-
36
- image = File.join(File.dirname(__FILE__), "test_notifier", "icons", image)
37
- message = "#{t} tests, #{a} assertions, #{f} failures, #{e} errors"
38
-
39
- if RUBY_PLATFORM =~ /darwin/
40
- system("growlnotify -n test_notifier --image #{image} -p 2 -m \"#{message}\" -t \"#{title}\"")
41
- elsif RUBY_PLATFORM =~ /mswin/
42
- Snarl.show_message(title, message, image)
43
- else
44
- system("notify-send -i #{image} #{title} \"#{message}\"")
45
- end
46
- rescue
47
- puts "=== test_notifier: No message lib found in your system. Please check the README.txt file"
48
- end
49
- end
50
- end
3
+ module TestNotifier
4
+ # create a .test_notifier at your home
5
+ # directory and save the images as passed.png,
6
+ # failure.png and error.png for custom images
7
+ PASSED_IMAGE = "passed.png"
8
+ FAILURE_IMAGE = "failure.png"
9
+ ERROR_IMAGE = "error.png"
10
+ FAILURE_TITLE = "FAILED"
11
+ PASSED_TITLE = "Passed"
12
+
13
+ RSPEC_REGEX = /(\d+) examples?, (\d+) failures?(, (\d+) pendings?)?/
14
+ TEST_UNIT_REGEX = /(\d+)\stests,\s(\d+)\sassertions,\s(\d+)\sfailures,\s(\d+)\serrors/
15
+
16
+ def self.notify(image, title, message)
17
+ image ||= "none.png"
18
+
19
+ custom_image = File.join(File.expand_path("~/.test_notifier"), "image", image)
20
+ image = File.exists?(custom_image) ? custom_image : File.join(File.dirname(__FILE__), "test_notifier", "icons", image)
21
+
22
+ if RUBY_PLATFORM =~ /darwin/
23
+ system("growlnotify -n test_notifier --image #{image} -p 2 -m \"#{message}\" -t \"#{title}\"")
24
+ elsif RUBY_PLATFORM =~ /mswin/
25
+ Snarl.show_message(title, message, image)
26
+ elsif RUBY_PLATFORM =~ /linux/
27
+ system("notify-send -i #{image} #{title} \"#{message}\"")
28
+ end
29
+ end
30
+
31
+ def self.rspec?(content)
32
+ (RSPEC_REGEX =~ content)
33
+ end
34
+
35
+ def self.notification_for_rspec(content)
36
+ matches, *output = *content.to_s.match(RSPEC_REGEX)
37
+ output = output.map {|i| i.to_i }
38
+ e, f, none, p = output
39
+
40
+ if f > 0
41
+ # test has failed
42
+ title = FAILURE_TITLE
43
+ image = FAILURE_IMAGE
44
+ elsif e > 0
45
+ # everything's ok
46
+ title = PASSED_TITLE
47
+ image = PASSED_IMAGE
48
+ else
49
+ # no examples
50
+ return
51
+ end
52
+
53
+ message = "#{e} examples, #{f} failures, #{p} pending"
54
+ notify(image, title, message)
55
+ end
56
+
57
+ def self.notification_for_test_unit(content)
58
+ matches, *output = *content.to_s.match(TEST_UNIT_REGEX)
59
+ output = output.map {|i| i.to_i }
60
+ t, a, f, e = output
61
+
62
+ if f > 0 || e > 0
63
+ # test has failed or raised an error
64
+ title = FAILURE_TITLE
65
+ image = e > 0 ? ERROR_IMAGE : FAILURE_IMAGE
66
+ elsif a > 0
67
+ # everything's ok
68
+ title = PASSED_TITLE
69
+ image = PASSED_IMAGE
70
+ else
71
+ # no assertions
72
+ return
51
73
  end
74
+
75
+ message = "#{t} tests, #{a} assertions, #{f} failures, #{e} errors"
76
+ notify(image, title, message)
52
77
  end
53
78
  end
@@ -0,0 +1,7 @@
1
+ require 'test_notifier'
2
+
3
+ Autotest.add_hook :ran_command do |at|
4
+ content = at.results.to_s
5
+
6
+ TestNotifier.rspec?(content) ? TestNotifier::notification_for_rspec(content) : TestNotifier::notification_for_test_unit(content)
7
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_notifier'
2
+ require 'spec/runner/formatter/base_text_formatter'
3
+
4
+ class Spec::Runner::Formatter::BaseTextFormatter
5
+ alias dump_summary_original dump_summary
6
+
7
+ def dump_summary(duration, examples, failed, pending)
8
+ dump_summary_original(duration, examples, failed, pending)
9
+
10
+ return if examples == 0
11
+
12
+ if failed > 0
13
+ title = TestNotifier::FAILURE_TITLE
14
+ image = TestNotifier::ERROR_IMAGE
15
+ else
16
+ title = TestNotifier::PASSED_TITLE
17
+ image = TestNotifier::PASSED_IMAGE
18
+ end
19
+
20
+ message = "#{examples} examples, #{failed} failed, #{pending} pending"
21
+ TestNotifier::notify(image, title, message)
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_notifier'
2
+ require 'test/unit/ui/console/testrunner'
3
+
4
+ module Test
5
+ module Unit
6
+ module UI
7
+ module Console
8
+ class TestRunner
9
+ alias finished_original finished
10
+
11
+ def finished(elapsed_time)
12
+ finished_original(elapsed_time)
13
+ content = @result.to_s
14
+ TestNotifier::notification_for_test_unit(content)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -2,7 +2,7 @@ module TestNotifier #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 5
5
+ TINY = 6
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -1,33 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: test_notifier
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.0.5
7
- date: 2007-11-08 00:00:00 -02:00
8
- summary: Display system notifications (dbus, growl and snarl) after running tests. It works on Mac OS X, Linux and Windows. Powerful when used with Autotest ZenTest gem for Rails apps.
9
- require_paths:
10
- - lib
11
- email: fnando.vieira@gmail.com
12
- homepage: http://testnotifier.rubyforge.org
13
- rubyforge_project: testnotifier
14
- description: Display system notifications (dbus, growl and snarl) after running tests. It works on Mac OS X, Linux and Windows. Powerful when used with Autotest ZenTest gem for Rails apps.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.0.6
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Nando Vieira
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-01-16 00:00:00 -02:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Display system notifications (dbus, growl and snarl) after running tests. It works on Mac OS X, Linux and Windows. Powerful when used with Autotest ZenTest gem for Rails apps.
17
+ email: fnando.vieira@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - History.txt
24
+ - License.txt
25
+ - Manifest.txt
26
+ - README.txt
27
+ - website/index.txt
31
28
  files:
32
29
  - History.txt
33
30
  - License.txt
@@ -37,6 +34,9 @@ files:
37
34
  - config/hoe.rb
38
35
  - config/requirements.rb
39
36
  - lib/test_notifier.rb
37
+ - lib/test_notifier/test_unit.rb
38
+ - lib/test_notifier/autotest.rb
39
+ - lib/test_notifier/rspec.rb
40
40
  - lib/test_notifier/icons/error.png
41
41
  - lib/test_notifier/icons/failure.png
42
42
  - lib/test_notifier/icons/passed.png
@@ -56,23 +56,33 @@ files:
56
56
  - website/javascripts/rounded_corners_lite.inc.js
57
57
  - website/stylesheets/screen.css
58
58
  - website/template.rhtml
59
- test_files:
60
- - test/test_helper.rb
61
- - test/test_test_notifier.rb
59
+ has_rdoc: true
60
+ homepage: http://testnotifier.rubyforge.org
61
+ post_install_message:
62
62
  rdoc_options:
63
63
  - --main
64
64
  - README.txt
65
- extra_rdoc_files:
66
- - History.txt
67
- - License.txt
68
- - Manifest.txt
69
- - README.txt
70
- - website/index.txt
71
- executables: []
72
-
73
- extensions: []
74
-
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: "0"
72
+ version:
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: "0"
78
+ version:
75
79
  requirements: []
76
80
 
77
- dependencies: []
78
-
81
+ rubyforge_project: testnotifier
82
+ rubygems_version: 1.0.1
83
+ signing_key:
84
+ specification_version: 2
85
+ summary: Display system notifications (dbus, growl and snarl) after running tests. It works on Mac OS X, Linux and Windows. Powerful when used with Autotest ZenTest gem for Rails apps.
86
+ test_files:
87
+ - test/test_helper.rb
88
+ - test/test_test_notifier.rb