fail_fast 0.5.0 → 0.5.1

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/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