gem_watch 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -11,6 +11,7 @@ begin
11
11
  gem.homepage = "http://github.com/jakimowicz/gem_watch"
12
12
  gem.authors = ["Fabien Jakimowicz"]
13
13
  gem.rubyforge_project = "gemwatch"
14
+ gem.add_development_dependency "test-unit"
14
15
  gem.add_development_dependency "thoughtbot-shoulda"
15
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
17
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -1,8 +1,6 @@
1
1
  # Pure ruby requires
2
2
  require 'optparse'
3
3
  require 'net/smtp'
4
-
5
- # Gems
6
4
  require 'yaml'
7
5
 
8
6
  # Internal stuff
@@ -72,7 +70,6 @@ END_OF_MESSAGE
72
70
 
73
71
  opts.on "-e", "--email-recipient=email1, email2, ...", "Email address to send results." do |email|
74
72
  @options.email_recipients = email
75
- @options.stdout = false
76
73
  end
77
74
 
78
75
  opts.on "-s", "--email-subject=subject", "Subject used in the email." do |subject|
@@ -81,7 +78,6 @@ END_OF_MESSAGE
81
78
 
82
79
  opts.on "-f", "--email-from=email", "Email's sender." do |email|
83
80
  @options.email_recipient = email.split(',').collect {|email| email.strip}
84
- @options.stdout = false
85
81
  end
86
82
 
87
83
  opts.separator ""
@@ -122,11 +118,13 @@ END_OF_MESSAGE
122
118
  # Given a <tt>yaml</tt> object and a <tt>key</tt> string, returns the value.
123
119
  # If <tt>key</tt> contains an underscore character, it will consider each word between underscores as a subtree.
124
120
  def yaml_value(yaml, key)
121
+ yaml[key].value
122
+ rescue
125
123
  if key.include?('_')
126
124
  first_key, sep, rest = key.partition('_')
127
- yaml_value yaml[first_key], rest
125
+ yaml_value(yaml[first_key], rest) rescue nil
128
126
  else
129
- yaml[key].value rescue nil
127
+ nil
130
128
  end
131
129
  end
132
130
  end
@@ -0,0 +1,19 @@
1
+ require 'test_helper'
2
+ require 'gem_watch/check'
3
+
4
+ class CheckTest < Test::Unit::TestCase
5
+ context "an empty check" do
6
+ setup do
7
+ @check = GemWatch::Check.new
8
+ end
9
+
10
+ should "@impacts be an empty hash at initialization" do
11
+ assert_kind_of Hash, @check.impacts
12
+ assert @check.impacts.empty?
13
+ end
14
+
15
+ should "passed? returns true if @impacts is empty" do
16
+ assert @check.passed?
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,44 @@
1
+ require 'test_helper'
2
+ require 'gem_watch/command_options'
3
+
4
+ class CommandOptionsTest < Test::Unit::TestCase
5
+ context "initialize empty object" do
6
+ setup do
7
+ @options = GemWatch::CommandOptions.new
8
+ end
9
+
10
+ should "should initialize object with default values" do
11
+ GemWatch::CommandOptions::Defaults.each do |key, value|
12
+ assert_equal value, @options.send(key)
13
+ end
14
+ end
15
+
16
+ should "email_recipients= accepts an Array attribute" do
17
+ emails = ['bob@test.com', 'alice@test.com']
18
+ @options.email_recipients = emails
19
+ assert_equal emails, @options.email_recipients
20
+ end
21
+
22
+ should "email_recipients= accepts a String with only one email address" do
23
+ email = "bob@test.com"
24
+ @options.email_recipients = email
25
+ assert_equal [email], @options.email_recipients
26
+ end
27
+
28
+ should "email_recipients= accepts a String with coma separated emails" do
29
+ emails = ['bob@test.com', 'alice@test.com']
30
+ @options.email_recipients = emails.join(', ')
31
+ assert_equal emails, @options.email_recipients
32
+ end
33
+
34
+ should "stdout false if email_recipients is not empty" do
35
+ @options.email_recipients = 'bob@test.com'
36
+ assert_false @options.stdout
37
+ end
38
+
39
+ should "stdout false if email_recipients is empty" do
40
+ @options.email_recipients = ''
41
+ assert_true @options.stdout
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,60 @@
1
+ require 'test_helper'
2
+ require 'gem_watch/command'
3
+
4
+ # We must access to options in order to check them
5
+ class GemWatch::Command
6
+ attr_reader :options
7
+ end
8
+
9
+ class CommandTest < Test::Unit::TestCase
10
+
11
+ YamlData = {'stdout' => '1', 'email' => {'recipients' => 'bob@test.com, alice@test.com'}}
12
+ MinimalYamlData = {'email' => {'recipients' => 'bob@test.com'}}
13
+
14
+ context "initialize empty command object and get access to protected stuff" do
15
+ setup do
16
+ GemWatch::Command.send(:public, *GemWatch::Command.protected_instance_methods)
17
+ @command = GemWatch::Command.new
18
+ end
19
+
20
+ context "parse yaml data" do
21
+ setup do
22
+ @yaml = YAML.parse(YamlData.to_yaml)
23
+ end
24
+
25
+ should "yaml_value returns value of a yaml object if key has no underscore" do
26
+ assert_equal YamlData['stdout'], @command.yaml_value(@yaml, 'stdout')
27
+ end
28
+
29
+ should "yaml_value returns nested value if an underscore is present in key name" do
30
+ assert_equal YamlData['email']['recipients'], @command.yaml_value(@yaml, 'email_recipients')
31
+ end
32
+
33
+ should "yaml_value returns nil if key is not found" do
34
+ assert_nil @command.yaml_value(@yaml, 'boggy_key')
35
+ end
36
+ end # context "parse yaml data"
37
+
38
+ should "parse_options should set stdout to true if both email and stdout options are set" do
39
+ @command.parse_options ["--email-recipient=bob@test.com", "--stdout"]
40
+ assert_true @command.options.stdout
41
+ end
42
+
43
+ should "parse_options handle a yaml file with no check definition and use default values" do
44
+ @command.parse_options ["--config=test/minimal_yaml_data.yml"]
45
+ assert_equal ['bob@test.com'], @command.options.email_recipients
46
+ end
47
+
48
+ should "parse_options handle a complete yaml file" do
49
+ @command.parse_options ["--config=test/complete_yaml_data.yml"]
50
+ assert_equal ['admin@example.com'], @command.options.email_recipients
51
+ assert_equal "Critical update !", @command.options.email_subject
52
+ assert_equal "bob@service.com", @command.options.email_from
53
+ assert_equal "127.0.0.1", @command.options.smtp_host
54
+ assert_equal "25", @command.options.smtp_port
55
+ assert_equal "super_security, rails", @command.options.check_update_on
56
+ end
57
+
58
+ end # context "initialize empty command ..."
59
+
60
+ end
@@ -0,0 +1,11 @@
1
+ email:
2
+ recipients: admin@example.com
3
+ subject: Critical update !
4
+ from: bob@service.com
5
+
6
+ smtp:
7
+ host: 127.0.0.1
8
+ port: 25
9
+
10
+ check:
11
+ update_on: super_security, rails
@@ -0,0 +1,2 @@
1
+ email:
2
+ recipients: bob@test.com
data/test/test_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ gem 'test-unit'
2
3
  require 'test/unit'
3
4
  require 'shoulda'
4
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_watch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabien Jakimowicz
@@ -9,9 +9,19 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-20 00:00:00 +02:00
12
+ date: 2009-10-30 00:00:00 +01:00
13
13
  default_executable: gemwatch
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: test-unit
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
15
25
  - !ruby/object:Gem::Dependency
16
26
  name: thoughtbot-shoulda
17
27
  type: :development
@@ -44,10 +54,16 @@ files:
44
54
  - lib/gem_watch/checks/update.rb
45
55
  - lib/gem_watch/command.rb
46
56
  - lib/gem_watch/command_options.rb
47
- - test/gem_watch_test.rb
57
+ - test/check_test.rb
58
+ - test/command_options_test.rb
59
+ - test/command_test.rb
60
+ - test/complete_yaml_data.yml
61
+ - test/minimal_yaml_data.yml
48
62
  - test/test_helper.rb
49
63
  has_rdoc: true
50
64
  homepage: http://github.com/jakimowicz/gem_watch
65
+ licenses: []
66
+
51
67
  post_install_message:
52
68
  rdoc_options:
53
69
  - --charset=UTF-8
@@ -68,10 +84,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
84
  requirements: []
69
85
 
70
86
  rubyforge_project: gemwatch
71
- rubygems_version: 1.3.1
87
+ rubygems_version: 1.3.5
72
88
  signing_key:
73
- specification_version: 2
89
+ specification_version: 3
74
90
  summary: watch over outdated gems and send an email to notice admin.
75
91
  test_files:
76
- - test/gem_watch_test.rb
92
+ - test/check_test.rb
93
+ - test/command_options_test.rb
94
+ - test/command_test.rb
77
95
  - test/test_helper.rb
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class GemWatchTest < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end