fail_fast 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.txt CHANGED
@@ -1,6 +1,9 @@
1
- 0.5
1
+ 0.5.1
2
+ - fixed .failed? bug
3
+ - fixed key prefixes (broken in 0.5.0)
4
+ 0.5.0
2
5
  - all checkers methods accept a ':message => "CUSTOM MSG"'
3
- 0.4
6
+ 0.4.0
4
7
  - added `is_on_path`
5
8
  0.3.0
6
9
  - added value_of()
data/README.markdown CHANGED
@@ -37,9 +37,11 @@ Early in your project boot sequence insert this code :
37
37
 
38
38
  require 'fail_fast'
39
39
  FailFast("path/to/database.yml").check do
40
- has_active_record_db_for 'production'
40
+ has_active_record_db_for 'production', :message => 'The main DB cannot be reached :'
41
41
  end
42
42
 
43
+ remark : the :message part is always optional.
44
+
43
45
 
44
46
  If the DB connection fails,
45
47
  * the application will exit immediately and
@@ -53,6 +55,7 @@ If the DB connection fails,
53
55
  +------------------------------------------------------------------------------------------
54
56
  | error key value
55
57
  +------------------------------------------------------------------------------------------
58
+ | The main DB cannot be reached :
56
59
  | * active_record_db_connection_error production Unknown database 'a_db'
57
60
  +------------------------------------------------------------------------------------------
58
61
 
@@ -79,7 +82,7 @@ If you want to collect and report all the errors before exiting, use `check_now.
79
82
  has_url_for 'bug_tracker/url', :reachable => true
80
83
  end
81
84
 
82
- directory_exists_for '/tmp'
85
+ directory_exists_for '/tmp', :message => 'the log '
83
86
  file_exists_for 'public/nda.pdf'
84
87
 
85
88
  skip_if Rails.env.development? do
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.5.1
data/fail_fast.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fail_fast}
8
- s.version = "0.5.0"
8
+ s.version = "0.5.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alain Ravet"]
12
- s.date = %q{2010-07-28}
12
+ s.date = %q{2010-07-29}
13
13
  s.description = %q{raises an error if the yaml contents of a config file does not pass a test script.}
14
14
  s.email = %q{alainravet@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -59,6 +59,7 @@ Gem::Specification.new do |s|
59
59
  "spec/extensions/check_mongo_db_spec.rb",
60
60
  "spec/extensions/check_url_spec.rb",
61
61
  "spec/extensions/check_value_spec.rb",
62
+ "spec/extensions/key_prefix_spec.rb",
62
63
  "spec/fixtures/empty.yml",
63
64
  "spec/fixtures/simple.yml",
64
65
  "spec/how_to_use_spec.rb",
@@ -86,6 +87,7 @@ Gem::Specification.new do |s|
86
87
  "spec/extensions/check_mongo_db_spec.rb",
87
88
  "spec/extensions/check_url_spec.rb",
88
89
  "spec/extensions/check_value_spec.rb",
90
+ "spec/extensions/key_prefix_spec.rb",
89
91
  "spec/how_to_use_spec.rb",
90
92
  "spec/spec_helper.rb"
91
93
  ]
@@ -30,12 +30,12 @@ class FailFast
30
30
  # has_active_record_db_for 'production/database'
31
31
  # has_active_record_db_for 'production/database', :message => 'custom message'
32
32
  #
33
- def has_active_record_db_for(key, *params)
34
- p = key_value_regexp_options(key, params)
33
+ def has_active_record_db_for(raw_key, *params)
34
+ p = key_value_regexp_options(raw_key, params)
35
35
  key, options = p.key, p.options
36
- return unless has_value_for key , :message => options[:message]
37
- return unless has_value_for "#{key}/adapter" , :message => options[:message]
38
- return unless has_value_for "#{key}/database", :message => options[:message]
36
+ return unless has_value_for raw_key , :message => options[:message]
37
+ return unless has_value_for "#{raw_key}/adapter" , :message => options[:message]
38
+ return unless has_value_for "#{raw_key}/database", :message => options[:message]
39
39
 
40
40
  begin
41
41
  connection_options = p.value
@@ -4,11 +4,11 @@ class FailFast
4
4
  # Usage
5
5
  # has_email_for 'test/admin_email'
6
6
  #
7
- def has_email_for(key, *params)
8
- p = key_value_regexp_options(key, params)
7
+ def has_email_for(raw_key, *params)
8
+ p = key_value_regexp_options(raw_key, params)
9
9
  key, options = p.key, p.options
10
10
 
11
- return unless has_value_for key, :message => options[:message]
11
+ return unless has_value_for raw_key, :message => options[:message]
12
12
 
13
13
  value = value_for_deep_key(key)
14
14
  if EmailValidator.invalid_email_address?(value)
@@ -31,11 +31,11 @@ class FailFast
31
31
  # directory_exists_for 'foo/config'
32
32
  # directory_exists_for 'foo/config', :message => 'custom message'
33
33
  #
34
- def directory_exists_for(key, *params)
35
- p = key_value_regexp_options(key, params)
34
+ def directory_exists_for(raw_key, *params)
35
+ p = key_value_regexp_options(raw_key, params)
36
36
  key, options = p.key, p.options
37
37
 
38
- return unless has_value_for key, :message => options[:message]
38
+ return unless has_value_for raw_key, :message => options[:message]
39
39
 
40
40
  path = value_for_deep_key(key)
41
41
  unless File.exists?(path) && File.directory?(path)
@@ -49,11 +49,11 @@ class FailFast
49
49
  # file_exists_for 'foo/config/app.yml'
50
50
  # file_exists_for 'foo/config/app.yml', :message => 'custom message'
51
51
  #
52
- def file_exists_for(key, *params)
53
- p = key_value_regexp_options(key, params)
52
+ def file_exists_for(raw_key, *params)
53
+ p = key_value_regexp_options(raw_key, params)
54
54
  key, options = p.key, p.options
55
55
 
56
- return unless has_value_for key, :message => options[:message]
56
+ return unless has_value_for raw_key, :message => options[:message]
57
57
 
58
58
  path = value_for_deep_key(key)
59
59
  unless File.exists?(path) && File.file?(path)
@@ -10,10 +10,10 @@ class FailFast
10
10
  # (ex: http://example.com + http://example.com/)
11
11
  # has_url_for 'test/server_url', :reachable => true, :may_add_trailing_slash => true
12
12
  #
13
- def has_url_for(key, *params)
14
- p = key_value_regexp_options(key, params)
13
+ def has_url_for(raw_key, *params)
14
+ p = key_value_regexp_options(raw_key, params)
15
15
  key, options = p.key, p.options
16
- return unless has_value_for key, :message => options[:message]
16
+ return unless has_value_for raw_key, :message => options[:message]
17
17
 
18
18
  value = value_for_deep_key(key)
19
19
  if UrlValidator.invalid_url?(value)
@@ -1,6 +1,6 @@
1
1
  # ONLY USED BY TESTS !!
2
2
  class FailFast::ErrorDb
3
3
  def global_data
4
- errors_for(@@hash.keys.first)
4
+ @@hash.keys.collect {|key|errors_for(key)}.flatten
5
5
  end
6
6
  end
data/show_all_errors.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ gem 'mongo', '1.0'
2
3
  require 'mongo'
3
4
 
4
5
  def fake_http_server
@@ -47,3 +47,21 @@ describe "skip_if" do
47
47
  end
48
48
  }
49
49
  end
50
+
51
+ describe 'failed?' do
52
+ example "is false when there are no errors" do
53
+ FailFast(SIMPLE_FILE_PATH ).check_now.but_fail_later {}
54
+ FailFast.failed?.should be_false
55
+ end
56
+
57
+ example "is true when there is 1 block and 1 error" do
58
+ FailFast(UNKNOWN_FILE_PATH).check_now.but_fail_later {} # <-- 1 error here
59
+ FailFast.failed?.should be_true
60
+ end
61
+
62
+ example "is true when the error block is followed by and error-free empty file block (BUG FIX)" do
63
+ FailFast(UNKNOWN_FILE_PATH).check_now.but_fail_later {} # <-- 1 error here
64
+ FailFast(EMPTY_FILE_PATH ).check_now.but_fail_later {} #no errors in the last block
65
+ FailFast.failed?.should be_true
66
+ end
67
+ end
@@ -4,8 +4,9 @@ describe 'has_url_for()' do
4
4
  before(:all) do
5
5
  FakeWeb.register_uri(:get, "http://example.com/index.html", :body => "I'm reachable!")
6
6
  FakeWeb.register_uri(:get, "http://localhost/index.html" , :body => "I'm reachable!")
7
- FakeWeb.register_uri(:get, "http://example.com" , :body => "I'm reachable!")
8
- end
7
+ FakeWeb.register_uri(:get, "http://localhost/index.html" , :body => "I'm reachable!")
8
+ FakeWeb.register_uri(:get, "http://localhost:3200" , :body => "I'm reachable!")
9
+ end
9
10
 
10
11
  it_should_not_raise_an_error('when the value is an url') { has_url_for 'test/url' }
11
12
  it_should_not_raise_an_error("when the domain is 'localhost'") { has_url_for 'test/url_localhost' }
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe 'the key prefix' do
4
+
5
+ example 'works fine in all the checkers' do
6
+ FakeWeb.register_uri(:get, "http://localhost:3200" , :body => "I'm reachable!")
7
+
8
+ conn = Mongo::Connection.new
9
+ conn.should_receive(:database_names).any_number_of_times.and_return %w(sample_mongoDB)
10
+ Mongo::Connection.should_receive(:new).and_return(conn)
11
+
12
+ arconn = Object.new
13
+ arconn.should_receive(:active?).and_return(true)
14
+ ActiveRecord::Base.should_receive(:connection).and_return(arconn)
15
+
16
+ FailFast(SIMPLE_FILE_PATH, 'test').check do
17
+ has_value_for 'email'
18
+ has_email_for 'email'
19
+ has_url_for 'url'
20
+ directory_exists_for 'a_directory'
21
+ file_exists_for 'a_file'
22
+ has_mongoDB 'mongoDB'
23
+ has_active_record_db_for 'db_connection'
24
+ is_on_path_for 'app_on_path'
25
+ end
26
+ end
27
+ end
@@ -4,12 +4,16 @@ last_key: dernier
4
4
  app_on_path: ls
5
5
  app_not_on_path: ls0123
6
6
  test:
7
+ app_on_path: ls
7
8
  host: localhost
8
9
  url: http://example.com/index.html
9
10
  url_localhost: http://localhost/index.html
10
11
  email: test@example.com
11
12
  url_reachable: http://example.com
12
13
  url_not_reachable: http://xxx.zzz
14
+ db_connection:
15
+ adapter: mysql
16
+ database: a_db
13
17
  mongoDB:
14
18
  host: localhost
15
19
  database: sample_mongoDB
@@ -32,4 +36,7 @@ db_connection:
32
36
 
33
37
  number_six: 6
34
38
  letter_x: x
35
- nda_file: <%= SPEC_DIR + '/fixtures/simple.yml' %>
39
+ nda_file: <%= SPEC_DIR + '/fixtures/simple.yml' %>
40
+ development:
41
+ t_url: 'http://localhost:3200'
42
+ t_email: t_email@test.com
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,7 @@ require 'fail_fast'
3
3
  require 'spec'
4
4
  require 'spec/autorun'
5
5
  require 'fakeweb'
6
+ gem 'mongo', '1.0'
6
7
  require 'mongo'
7
8
 
8
9
  SPEC_DIR = File.dirname(File.expand_path(__FILE__))
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fail_fast
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 0
10
- version: 0.5.0
9
+ - 1
10
+ version: 0.5.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alain Ravet
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-28 00:00:00 +02:00
18
+ date: 2010-07-29 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -114,6 +114,7 @@ files:
114
114
  - spec/extensions/check_mongo_db_spec.rb
115
115
  - spec/extensions/check_url_spec.rb
116
116
  - spec/extensions/check_value_spec.rb
117
+ - spec/extensions/key_prefix_spec.rb
117
118
  - spec/fixtures/empty.yml
118
119
  - spec/fixtures/simple.yml
119
120
  - spec/how_to_use_spec.rb
@@ -169,5 +170,6 @@ test_files:
169
170
  - spec/extensions/check_mongo_db_spec.rb
170
171
  - spec/extensions/check_url_spec.rb
171
172
  - spec/extensions/check_value_spec.rb
173
+ - spec/extensions/key_prefix_spec.rb
172
174
  - spec/how_to_use_spec.rb
173
175
  - spec/spec_helper.rb