fail_fast 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +6 -0
- data/README.markdown +16 -3
- data/fail_fast.gemspec +7 -3
- data/lib/fail_fast.rb +88 -1
- data/lib/fail_fast/base/base.rb +11 -7
- data/lib/fail_fast/base/console_utils.rb +20 -0
- data/lib/fail_fast/base/utils.rb +0 -13
- data/lib/fail_fast/error_reporter.rb +7 -0
- data/lib/fail_fast/error_reporter/base.rb +40 -0
- data/lib/fail_fast/error_reporter/hoptoad.rb +34 -0
- data/lib/fail_fast/error_reporter/hoptoad/post_error_request.xml.erb +23 -0
- data/lib/fail_fast/error_reporter/stdout.rb +9 -0
- data/lib/fail_fast/report.txt.erb +9 -4
- data/lib/fail_fast/support/error_details.rb +5 -1
- data/show_all_errors.rb +5 -5
- data/spec/{fixtures → _/fixtures}/empty.yml +0 -0
- data/spec/{fixtures → _/fixtures}/simple.yml +3 -3
- data/spec/_/support/errors.rb +13 -0
- data/spec/_/support/errors_reporters.rb +3 -0
- data/spec/_/support/hoptoad.rb +7 -0
- data/spec/_/support/it_extensions.rb +126 -0
- data/spec/_/support/stdout.rb +8 -0
- data/spec/_/support/vcr.rb +11 -0
- data/spec/_/support/webmock.rb +4 -0
- data/spec/_/support/xml.rb +4 -0
- data/spec/_vcr_cassette_library/FailFast_ErrorReporter_Hoptoad/when_1_errors_occurs_in_1_block.yml +35 -0
- data/spec/_vcr_cassette_library/FailFast_ErrorReporter_Hoptoad/when_2_errors_occur_in_1_block.yml +37 -0
- data/spec/_vcr_cassette_library/FailFast_ErrorReporter_Hoptoad/when_3_errors_occur_in_2_blocks.yml +71 -0
- data/spec/_vcr_cassette_library/FailFast_ErrorReporter_Hoptoad/when_the_API_token_is_invalid.yml +67 -0
- data/spec/_vcr_cassette_library/FailFast_ErrorReporter_Hoptoad/when_the_API_token_is_valid.yml +35 -0
- data/spec/base/error_details_spec.rb +8 -0
- data/spec/error_reporter/fail_fast_spec.rb +73 -0
- data/spec/error_reporter/global_reporters_spec.rb +22 -0
- data/spec/error_reporter/hoptoad/expected_error_1_request.xml.erb +21 -0
- data/spec/error_reporter/hoptoad/expected_error_2_request.xml.erb +22 -0
- data/spec/error_reporter/hoptoad/hoptoad_activation_spec.rb +14 -0
- data/spec/error_reporter/hoptoad/hoptoad_requests_spec.rb +63 -0
- data/spec/error_reporter/hoptoad/hoptoad_responses_spec.rb +35 -0
- data/spec/error_reporter/stdout/stdout_spec.rb +24 -0
- data/spec/extensions/file_or_directory_exists_spec.rb +2 -2
- data/spec/extensions/has_url_spec.rb +3 -6
- data/spec/extensions/key_prefix_spec.rb +1 -1
- data/spec/how_to_use_spec.rb +1 -3
- data/spec/spec_helper.rb +13 -134
- metadata +120 -18
- data/lib/fail_fast/base/messaging.rb +0 -40
- data/lib/fail_fast/main.rb +0 -34
- data/spec/base/report_printing_spec.rb +0 -29
data/CHANGELOG.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
0.6.0
|
2
|
+
- report errors to Hoptoad (http://hoptoadapp.com)
|
3
|
+
ex:
|
4
|
+
FailFast.report_to :hoptoad => '<your-api-token>'
|
5
|
+
... (rest of your FF script)
|
6
|
+
|
1
7
|
0.5.2
|
2
8
|
- changed: replace Jeweler & Rubygems by Bundler
|
3
9
|
- add: all checkers methods return a success status (true/false)
|
data/README.markdown
CHANGED
@@ -109,7 +109,7 @@ If it fails, you'll get a report like this :
|
|
109
109
|
+------------------------------------------------------------------------------------------
|
110
110
|
| FAIL_FAST error : precondition(s) not met in
|
111
111
|
| -----------------
|
112
|
-
| file : "./spec/fixtures/simple.yml"
|
112
|
+
| file : "./spec/_/fixtures/simple.yml"
|
113
113
|
| keys prefix : none
|
114
114
|
+------------------------------------------------------------------------------------------
|
115
115
|
| error key value
|
@@ -123,9 +123,9 @@ If it fails, you'll get a report like this :
|
|
123
123
|
| * not_a_url test/host localhost
|
124
124
|
| * url_not_reachable test/url_not_reachable http://xxx.zzz
|
125
125
|
| * directory_not_found /foobarbaz
|
126
|
-
| * directory_not_found test/a_file ./spec/fixtures/simple.yml
|
126
|
+
| * directory_not_found test/a_file ./spec/_/fixtures/simple.yml
|
127
127
|
| * file_not_found /tmp/foo/bar/??nOTaFile
|
128
|
-
| * file_not_found test/a_directory ./spec/fixtures
|
128
|
+
| * file_not_found test/a_directory ./spec/_/fixtures
|
129
129
|
| * mongoDB_server_not_found 10.0.0.123
|
130
130
|
| * mongoDB_server_not_found test/mongoDB localhost
|
131
131
|
| * mongoDB_db_not_found not_a_known_db
|
@@ -160,6 +160,19 @@ If it fails, you'll get a report like this :
|
|
160
160
|
end
|
161
161
|
|
162
162
|
|
163
|
+
### Example 5 : also sending errors report to Hoptoad (http://hoptoadapp.com)
|
164
|
+
|
165
|
+
FailFast().check do
|
166
|
+
... # errors only reported to stdout
|
167
|
+
end
|
168
|
+
...
|
169
|
+
FailFast.report_to :hoptoad => '<your-api-token>' # <- add this in your FF script
|
170
|
+
...
|
171
|
+
FailFast().check do
|
172
|
+
... # errors also reported to your Hoptoad account
|
173
|
+
end
|
174
|
+
|
175
|
+
|
163
176
|
|
164
177
|
## Info :
|
165
178
|
|
data/fail_fast.gemspec
CHANGED
@@ -4,7 +4,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'fail_fast'
|
7
|
-
s.version = '0.
|
7
|
+
s.version = '0.6.0'
|
8
8
|
|
9
9
|
s.date = Time.now.utc.strftime("%Y-%m-%d")
|
10
10
|
s.homepage = 'http://github.com/alainravet/fail_fast'
|
@@ -23,7 +23,11 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.require_paths = %w(lib)
|
24
24
|
|
25
25
|
s.add_development_dependency 'rspec', '= 1.3.2'
|
26
|
-
s.add_development_dependency 'activerecord', '
|
26
|
+
s.add_development_dependency 'activerecord', '= 2.3.12'
|
27
27
|
s.add_development_dependency 'mongo', '>= 0'
|
28
|
-
s.add_development_dependency '
|
28
|
+
s.add_development_dependency 'webmock'
|
29
|
+
s.add_development_dependency 'bson_ext'
|
30
|
+
s.add_development_dependency 'bson_ext'
|
31
|
+
s.add_development_dependency 'timecop'
|
32
|
+
s.add_development_dependency 'vcr'
|
29
33
|
end
|
data/lib/fail_fast.rb
CHANGED
@@ -1,8 +1,95 @@
|
|
1
|
-
require '
|
1
|
+
require 'yaml'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/fail_fast/support/error_db')
|
5
|
+
class FailFast
|
6
|
+
|
7
|
+
@@_errors_db = FailFast::ErrorDb.new
|
8
|
+
@@global_error_reporters = nil
|
9
|
+
|
10
|
+
def initialize(config_file_path=nil, keys_prefix=nil)
|
11
|
+
@config_file_path = config_file_path
|
12
|
+
@keys_prefix = keys_prefix
|
13
|
+
@errors_key = ErrorDb.key_for(config_file_path, keys_prefix)
|
14
|
+
FailFast.global_error_reporters.each do |r| register_errors_reporter(r) end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
class << self
|
19
|
+
def fail_now
|
20
|
+
exit(1) unless errors_db.keys.empty?
|
21
|
+
end
|
22
|
+
|
23
|
+
def failed?
|
24
|
+
!global_errors.empty?
|
25
|
+
end
|
26
|
+
|
27
|
+
def errors_db #:nodoc:
|
28
|
+
@@_errors_db
|
29
|
+
end
|
30
|
+
|
31
|
+
# @param reporters [Object] 1 or many error reporters (must respond to :report)
|
32
|
+
def report_to(reporter)
|
33
|
+
reporter.is_a?(Hash) ?
|
34
|
+
init_global_error_reporter_from_hash(reporter) :
|
35
|
+
add_global_error_reporter(reporter)
|
36
|
+
end
|
37
|
+
|
38
|
+
def init_global_error_reporter_from_hash(params)
|
39
|
+
[].tap do |reporters|
|
40
|
+
if api_token = params.delete(:hoptoad)
|
41
|
+
r = FailFast::ErrorReporter::Hoptoad.new(api_token)
|
42
|
+
FailFast.report_to r
|
43
|
+
reporters.push(r)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def global_error_reporters
|
49
|
+
reset_global_error_reporters unless @@global_error_reporters
|
50
|
+
@@global_error_reporters
|
51
|
+
end
|
52
|
+
private
|
53
|
+
def reset_global_error_reporters
|
54
|
+
@@global_error_reporters = [ErrorReporter::Stdout.new]
|
55
|
+
end
|
56
|
+
|
57
|
+
def add_global_error_reporter(reporter)
|
58
|
+
global_error_reporters.push(reporter) unless global_error_reporters.include?(reporter)
|
59
|
+
reporter
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
def add_error(value)
|
65
|
+
@@_errors_db.append(@errors_key, value)
|
66
|
+
end
|
67
|
+
|
68
|
+
def errors
|
69
|
+
@@_errors_db.errors_for(@errors_key)
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
def error_reporters
|
75
|
+
@error_reporters ||= []
|
76
|
+
end
|
77
|
+
|
78
|
+
# @param reporters [Object] 1 or many error reporters (must respond to :report)
|
79
|
+
def register_errors_reporters(*reporters)
|
80
|
+
reporters.each do |r| register_errors_reporter(r) end
|
81
|
+
end
|
82
|
+
|
83
|
+
def register_errors_reporter(reporter)
|
84
|
+
error_reporters.push reporter unless error_reporters.include?(reporter)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
2
88
|
Dir.glob(File.dirname(__FILE__) + '/fail_fast/support/*.rb' ) {|file| require file }
|
3
89
|
Dir.glob(File.dirname(__FILE__) + '/fail_fast/base/*.rb' ) {|file| require file }
|
4
90
|
Dir.glob(File.dirname(__FILE__) + '/fail_fast/extensions/*.rb') {|file| require file }
|
5
91
|
|
92
|
+
require 'fail_fast/error_reporter'
|
6
93
|
|
7
94
|
# alternative syntax
|
8
95
|
def FailFast(config_file_path=nil, keys_prefix=nil)
|
data/lib/fail_fast/base/base.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
class FailFast
|
2
2
|
module Base
|
3
|
-
ERB_TEMPLATE = File.dirname(__FILE__) + '/../report.txt.erb'
|
4
|
-
|
5
3
|
def check(&block)
|
6
4
|
fail_now_mode = block_given? # false in the case of *.check_now.but_fail_now do .. end
|
7
5
|
|
@@ -12,7 +10,7 @@ class FailFast
|
|
12
10
|
check_all_rules(&block) if block_given?
|
13
11
|
end
|
14
12
|
unless errors.empty?
|
15
|
-
|
13
|
+
report_errors
|
16
14
|
exit(1) if fail_now_mode
|
17
15
|
end
|
18
16
|
self
|
@@ -24,7 +22,7 @@ class FailFast
|
|
24
22
|
return if @config_file_not_found
|
25
23
|
check_all_rules(&block) if block_given?
|
26
24
|
unless errors.empty?
|
27
|
-
|
25
|
+
report_errors
|
28
26
|
end
|
29
27
|
end
|
30
28
|
private
|
@@ -34,9 +32,15 @@ class FailFast
|
|
34
32
|
self.instance_eval(&block)
|
35
33
|
end
|
36
34
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
35
|
+
def report_errors #:nodoc:
|
36
|
+
context = {
|
37
|
+
:errors_to_report => errors,
|
38
|
+
:config_file_path => @config_file_path,
|
39
|
+
:keys_prefix => @keys_prefix,
|
40
|
+
}
|
41
|
+
error_reporters.each do |reporter|
|
42
|
+
reporter.report(errors, context)
|
43
|
+
end
|
40
44
|
end
|
41
45
|
end
|
42
46
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class FailFast
|
2
|
+
|
3
|
+
module ConsoleUtils #:nodoc:
|
4
|
+
|
5
|
+
NO_COLOUR="\033[0m"
|
6
|
+
RED ="\033[31m"
|
7
|
+
LRED ="\033[1;31m"
|
8
|
+
BLUE ="\033[34m"
|
9
|
+
GREEN ="\033[32m"
|
10
|
+
YELLOW ="\033[1;33m"
|
11
|
+
|
12
|
+
def red( str) [RED, str, NO_COLOUR].join end
|
13
|
+
def lred( str) [LRED, str, NO_COLOUR].join end
|
14
|
+
def blue( str) [BLUE, str, NO_COLOUR].join end
|
15
|
+
def green( str) [GREEN, str, NO_COLOUR].join end
|
16
|
+
def yellow(str) [YELLOW, str, NO_COLOUR].join end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
FailFast.send :include, FailFast::ConsoleUtils
|
data/lib/fail_fast/base/utils.rb
CHANGED
@@ -40,19 +40,6 @@ class FailFast
|
|
40
40
|
|
41
41
|
Params.new(key, value, regexp, options)
|
42
42
|
end
|
43
|
-
|
44
|
-
NO_COLOUR="\033[0m"
|
45
|
-
RED ="\033[31m"
|
46
|
-
LRED ="\033[1;31m"
|
47
|
-
BLUE ="\033[34m"
|
48
|
-
GREEN ="\033[32m"
|
49
|
-
YELLOW ="\033[1;33m"
|
50
|
-
|
51
|
-
def red( str) [RED, str, NO_COLOUR].join end
|
52
|
-
def lred( str) [LRED, str, NO_COLOUR].join end
|
53
|
-
def blue( str) [BLUE, str, NO_COLOUR].join end
|
54
|
-
def green( str) [GREEN, str, NO_COLOUR].join end
|
55
|
-
def yellow(str) [YELLOW, str, NO_COLOUR].join end
|
56
43
|
end
|
57
44
|
end
|
58
45
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module FailFast::ErrorReporter
|
2
|
+
class Base
|
3
|
+
include FailFast::ConsoleUtils
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def default_message_for(e, use_color=true)
|
8
|
+
@use_color = use_color
|
9
|
+
qc_value = "'#{vcol(e.value)}'"
|
10
|
+
qc_key = "'#{kcol(e.key)}'"
|
11
|
+
details = if e.value.nil? then " for the key #{qc_key}"
|
12
|
+
elsif e.key.nil? then " #{qc_value}"
|
13
|
+
else " #{qc_value} for the key #{qc_key}"
|
14
|
+
end
|
15
|
+
|
16
|
+
s = case e.kind
|
17
|
+
when :config_file_not_found then mcol("The config file could not be found") + " : #{yellow(e.value)}."
|
18
|
+
when :missing_value then mcol("Missing value") +" #{details}."
|
19
|
+
when :value_does_not_match then mcol("Invalid value") +" #{details}."
|
20
|
+
when :not_an_email then mcol("Invalid email address") + " #{details}."
|
21
|
+
when :not_a_url then mcol("Invalid url") + " #{details}."
|
22
|
+
when :url_not_reachable then mcol("Could not reach the url") + " #{details}."
|
23
|
+
when :directory_not_found then mcol("Missing directory") + " #{details}."
|
24
|
+
when :file_not_found then mcol("Missing file") + " #{details}."
|
25
|
+
when :not_on_path then mcol("App not on path : ") + " #{details}."
|
26
|
+
when :mongoDB_server_not_found then mcol("Could not connect to the mongoDb server") + " #{details}."
|
27
|
+
when :mongoDB_db_not_found then mcol("Could not open the mongoDb db") + " #{details}."
|
28
|
+
when :active_record_db_connection_error then mcol("Could not connect to the DB server") + " #{details}."
|
29
|
+
when :fail then mcol(e.value)
|
30
|
+
else
|
31
|
+
"%-38s %-35s %-30s \n" % [ e.kind, e.key, qc_value]
|
32
|
+
end
|
33
|
+
e.message ? "#{e.message}\n| #{s}": s
|
34
|
+
end
|
35
|
+
|
36
|
+
def mcol(msg) @use_color ? lred(msg) : msg end
|
37
|
+
def kcol(key) @use_color ? yellow(key) : key end
|
38
|
+
def vcol(val) @use_color ? yellow(val) : val end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module FailFast::ErrorReporter
|
2
|
+
class Hoptoad < Base
|
3
|
+
REQUEST_ERB_TEMPLATE = File.join(File.dirname(__FILE__), 'hoptoad', 'post_error_request.xml.erb')
|
4
|
+
|
5
|
+
attr_reader :response
|
6
|
+
|
7
|
+
def initialize(api_key)
|
8
|
+
@api_key = api_key
|
9
|
+
end
|
10
|
+
|
11
|
+
def report(errors, context)
|
12
|
+
require 'net/http'
|
13
|
+
uri = URI.parse('http://hoptoadapp.com/notifier_api/v2/notices')
|
14
|
+
@response = Net::HTTP.start(uri.host, uri.port) {|http|
|
15
|
+
req = Net::HTTP::Post.new(uri.path)
|
16
|
+
req['Content-Type'] = 'text/xml'
|
17
|
+
req['Accept' ] = 'text/xml'
|
18
|
+
http.request(req, xml_req(errors, context))
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def xml_req(errors, context)
|
24
|
+
config_path = context[:config_file_path]
|
25
|
+
project_root = '/testapp'
|
26
|
+
environment_name = 'test'
|
27
|
+
app_version = '1.0.0'
|
28
|
+
error_msg = default_message_for(errors.first, false)
|
29
|
+
|
30
|
+
ERB.new(File.read(REQUEST_ERB_TEMPLATE)).result(binding).gsub(/[\t\r\n]/,'')
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<notice version="2.0">
|
3
|
+
<api-key><%=@api_key%></api-key>
|
4
|
+
<notifier>
|
5
|
+
<name>FailFast Hoptoad Notifier</name>
|
6
|
+
<version>0.1</version>
|
7
|
+
<url>https://github.com/alainravet/fail_fast</url>
|
8
|
+
</notifier>
|
9
|
+
<error>
|
10
|
+
<class>FailFastError</class>
|
11
|
+
<message>FailFastError at <%= Time.now %></message>
|
12
|
+
<backtrace>
|
13
|
+
<% errors.each_with_index do |error, i| %>
|
14
|
+
<line method="<%= config_path %>" file="<%= default_message_for(error, false) %>" number='<%= 1+i %>'/>
|
15
|
+
<% end %>
|
16
|
+
</backtrace>
|
17
|
+
</error>
|
18
|
+
<server-environment>
|
19
|
+
<project-root><%= project_root %></project-root>
|
20
|
+
<environment-name><%= environment_name %></environment-name>
|
21
|
+
<app-version><%= app_version %></app-version>
|
22
|
+
</server-environment>
|
23
|
+
</notice>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module FailFast::ErrorReporter
|
2
|
+
class Stdout < Base
|
3
|
+
ERB_TEMPLATE = File.dirname(__FILE__) + '/../report.txt.erb'
|
4
|
+
|
5
|
+
def report(errors, context)
|
6
|
+
puts "\n\n\n" + ERB.new(File.read(FailFast::ErrorReporter::Stdout::ERB_TEMPLATE)).result(binding) + "\n\n"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -1,13 +1,18 @@
|
|
1
|
-
<%
|
1
|
+
<%
|
2
|
+
config_file_path = context[:config_file_path]
|
3
|
+
keys_prefix = context[:keys_prefix]
|
4
|
+
errors_to_report = context[:errors_to_report]
|
5
|
+
%>
|
6
|
+
<% if config_file_path %>
|
2
7
|
+------------------------------------------------------------------------------------------
|
3
8
|
| <%= lred 'FAIL_FAST error' %> : precondition(s) not met in
|
4
9
|
| -----------------
|
5
|
-
| file : "<%=
|
6
|
-
<% if
|
10
|
+
| file : "<%= config_file_path %>"
|
11
|
+
<% if keys_prefix %>| keys prefix : <%= keys_prefix.inspect %>
|
7
12
|
<% end %>+------------------------------------------------------------------------------------------
|
8
13
|
<% else %>
|
9
14
|
+------------------------------------------------------------------------------------------
|
10
15
|
| <%= lred 'FAIL_FAST error' %> : precondition(s) not met.
|
11
16
|
+------------------------------------------------------------------------------------------
|
12
|
-
<% end %>| <%=
|
17
|
+
<% end %>| <%= errors_to_report.collect{|e| default_message_for(e)}.join("\n| ") %>
|
13
18
|
+------------------------------------------------------------------------------------------
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class FailFast::ErrorDetails
|
1
|
+
class FailFast::ErrorDetails
|
2
2
|
|
3
3
|
attr_reader :key, :kind, :value, :message
|
4
4
|
|
@@ -6,6 +6,10 @@ class FailFast::ErrorDetails < Struct.new(:key, :kind, :value, :message)
|
|
6
6
|
@key, @kind, @value, @message = key, kind, value, message
|
7
7
|
end
|
8
8
|
|
9
|
+
def ==(other)
|
10
|
+
self.key == other.key && self.kind == other.kind && self.value == other.value && self.message == other.message
|
11
|
+
end
|
12
|
+
|
9
13
|
def has_key_and_kind?(akey, akind) #:nodoc:
|
10
14
|
(key.to_s == akey.to_s) && kind.to_sym == akind.to_sym
|
11
15
|
end
|
data/show_all_errors.rb
CHANGED
@@ -3,10 +3,10 @@ gem 'mongo', '1.0'
|
|
3
3
|
require 'mongo'
|
4
4
|
|
5
5
|
def fake_http_server
|
6
|
-
require '
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
require 'webmock'
|
7
|
+
stub_request(:get, "http://example.com/index.html").to_return(:body => "I'm reachable!")
|
8
|
+
stub_request(:get, "http://localhost/index.html" ).to_return(:body => "I'm reachable!")
|
9
|
+
stub_request(:get, "http://example.com" ).to_return(:body => "I'm reachable!")
|
10
10
|
end
|
11
11
|
def fake_mongo_server_absent
|
12
12
|
require 'mocha'
|
@@ -34,7 +34,7 @@ FailFast().check_now.but_fail_later do
|
|
34
34
|
fail '_why could not be found on the path' unless `which _why` =~ /_why$/
|
35
35
|
end
|
36
36
|
|
37
|
-
FailFast(SPEC_DIR + '/fixtures/simple.yml').check_now.but_fail_later do
|
37
|
+
FailFast(SPEC_DIR + '/_/fixtures/simple.yml').check_now.but_fail_later do
|
38
38
|
|
39
39
|
#test values :
|
40
40
|
has_value_for :first_keyNOT , :message => 'this is a custom message' # single absent key
|
File without changes
|
@@ -26,9 +26,9 @@ test:
|
|
26
26
|
host: localhost
|
27
27
|
database: unknown_mongoDB_db
|
28
28
|
|
29
|
-
a_directory: <%= SPEC_DIR + '/fixtures' %>
|
29
|
+
a_directory: <%= SPEC_DIR + '/_/fixtures' %>
|
30
30
|
|
31
|
-
a_file: <%= SPEC_DIR + '/fixtures/simple.yml' %>
|
31
|
+
a_file: <%= SPEC_DIR + '/_/fixtures/simple.yml' %>
|
32
32
|
|
33
33
|
db_connection:
|
34
34
|
adapter: mysql
|
@@ -36,7 +36,7 @@ db_connection:
|
|
36
36
|
|
37
37
|
number_six: 6
|
38
38
|
letter_x: x
|
39
|
-
nda_file: <%= SPEC_DIR + '/fixtures/simple.yml' %>
|
39
|
+
nda_file: <%= SPEC_DIR + '/_/fixtures/simple.yml' %>
|
40
40
|
development:
|
41
41
|
t_url: 'http://localhost:3200'
|
42
42
|
t_email: t_email@test.com
|