rspec-nagios-formatter 0.0.3 → 0.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b72496752c108b2f355a8f5368425e3eb2cbc48
4
- data.tar.gz: fd03b3be2958a68fe30797d394f42b9d8a45fb1c
3
+ metadata.gz: 4240c25f93392c262ce1fb69d05cfb483b1b6075
4
+ data.tar.gz: 4ce8435fc6d4de3424de10c1e680175900fa5bea
5
5
  SHA512:
6
- metadata.gz: 68e4276d41375c06a5bec19e0f4a821c6dd63962524a195bdd02a19424373dfc98e064ccde41284e2201cc1e06d3183f62679aad20331a8f3d7b0f9aceac290b
7
- data.tar.gz: ffe8f0b808867c264b8e3d82043768129b0c0f2c8ea2e59d84d9d7e1d48c9a0c153b7b62aee4d1348a2555568418b3e94f161037755f5fcc486ac179ec5676bc
6
+ metadata.gz: 6f95fe8a95ab32fa17e5dbeb562ed5693e69fc537c02e3c7d9f23c07c53c1c78164e50c57da095dcbe0415101dbc54afea752cf061e65f3b75abbe66a27b69c6
7
+ data.tar.gz: f547a3190089bba1938f4ad834c82ddc442a1a592137a742ff86fc5cd35c834cf23bd1126ae04c1abc41030323d13d5a67692b4004d8d945c916a4a50ecbe19c
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ Gemfile.lock
4
4
  *.orig
5
5
  *.rej
6
6
  *.patch
7
+ tmp/aruba/
@@ -3,5 +3,6 @@ rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
5
  - 2.0.0
6
+ script: "rake spec features"
6
7
  notifications:
7
8
  email: false
data/README.md CHANGED
@@ -25,6 +25,24 @@ Install
25
25
  Usage
26
26
  -----
27
27
 
28
+ The formatter may be used by either passing the `-f|--format` flag to `rspec` or with the included `check_rspec` script. The later sets the appropriate exit status for a failing Nagios/Icinga plugin.
29
+
30
+ ### `check_rspec`
31
+
32
+ Usage: check_rspec [options] [--] [passed to rspec]
33
+
34
+ Specific options:
35
+ -t, --timeout TIMEOUT default: 30.0 (seconds)
36
+ -h, --help Show this message
37
+
38
+ Any options to `check_rspec` not prefixed with `-` or `--` are passed directly
39
+ on to the `rspec` utility. If you need to pass an option flag you may
40
+ terminated `check_rspec`'s option parsing with a bare `--`.
41
+
42
+ check_rspec -- -e 'foo' trivial_spec.rb
43
+
44
+ ### `rspec`
45
+
28
46
  rspec -f RSpec::Nagios::Formatter
29
47
 
30
48
  See the documentation on [rspec --format](https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/command-line/format-option)
@@ -55,3 +73,10 @@ Support
55
73
  -------
56
74
 
57
75
  Please log tickets and issues at [github](https://github.com/jhoblitt/rspec-nagios-formatter)
76
+
77
+ See Also
78
+ --------
79
+
80
+ * [cucumber-nagios](http://auxesis.github.io/cucumber-nagios/)
81
+ * [RSpec](https://github.com/rspec/rspec)
82
+ * [Icinga Plugins](http://docs.icinga.org/latest/en/plugins.html)
data/Rakefile CHANGED
@@ -6,3 +6,10 @@ RSpec::Core::RakeTask.new(:spec)
6
6
  task :default => [
7
7
  :spec,
8
8
  ]
9
+
10
+ require 'cucumber'
11
+ require 'cucumber/rake/task'
12
+ Cucumber::Rake::Task.new(:features) do |t|
13
+ t.cucumber_opts = "features --format pretty -x"
14
+ t.fork = false
15
+ end
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'open3'
5
+ require 'timeout'
6
+
7
+ EXIT_CRITICAL = 2
8
+
9
+ options = { :timeout => 30.0 }
10
+ option_parser = OptionParser.new do |opts|
11
+ opts.banner = "Usage: check_rspec [options] [--] [passed to rspec]"
12
+ opts.separator ""
13
+ opts.separator "Specific options:"
14
+
15
+ opts.on("-t", "--timeout TIMEOUT", "default: 30.0 (seconds)", Float) do |t|
16
+ options[:timeout] = t
17
+ end
18
+
19
+ opts.on_tail("-h", "--help", "Show this message") do
20
+ puts opts
21
+ exit
22
+ end
23
+ end
24
+
25
+ option_parser.parse!
26
+
27
+ cmd = ['rspec', '--format', 'RSpec::Nagios::Formatter', ARGV]
28
+ cmd_stdout, cmd_stderr, cmd_status = nil
29
+
30
+ begin
31
+ Timeout::timeout(options[:timeout]) {
32
+ cmd_stdout, cmd_stderr, cmd_status = Open3.capture3(cmd.join(' '))
33
+ }
34
+ rescue Timeout::Error
35
+ puts "RSPEC Critical - timeout after #{options[:timeout]} seconds"
36
+ exit EXIT_CRITICAL
37
+ end
38
+
39
+ puts cmd_stdout
40
+ unless cmd_status.exitstatus == 0
41
+ exit EXIT_CRITICAL
42
+ end
@@ -0,0 +1,96 @@
1
+ Feature: command line options
2
+ In order to modifiy the behavior of check_rspec
3
+ As an Icinga administrator
4
+ I want to be able to set command line options
5
+
6
+ Scenario: run a passing rspec test
7
+ Given a file named "trivial_spec.rb" with:
8
+ """
9
+ describe do
10
+ it { true.should == true }
11
+ end
12
+ """
13
+ When I successfully run `check_rspec trivial_spec.rb`
14
+ Then the stdout should contain:
15
+ """
16
+ RSPEC OK
17
+ """
18
+
19
+ Scenario: run a failing rspec test
20
+ Given a file named "trivial_spec.rb" with:
21
+ """
22
+ describe do
23
+ it { true.should == false }
24
+ end
25
+ """
26
+ When I run `check_rspec trivial_spec.rb`
27
+ Then the exit status should be 2
28
+ And the stdout should contain:
29
+ """
30
+ RSPEC Critical
31
+ """
32
+
33
+ Scenario: run a test with --timeout
34
+ Given a file named "trivial_spec.rb" with:
35
+ """
36
+ describe do
37
+ it { true.should == true }
38
+ end
39
+ """
40
+ When I successfully run `check_rspec --timeout 1 trivial_spec.rb`
41
+ Then the stdout should contain:
42
+ """
43
+ RSPEC OK
44
+ """
45
+
46
+ Scenario: run a test with --timeout that times out
47
+ Given a file named "trivial_spec.rb" with:
48
+ """
49
+ describe do
50
+ it { sleep(1) }
51
+ end
52
+ """
53
+ When I run `check_rspec --timeout 0.5 trivial_spec.rb`
54
+ Then the exit status should be 2
55
+ And the stdout should contain:
56
+ """
57
+ RSPEC Critical - timeout after 0.5 seconds
58
+ """
59
+
60
+ Scenario: view usage with -h
61
+ When I successfully run `check_rspec -h`
62
+ And the stdout should contain:
63
+ """
64
+ Usage: check_rspec [options] [--] [passed to rspec]
65
+
66
+ Specific options:
67
+ -t, --timeout TIMEOUT default: 30.0 (seconds)
68
+ -h, --help Show this message
69
+ """
70
+
71
+ Scenario: view usage with --help
72
+ When I successfully run `check_rspec --help`
73
+ And the stdout should contain:
74
+ """
75
+ Usage: check_rspec [options] [--] [passed to rspec]
76
+
77
+ Specific options:
78
+ -t, --timeout TIMEOUT default: 30.0 (seconds)
79
+ -h, --help Show this message
80
+ """
81
+
82
+ Scenario: pass options to rspec
83
+ Given a file named "trivial_spec.rb" with:
84
+ """
85
+ describe 'foo' do
86
+ it { true.should == true }
87
+ end
88
+ describe 'bar' do
89
+ it { true.should == true }
90
+ end
91
+ """
92
+ When I successfully run `check_rspec -- -e 'foo' trivial_spec.rb`
93
+ Then the stdout should contain:
94
+ """
95
+ RSPEC OK - 1 example
96
+ """
@@ -0,0 +1,31 @@
1
+ Feature: run rspec tests
2
+ In order to monitor the enviroment
3
+ As an Icinga administrator
4
+ I want to get RSpec test results in Icinga plugin format
5
+
6
+ Scenario: run a passing rspec test
7
+ Given a file named "trivial_spec.rb" with:
8
+ """
9
+ describe do
10
+ it { true.should == true }
11
+ end
12
+ """
13
+ When I successfully run `check_rspec trivial_spec.rb`
14
+ Then it should pass with regexp:
15
+ """
16
+ ^RSPEC OK - 1 example, 0 failures, finished in 0.\d+ seconds | examples=1 passing=1 failures=0 pending=0 conformance=100% time=0.\d+s$
17
+ """
18
+
19
+ Scenario: run a failing rspec test
20
+ Given a file named "trivial_spec.rb" with:
21
+ """
22
+ describe do
23
+ it { true.should == false }
24
+ end
25
+ """
26
+ When I run `check_rspec trivial_spec.rb`
27
+ Then the exit status should be 2
28
+ And it should fail with regexp:
29
+ """
30
+ ^RSPEC Critical - 1 example, 1 failures, finished in 0.\d+ seconds | examples=1 passing=0 failures=1 pending=0 conformance=0% time=0.\d+s$
31
+ """
@@ -0,0 +1 @@
1
+ require 'aruba/cucumber'
@@ -14,17 +14,16 @@ class RSpec::Nagios::Formatter < RSpec::Core::Formatters::BaseFormatter
14
14
  def summary_line(duration, example_count, failure_count, pending_count)
15
15
  passing_count = example_count - failure_count
16
16
  # conformance is expressed as a percentage
17
- # if example_count is zero we need to aviod div by 0
17
+ # if example_count is zero we need to avoid div by 0
18
18
  if example_count > 0
19
19
  conformance = passing_count / example_count.to_f
20
20
  conformance *= 100
21
- #conformance = "%.2f" % conformance
22
21
  conformance = conformance.round(0)
23
22
  else
24
23
  conformance = 0
25
24
  end
26
25
  # limit duration precision to microseconds
27
- time = duration.round(6)
26
+ time = duration.round(6)
28
27
 
29
28
  summary = 'RSPEC'
30
29
  if failure_count == 0
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Nagios
3
- VERSION = '0.0.3'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
@@ -18,10 +18,11 @@ Gem::Specification.new do |s|
18
18
  s.add_development_dependency("rspec-expectations", ">= 2.0.0")
19
19
  s.add_development_dependency("rspec-mocks", ">= 2.0.0")
20
20
  s.add_development_dependency("rake", ">= 10.0.0")
21
+ s.add_development_dependency('aruba', '~> 0.4.6')
21
22
 
22
23
  s.rubygems_version = ">= 1.6.1"
23
24
  s.files = `git ls-files`.split("\n")
24
25
  s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
25
- # s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
27
  s.require_path = "lib"
27
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-nagios-formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Hoblitt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-07 00:00:00.000000000 Z
11
+ date: 2013-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-core
@@ -80,10 +80,25 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 10.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: aruba
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.4.6
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.6
83
97
  description: A RSpec formatter for the Nagios/Icinga plugin format
84
98
  email:
85
99
  - jhoblitt@cpan.org
86
- executables: []
100
+ executables:
101
+ - check_rspec
87
102
  extensions: []
88
103
  extra_rdoc_files: []
89
104
  files:
@@ -93,6 +108,10 @@ files:
93
108
  - LICENSE
94
109
  - README.md
95
110
  - Rakefile
111
+ - bin/check_rspec
112
+ - features/check_rspec/options.feature
113
+ - features/check_rspec/run.feature
114
+ - features/support/env.rb
96
115
  - lib/rspec/nagios.rb
97
116
  - lib/rspec/nagios/formatter.rb
98
117
  - lib/rspec/nagios/version.rb
@@ -126,6 +145,9 @@ signing_key:
126
145
  specification_version: 4
127
146
  summary: A RSpec formatter for the Nagios/Icinga plugin format
128
147
  test_files:
148
+ - features/check_rspec/options.feature
149
+ - features/check_rspec/run.feature
150
+ - features/support/env.rb
129
151
  - spec/rspec_nagios_formatter_spec.rb
130
152
  - spec/shim_spec.rb
131
153
  - spec/spec_helper.rb