autotest-cucumber-notification 0.0.2

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/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
6
+ html
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in autotest-cucumber-notification.gemspec
4
+ gemspec
data/LICENSE.rdoc ADDED
@@ -0,0 +1,23 @@
1
+ == The MIT License
2
+
3
+ * Code: Copyright (c) Curt Hasselschwert, Matt Buck, 2008
4
+ * Gem: Copyright (c) Pavel Argentov, 2012
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ 'Software'), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # Cucumber notifier for autotest
2
+
3
+ This is a module for autotest that will provide notification for the results
4
+ of your Cucumber features.
5
+
6
+ ## Requirements
7
+
8
+ 1. Autotest (ZenTest) configured to run your Cucumber features.
9
+ 2. libnotify --- This module only works on linux with the libnotify package
10
+ right now. I'll work on adding support for other notification frameworks in
11
+ the future.
12
+
13
+ ## Using the gem
14
+
15
+ 1. Install the gem:
16
+
17
+ $ gem install autotest-cucumber-notification
18
+
19
+ 2. Edit your `.autotest` to include the module. If you downloaded it to your
20
+ home folder, do something like this:
21
+
22
+ require 'rubygems' # for ruby versions prior to 1.9
23
+ require 'cucumber-notify'
24
+
25
+ 3. That's it. Just run Autotest with your Cucumber features like normal.
26
+
27
+ ## Credits
28
+
29
+ The original code was written by Curt Hasselschwert and re-combined later by Matt Buck.
30
+ The code is largely based on the work done by [carlosbrando](https://github.com/carlosbrando),
31
+ and his work on [the autotest-notification gem](https://github.com/carlosbrando/autotest-notification),
32
+ many thanks to him.
33
+
34
+ The cool icons came from the [Buuf icon set](http://mattahan.deviantart.com/art/Buuf-37966044)
35
+ by [Paul Davey](http://mattahan.deviantart.com/).
36
+
37
+ ## License
38
+
39
+ ```
40
+ The MIT License
41
+
42
+ * Code: Copyright (c) Curt Hasselschwert, Matt Buck, 2008
43
+ * Gem: Copyright (c) Pavel Argentov, 2012
44
+
45
+ Permission is hereby granted, free of charge, to any person obtaining
46
+ a copy of this software and associated documentation files (the
47
+ 'Software'), to deal in the Software without restriction, including
48
+ without limitation the rights to use, copy, modify, merge, publish,
49
+ distribute, sublicense, and/or sell copies of the Software, and to
50
+ permit persons to whom the Software is furnished to do so, subject to
51
+ the following conditions:
52
+
53
+ The above copyright notice and this permission notice shall be
54
+ included in all copies or substantial portions of the Software.
55
+
56
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
57
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
58
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
59
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
60
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
61
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
62
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
63
+ ```
data/README.rdoc ADDED
@@ -0,0 +1,36 @@
1
+ = Cucumber notifier for autotest
2
+
3
+ This is a module for autotest that will provide notification for the results of your Cucumber features.
4
+
5
+ == Requirements
6
+
7
+ 1. Autotest (ZenTest) configured to run your Cucumber features
8
+ 2. libnotify -- This module only works on linux with the libnotify package
9
+ right now. I'll work on adding support for other notification frameworks in
10
+ the future
11
+
12
+ == Using the gem
13
+
14
+ 1. Install the gem:
15
+
16
+ $ gem install autotest-cucumber-notification
17
+
18
+ 2. Edit your .autotest to include the module. If you downloaded it to your
19
+ home folder, do something like this:
20
+
21
+ require 'rubygems'
22
+ require 'autotest-cucumber-notification'
23
+
24
+ 3. That's it. Just run Autotest with your Cucumber features like normal.
25
+
26
+ == Credits
27
+
28
+ The original code was written by Curt Hasselschwert and re-combined later by Matt Buck.
29
+ The code is largely based on the work done by carlosbrando[https://github.com/carlosbrando],
30
+ and his work on the (autotest-notification gem
31
+ (https://github.com/carlosbrando/autotest-notification),
32
+ many thanks to him.
33
+
34
+ The cool icons came from the Buuf icon set (http://mattahan.deviantart.com/art/Buuf-37966044)
35
+ by Paul Davey (http://mattahan.deviantart.com/).
36
+
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+ require "rdoc/task"
3
+
4
+ Rake::RDocTask.new do |rdoc|
5
+ rdoc.title = "Cucumber Notifier for Autotest"
6
+ rdoc.main = "README.rdoc"
7
+ rdoc.rdoc_files.include 'README.rdoc', 'LICENSE.rdoc', 'lib/**/*.rb'
8
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.expand_path("lib", File.dirname(__FILE__))
3
+ require "autotest-cucumber-notification/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "autotest-cucumber-notification"
7
+ s.version = AutotestCucumberNotification::VERSION
8
+ s.authors = ["Pavel Argentov"]
9
+ s.email = ["argentoff@gmail.com"]
10
+ s.homepage = "https://github.com/argent-smith/autotest-cucumber-notification"
11
+ s.summary = %q{Libnotify notification poster for cucumber run under autotest.}
12
+ s.description = %q{This is an autotest plugin that will notify you about the results of your Cucumber features run.}
13
+
14
+ s.extra_rdoc_files = [
15
+ "LICENSE.rdoc",
16
+ "README.rdoc"
17
+ ]
18
+
19
+ s.rdoc_options = [
20
+ '--title', 'Cucumber notifier for autotest',
21
+ '--main', 'README.rdoc'
22
+ ]
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
27
+ s.require_paths = ["lib"]
28
+
29
+ # specify any dependencies here; for example:
30
+ s.add_development_dependency "gemcutter"
31
+ s.add_runtime_dependency "cucumber"
32
+ s.add_runtime_dependency "ZenTest"
33
+ end
data/images/fail.png ADDED
Binary file
data/images/pass.png ADDED
Binary file
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ require 'autotest-cucumber-notification/version'
2
+ require 'autotest-cucumber-notification/autotest-cucumber-notification'
@@ -0,0 +1,94 @@
1
+ # Usage:: see README
2
+ module AutotestCucumberNotification
3
+
4
+ # Notifier configuration helpers and defaults.
5
+ class Config
6
+
7
+ class << self
8
+ attr_reader :images_directory
9
+ attr_accessor :success_image, :fail_image, :pending_image, :undefined_image, :expiration_in_seconds,
10
+ :failure, :success, :pending, :undefined, :fade_timeout
11
+
12
+ def images_directory=(path)
13
+ @images_directory = File.expand_path(path)
14
+ @success_image = "#{@images_directory}/pass.png"
15
+ @fail_image = "#{@images_directory}/fail.png"
16
+ @pending_image = "#{@images_directory}/pending.png"
17
+ @undefined_image = "#{@images_directory}/undefined.png"
18
+ end
19
+ end
20
+
21
+ self.images_directory = File.expand_path('../../images', File.dirname(__FILE__))
22
+ self.fade_timeout = 5000
23
+ self.failure = "Features Failure"
24
+ self.success = "Features Success"
25
+ self.pending = "Features Pending"
26
+ self.undefined = "Features Undefined"
27
+
28
+ end
29
+
30
+ Autotest.add_hook :ran_features do |at|
31
+ result = at.results.is_a?(String) ? at.results : at.results.to_s
32
+
33
+ if result
34
+ @scenarios = result[/(\d+) scenarios?/,1].to_i
35
+ @steps = result[/(\d+) steps?/,1].to_i
36
+ @scenario_stats = Hash.new
37
+ @step_stats = Hash.new
38
+
39
+ %w{ failed skipped passed pending undefined }.each do |x|
40
+ @scenario_stats.merge!({ "#{x}" => result[/\d+ scenarios?.*?(\d+) #{x}.*\)/,1].to_i })
41
+ @step_stats.merge!({ "#{x}" => result[/\d+ steps?.*?(\d+) #{x}.*\)/,1].to_i })
42
+ end
43
+
44
+ if @scenario_stats["failed"] > 0 || @step_stats["failed"] > 0
45
+ notify Config.failure, assemble_msg(@scenarios,@steps,@scenario_stats,@step_stats), Config.fail_image
46
+ elsif @scenario_stats["pending"] > 0 || @step_stats["pending"] > 0
47
+ notify Config.pending, assemble_msg(@scenarios,@steps,@scenario_stats,@step_stats), Config.pending_image
48
+ elsif @scenario_stats["undefined"] > 0 || @step_stats["undefined"] > 0
49
+ notify Config.undefined, assemble_msg(@scenarios,@steps,@scenario_stats,@step_stats), Config.undefined_image
50
+ elsif @scenario_stats["passed"] > 0 && @step_stats["passed"] > 0
51
+ notify Config.success, assemble_msg(@scenarios,@steps,@scenario_stats,@step_stats), Config.success_image
52
+ else
53
+ notify Config.failure, "Errors Ecountered", Config.fail_image
54
+ end
55
+ end
56
+ end
57
+
58
+ class << self
59
+
60
+ def notify(title, msg, img = Config.success_image)
61
+ system "notify-send -i #{img} '#{title}' '#{msg}' -t #{Config.fade_timeout}"
62
+ end
63
+
64
+ def pluralize(text, number)
65
+ "#{number} #{text}#{'s' if number != 1}"
66
+ end
67
+
68
+ def assemble_msg(scenarios, steps, scenario_stats = {}, step_stats = {})
69
+ msg = ""
70
+ if scenarios > 0
71
+ msg += "#{pluralize('scenario',scenarios)}"
72
+ msg += "\n#{stat_string(scenario_stats)}"
73
+ msg += "\n\n" if steps > 0
74
+ end
75
+ if steps > 0
76
+ msg += "#{pluralize('step',steps)}"
77
+ msg += "\n#{stat_string(step_stats)}"
78
+ end
79
+ return msg
80
+ end
81
+
82
+ def stat_string(hash)
83
+ stat_str = "("
84
+ hash.each do |key,value|
85
+ if value > 0
86
+ stat_str += "#{value} #{key},"
87
+ end
88
+ end
89
+ stat_str += ")"
90
+ stat_str.gsub!(",\)",")")
91
+ end
92
+ end
93
+
94
+ end
@@ -0,0 +1,4 @@
1
+ module AutotestCucumberNotification
2
+ # Current module version
3
+ VERSION = "0.0.2"
4
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: autotest-cucumber-notification
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Pavel Argentov
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: gemcutter
16
+ requirement: &342011000 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *342011000
25
+ - !ruby/object:Gem::Dependency
26
+ name: cucumber
27
+ requirement: &342010780 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *342010780
36
+ - !ruby/object:Gem::Dependency
37
+ name: ZenTest
38
+ requirement: &342010570 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *342010570
47
+ description: This is an autotest plugin that will notify you about the results of
48
+ your Cucumber features run.
49
+ email:
50
+ - argentoff@gmail.com
51
+ executables: []
52
+ extensions: []
53
+ extra_rdoc_files:
54
+ - LICENSE.rdoc
55
+ - README.rdoc
56
+ files:
57
+ - .gitignore
58
+ - Gemfile
59
+ - LICENSE.rdoc
60
+ - README.md
61
+ - README.rdoc
62
+ - Rakefile
63
+ - autotest-cucumber-notification.gemspec
64
+ - images/fail.png
65
+ - images/pass.png
66
+ - images/pending.png
67
+ - images/undefined.png
68
+ - lib/autotest-cucumber-notification.rb
69
+ - lib/autotest-cucumber-notification/autotest-cucumber-notification.rb
70
+ - lib/autotest-cucumber-notification/version.rb
71
+ homepage: https://github.com/argent-smith/autotest-cucumber-notification
72
+ licenses: []
73
+ post_install_message:
74
+ rdoc_options:
75
+ - --title
76
+ - Cucumber notifier for autotest
77
+ - --main
78
+ - README.rdoc
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 1.8.15
96
+ signing_key:
97
+ specification_version: 3
98
+ summary: Libnotify notification poster for cucumber run under autotest.
99
+ test_files: []
100
+ has_rdoc: