mirage 2.0.0.alpha3 → 2.0.0.alpha4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -2
- data/VERSION +1 -1
- data/bin/mirage +1 -1
- data/features/client/clear.feature +1 -1
- data/features/client/mirage_client.feature +1 -1
- data/features/client/{set.feature → put.feature} +20 -11
- data/features/client/{track.feature → request.feature} +2 -2
- data/features/client/{peek.feature → response.feature} +12 -12
- data/features/client/save_and_revert.feature +1 -1
- data/features/server/prime.feature +5 -5
- data/features/server/requests/delete.feature +46 -0
- data/features/server/requests/get.feature +32 -0
- data/features/server/templates/delete.feature +47 -0
- data/features/server/{peek.feature → templates/get.feature} +0 -0
- data/features/server/{set.feature → templates/put/put.feature} +29 -19
- data/features/server/{set_default_response.feature → templates/put/put_as_default.feature} +1 -1
- data/features/server/{set_with_a_delay.feature → templates/put/put_with_delay.feature} +0 -0
- data/features/server/{set_with_a_pattern.feature → templates/put/put_with_pattern.feature} +14 -1
- data/features/server/{response_templates.feature → templates/put/put_with_substitutions.feature} +0 -0
- data/features/step_definitions/my_steps.rb +15 -15
- data/features/support/env.rb +1 -1
- data/lib/mirage/client.rb +21 -17
- data/lib/mirage/core.rb +12 -3
- data/lib/mirage/server.rb +17 -0
- data/lib/mirage/web.rb +4 -4
- data/lib/start_mirage.rb +12 -17
- data/mirage.gemspec +32 -25
- metadata +41 -51
- data/features/server/clear.feature +0 -93
- data/features/server/track_requests.feature +0 -71
- data/lib/mirage.rb +0 -18
@@ -1,4 +1,4 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: A template can be configure as the default response for when there is no response found for a sub url.
|
2
2
|
I.e.
|
3
3
|
if a response is held for 'level1' and request comes in for 'level1/level2' the response for 'level1'
|
4
4
|
can be returned if nothing is held for 'level1/level2'
|
File without changes
|
@@ -3,6 +3,9 @@ Feature: Mirage can be configured to return particular responses conditionally b
|
|
3
3
|
|
4
4
|
Patterns can be either plain text or a regular expression
|
5
5
|
|
6
|
+
A response with a pattern is not considered the same a response at the same address that has either no pattern or a diffferent one.
|
7
|
+
This allows you to specify different behaviour depending on the request.
|
8
|
+
|
6
9
|
Background: There is already a default response for 'greeting'
|
7
10
|
Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Stranger' and headers:
|
8
11
|
| X-mirage-method | POST |
|
@@ -64,4 +67,14 @@ Feature: Mirage can be configured to return particular responses conditionally b
|
|
64
67
|
</greetingRequest>
|
65
68
|
"""
|
66
69
|
|
67
|
-
Then 'Hello Stranger' should be returned
|
70
|
+
Then 'Hello Stranger' should be returned
|
71
|
+
|
72
|
+
Scenario: Templates with different patterns on the same address
|
73
|
+
When I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Leon, how are you?' and headers:
|
74
|
+
| X-mirage-pattern | 2 |
|
75
|
+
|
76
|
+
When I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Leon, how are you?' and headers:
|
77
|
+
| X-mirage-pattern | 3 |
|
78
|
+
Then '3' should be returned
|
79
|
+
|
80
|
+
|
data/features/server/{response_templates.feature → templates/put/put_with_substitutions.feature}
RENAMED
File without changes
|
@@ -24,7 +24,7 @@ end
|
|
24
24
|
|
25
25
|
|
26
26
|
Then /^mirage should be running on '(.*)'$/ do |url|
|
27
|
-
|
27
|
+
http_get(url).code.to_i.should == 200
|
28
28
|
end
|
29
29
|
|
30
30
|
Given /^I run '(.*)'$/ do |command|
|
@@ -42,7 +42,7 @@ end
|
|
42
42
|
|
43
43
|
Then /^Connection should be refused to '(.*)'$/ do |url|
|
44
44
|
begin
|
45
|
-
|
45
|
+
http_get(url)
|
46
46
|
fail "Mirage is still running"
|
47
47
|
rescue Errno::ECONNREFUSED
|
48
48
|
end
|
@@ -80,10 +80,10 @@ When /^I send (POST|PUT) to '(http:\/\/localhost:7001\/mirage\/(.*?))' with requ
|
|
80
80
|
@response = case method
|
81
81
|
when 'POST'
|
82
82
|
then
|
83
|
-
|
83
|
+
http_post(url, entity)
|
84
84
|
when 'PUT'
|
85
85
|
then
|
86
|
-
|
86
|
+
http_put(url, entity)
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
@@ -91,17 +91,17 @@ When /^I send (GET|PUT|POST|OPTIONS|HEAD|DELETE) to '(http:\/\/localhost:7001\/m
|
|
91
91
|
start_time = Time.now
|
92
92
|
@response = case method
|
93
93
|
when 'GET' then
|
94
|
-
|
94
|
+
http_get(url)
|
95
95
|
when 'PUT' then
|
96
|
-
|
96
|
+
http_put(url, '')
|
97
97
|
when 'POST' then
|
98
|
-
|
98
|
+
http_post(url, '')
|
99
99
|
when 'HEAD' then
|
100
|
-
|
100
|
+
http_head(url)
|
101
101
|
when 'OPTIONS' then
|
102
|
-
|
102
|
+
http_options(url)
|
103
103
|
when 'DELETE' then
|
104
|
-
|
104
|
+
http_delete(url)
|
105
105
|
end
|
106
106
|
@response_time = Time.now - start_time
|
107
107
|
end
|
@@ -109,7 +109,7 @@ end
|
|
109
109
|
|
110
110
|
When /^I send PUT to '(http:\/\/localhost:7001\/mirage\/([^']*))' with body '([^']*)'$/ do |url, endpoint, body|
|
111
111
|
start_time = Time.now
|
112
|
-
@response =
|
112
|
+
@response = http_put(url, body)
|
113
113
|
@response_time = Time.now - start_time
|
114
114
|
end
|
115
115
|
|
@@ -119,7 +119,7 @@ When /^I send PUT to '(http:\/\/localhost:7001\/mirage\/([^']*))' with body '([^
|
|
119
119
|
parameter, value = row[0], row[1]
|
120
120
|
headers[parameter]=value
|
121
121
|
end
|
122
|
-
@response =
|
122
|
+
@response = http_put(url, body, headers)
|
123
123
|
end
|
124
124
|
|
125
125
|
Then /^I should see '(.*?)' on the command line$/ do |content|
|
@@ -158,9 +158,9 @@ When /^I send (GET|POST) to '(http:\/\/localhost:7001\/mirage\/(.*?))' with para
|
|
158
158
|
|
159
159
|
@response = case http_method
|
160
160
|
when 'POST' then
|
161
|
-
|
161
|
+
http_post(url, parameters)
|
162
162
|
when 'GET' then
|
163
|
-
|
163
|
+
http_get(url, parameters)
|
164
164
|
end
|
165
165
|
end
|
166
166
|
|
@@ -174,7 +174,7 @@ Given /^I send PUT to '(http:\/\/localhost:7001\/mirage\/(.*?))' with file: ([^'
|
|
174
174
|
parameter, value = row[0], row[1]
|
175
175
|
headers[parameter]=value
|
176
176
|
end
|
177
|
-
|
177
|
+
http_put(url, File.new(path), headers)
|
178
178
|
end
|
179
179
|
|
180
180
|
When /^the response '([^']*)' should be '([^']*)'$/ do |header, value|
|
data/features/support/env.rb
CHANGED
data/lib/mirage/client.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}"
|
1
2
|
require 'uri'
|
2
3
|
require 'open-uri'
|
3
|
-
require '
|
4
|
+
require 'util'
|
5
|
+
require 'web'
|
4
6
|
|
5
7
|
module Mirage
|
6
8
|
|
@@ -15,7 +17,7 @@ module Mirage
|
|
15
17
|
|
16
18
|
class Response
|
17
19
|
|
18
|
-
attr_accessor :method, :pattern, :content_type
|
20
|
+
attr_accessor :method, :pattern, :content_type, :default
|
19
21
|
|
20
22
|
end
|
21
23
|
|
@@ -46,7 +48,7 @@ module Mirage
|
|
46
48
|
# Client.set('greeting', 'hello', :pattern => /regexp/)
|
47
49
|
# Client.set('greeting', 'hello', :pattern => 'text')
|
48
50
|
# Client.set('greeting', 'hello', :delay => 5) # number of seconds
|
49
|
-
def
|
51
|
+
def put endpoint, response_value, params={}
|
50
52
|
response = Response.new
|
51
53
|
|
52
54
|
yield response if block_given?
|
@@ -55,15 +57,16 @@ module Mirage
|
|
55
57
|
headers['X-mirage-method'] = response.method.to_s if response.method
|
56
58
|
|
57
59
|
headers['X-mirage-pattern'] = response.pattern if response.pattern
|
60
|
+
headers['X-mirage-default'] = 'true' if response.default
|
58
61
|
headers['Content-Type'] = response.content_type || 'text/plain'
|
59
62
|
|
60
|
-
|
63
|
+
build_response(http_put("#{@url}/templates/#{endpoint}",response_value, headers))
|
61
64
|
end
|
62
65
|
|
63
66
|
# Use to look at what a response contains without actually triggering it.
|
64
67
|
# Client.peek(response_id) => response held on the server as a String
|
65
|
-
def
|
66
|
-
response =
|
68
|
+
def response response_id
|
69
|
+
response = build_response(http_get("#{@url}/templates/#{response_id}"))
|
67
70
|
case response
|
68
71
|
when String then
|
69
72
|
return response
|
@@ -86,14 +89,14 @@ module Mirage
|
|
86
89
|
|
87
90
|
case thing
|
88
91
|
when :requests
|
89
|
-
|
92
|
+
http_delete("#{@url}/requests")
|
90
93
|
when Numeric then
|
91
|
-
|
94
|
+
http_delete("#{@url}/templates/#{thing}")
|
92
95
|
when Hash then
|
93
96
|
puts "deleteing request #{thing[:request]}"
|
94
|
-
|
97
|
+
http_delete("#{@url}/requests/#{thing[:request]}") if thing[:request]
|
95
98
|
else NilClass
|
96
|
-
|
99
|
+
http_delete("#{@url}/templates")
|
97
100
|
end
|
98
101
|
|
99
102
|
end
|
@@ -104,27 +107,27 @@ module Mirage
|
|
104
107
|
#
|
105
108
|
# Example:
|
106
109
|
# Client.new.track(response_id) => Tracked request as a String
|
107
|
-
def
|
108
|
-
|
110
|
+
def request response_id
|
111
|
+
build_response(http_get("#{@url}/requests/#{response_id}"))
|
109
112
|
end
|
110
113
|
|
111
114
|
# Save the state of the Mirage server so that it can be reverted back to that exact state at a later time.
|
112
115
|
def save
|
113
|
-
|
116
|
+
http_put("#{@url}/backup",'').code == 200
|
114
117
|
end
|
115
118
|
|
116
119
|
|
117
120
|
# Revert the state of Mirage back to the state that was last saved
|
118
121
|
# If there is no snapshot to rollback to, nothing happens
|
119
122
|
def revert
|
120
|
-
|
123
|
+
http_put("#{@url}",'').code == 200
|
121
124
|
end
|
122
125
|
|
123
126
|
|
124
127
|
# Check to see if Mirage is up and running
|
125
128
|
def running?
|
126
129
|
begin
|
127
|
-
|
130
|
+
http_get(@url) and return true
|
128
131
|
rescue Errno::ECONNREFUSED
|
129
132
|
return false
|
130
133
|
end
|
@@ -132,11 +135,12 @@ module Mirage
|
|
132
135
|
|
133
136
|
# Clear down the Mirage Server and load any defaults that are in Mirages default responses directory.
|
134
137
|
def prime
|
135
|
-
|
138
|
+
puts "#{@url}/defaults"
|
139
|
+
build_response(http_put("#{@url}/defaults",''))
|
136
140
|
end
|
137
141
|
|
138
142
|
private
|
139
|
-
def
|
143
|
+
def build_response response
|
140
144
|
case response.code.to_i
|
141
145
|
when 500 then
|
142
146
|
raise ::Mirage::InternalServerException.new(response.body, response.code.to_i)
|
data/lib/mirage/core.rb
CHANGED
@@ -4,7 +4,16 @@ require 'sinatra/reloader'
|
|
4
4
|
|
5
5
|
module Mirage
|
6
6
|
|
7
|
-
class
|
7
|
+
class Server < Sinatra::Base
|
8
|
+
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_reader :defaults_directory
|
12
|
+
|
13
|
+
def configure options
|
14
|
+
@defaults_directory = options[:defaults_directory]
|
15
|
+
end
|
16
|
+
end
|
8
17
|
|
9
18
|
REQUESTS= {}
|
10
19
|
|
@@ -76,7 +85,7 @@ module Mirage
|
|
76
85
|
@responses["#{response.name}#{'/*' if response.default?}: #{pattern} #{delay}"] = response
|
77
86
|
end
|
78
87
|
erb :index
|
79
|
-
end
|
88
|
+
end
|
80
89
|
|
81
90
|
error do
|
82
91
|
erb request.env['sinatra.error'].message
|
@@ -85,7 +94,7 @@ module Mirage
|
|
85
94
|
put '/mirage/defaults' do
|
86
95
|
MOCK_RESPONSES.clear
|
87
96
|
|
88
|
-
Dir["#{
|
97
|
+
Dir["#{Server.defaults_directory}/**/*.rb"].each do |default|
|
89
98
|
begin
|
90
99
|
load default
|
91
100
|
rescue Exception
|
@@ -0,0 +1,17 @@
|
|
1
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}"
|
2
|
+
require 'object'
|
3
|
+
require 'mock_response'
|
4
|
+
require 'mock_responses_collection'
|
5
|
+
require 'core'
|
6
|
+
|
7
|
+
module Mirage
|
8
|
+
class << self
|
9
|
+
def prime
|
10
|
+
yield @client
|
11
|
+
end
|
12
|
+
|
13
|
+
def client= client
|
14
|
+
@client = client
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/mirage/web.rb
CHANGED
@@ -13,7 +13,7 @@ module Mirage
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
16
|
+
def http_put url, entity, headers={}
|
17
17
|
uri = URI.parse(url)
|
18
18
|
request = Net::HTTP::Put.new(uri.request_uri)
|
19
19
|
|
@@ -28,7 +28,7 @@ module Mirage
|
|
28
28
|
Net::HTTP.new(uri.host, uri.port).request(request)
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def http_get url, params={}, headers={}
|
32
32
|
uri = URI.parse(url)
|
33
33
|
request = Net::HTTP::Get.new(uri.request_uri)
|
34
34
|
request.set_form_data params
|
@@ -36,7 +36,7 @@ module Mirage
|
|
36
36
|
Net::HTTP.new(uri.host, uri.port).request(request)
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
39
|
+
def http_post url, params={}, headers={}
|
40
40
|
uri = URI.parse(url)
|
41
41
|
request = Net::HTTP::Post.new(uri.request_uri)
|
42
42
|
|
@@ -46,7 +46,7 @@ module Mirage
|
|
46
46
|
Net::HTTP.new(uri.host, uri.port).request(request)
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
49
|
+
def http_delete url, params={}, headers={}
|
50
50
|
uri = URI.parse(url)
|
51
51
|
request = Net::HTTP::Delete.new(uri.request_uri)
|
52
52
|
params.is_a?(Hash) ? request.set_form_data(params) : request.body = params
|
data/lib/start_mirage.rb
CHANGED
@@ -1,24 +1,20 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
|
3
2
|
$0='Mirage Server'
|
4
3
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
4
|
|
6
|
-
require 'sinatra'
|
7
5
|
require 'sinatra/base'
|
8
6
|
|
9
|
-
require 'mirage/util'
|
10
|
-
include Mirage::Util
|
11
|
-
options = parse_options(ARGV)
|
12
|
-
|
13
7
|
module Mirage
|
14
|
-
class
|
15
|
-
configure do
|
8
|
+
class Server < Sinatra::Base
|
9
|
+
configure do |config|
|
16
10
|
require 'logger'
|
17
11
|
enable :logging
|
18
12
|
log_file = File.open('mirage.log', 'a')
|
19
13
|
log_file.sync=true
|
20
14
|
use Rack::CommonLogger, log_file
|
21
|
-
set :views, File.dirname(__FILE__) + '/views'
|
15
|
+
config.set :views, File.dirname(__FILE__) + '/views'
|
16
|
+
config.set(:show_exception, false)
|
17
|
+
config.set(:raise_errors, false)
|
22
18
|
end
|
23
19
|
|
24
20
|
configure(:development) do |config|
|
@@ -30,14 +26,13 @@ module Mirage
|
|
30
26
|
end
|
31
27
|
|
32
28
|
|
33
|
-
require 'mirage'
|
29
|
+
require 'mirage/server'
|
34
30
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
Mirage::MirageServer.run! :port => options[:port], :show_exceptions => false, :logging => true, :server => 'webrick'
|
31
|
+
require 'mirage/client'
|
32
|
+
include Mirage::Util
|
33
|
+
options = parse_options(ARGV)
|
34
|
+
Mirage::Server.configure options
|
35
|
+
Mirage.client = Mirage::Client.new "http://localhost:#{options[:port]}/mirage"
|
36
|
+
Mirage::Server.run! :port => options[:port], :show_exceptions => false, :logging => true, :server => 'webrick'
|
42
37
|
|
43
38
|
|
data/mirage.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mirage}
|
8
|
-
s.version = "
|
8
|
+
s.version = "2.0.0.alpha4"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Leon Davis"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-08-11}
|
13
13
|
s.default_executable = %q{mirage}
|
14
14
|
s.description = %q{Mirage aids testing of your applications by hosting mock responses so that your applications do not have to talk to real endpoints. Its accessible via HTTP and has a RESTful interface.}
|
15
15
|
s.executables = ["mirage"]
|
@@ -23,33 +23,34 @@ Gem::Specification.new do |s|
|
|
23
23
|
"VERSION",
|
24
24
|
"bin/mirage",
|
25
25
|
"features/client/clear.feature",
|
26
|
-
"features/client/get.feature",
|
27
26
|
"features/client/mirage_client.feature",
|
28
|
-
"features/client/
|
27
|
+
"features/client/put.feature",
|
28
|
+
"features/client/request.feature",
|
29
|
+
"features/client/response.feature",
|
29
30
|
"features/client/save_and_revert.feature",
|
30
|
-
"features/client/set.feature",
|
31
|
-
"features/client/track_requests.feature",
|
32
|
-
"features/server/clear.feature",
|
33
31
|
"features/server/command_line_iterface.feature",
|
34
|
-
"features/server/file_responses.feature",
|
35
32
|
"features/server/logging.feature",
|
36
|
-
"features/server/peek.feature",
|
37
33
|
"features/server/prime.feature",
|
38
|
-
"features/server/
|
34
|
+
"features/server/requests/delete.feature",
|
35
|
+
"features/server/requests/get.feature",
|
39
36
|
"features/server/save_and_revert.feature",
|
40
|
-
"features/server/
|
41
|
-
"features/server/
|
42
|
-
"features/server/
|
43
|
-
"features/server/
|
44
|
-
"features/server/
|
37
|
+
"features/server/templates/delete.feature",
|
38
|
+
"features/server/templates/get.feature",
|
39
|
+
"features/server/templates/put/put.feature",
|
40
|
+
"features/server/templates/put/put_as_default.feature",
|
41
|
+
"features/server/templates/put/put_with_delay.feature",
|
42
|
+
"features/server/templates/put/put_with_pattern.feature",
|
43
|
+
"features/server/templates/put/put_with_substitutions.feature",
|
45
44
|
"features/server/web_user_interface.feature",
|
46
45
|
"features/step_definitions/my_steps.rb",
|
47
46
|
"features/support/env.rb",
|
48
47
|
"full_build.sh",
|
49
|
-
"lib/config.ru",
|
50
|
-
"lib/mirage.rb",
|
51
48
|
"lib/mirage/client.rb",
|
52
49
|
"lib/mirage/core.rb",
|
50
|
+
"lib/mirage/mock_response.rb",
|
51
|
+
"lib/mirage/mock_responses_collection.rb",
|
52
|
+
"lib/mirage/object.rb",
|
53
|
+
"lib/mirage/server.rb",
|
53
54
|
"lib/mirage/util.rb",
|
54
55
|
"lib/mirage/web.rb",
|
55
56
|
"lib/start_mirage.rb",
|
@@ -71,43 +72,49 @@ For more information go to: https://github.com/lashd/mirage/wiki
|
|
71
72
|
===============================================================================
|
72
73
|
}
|
73
74
|
s.require_paths = ["lib"]
|
74
|
-
s.rubygems_version = %q{1.6.
|
75
|
+
s.rubygems_version = %q{1.6.2}
|
75
76
|
s.summary = %q{Mirage is a easy mock server for testing your applications}
|
76
77
|
|
77
78
|
if s.respond_to? :specification_version then
|
78
79
|
s.specification_version = 3
|
79
80
|
|
80
81
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
81
|
-
s.add_runtime_dependency(%q<rack>, ["~> 1.1.0"])
|
82
82
|
s.add_runtime_dependency(%q<sinatra>, [">= 0"])
|
83
|
-
s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
|
84
83
|
s.add_runtime_dependency(%q<childprocess>, ["~> 0.1"])
|
85
84
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
86
85
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
86
|
+
s.add_development_dependency(%q<gherkin>, ["= 2.3.9"])
|
87
87
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
88
88
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
89
89
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
90
|
+
s.add_development_dependency(%q<sinatra-reloader>, [">= 0"])
|
91
|
+
s.add_development_dependency(%q<mechanize>, [">= 1.0.0"])
|
92
|
+
s.add_development_dependency(%q<gemcutter>, [">= 0"])
|
90
93
|
else
|
91
|
-
s.add_dependency(%q<rack>, ["~> 1.1.0"])
|
92
94
|
s.add_dependency(%q<sinatra>, [">= 0"])
|
93
|
-
s.add_dependency(%q<mechanize>, [">= 1.0.0"])
|
94
95
|
s.add_dependency(%q<childprocess>, ["~> 0.1"])
|
95
96
|
s.add_dependency(%q<rake>, [">= 0"])
|
96
97
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
98
|
+
s.add_dependency(%q<gherkin>, ["= 2.3.9"])
|
97
99
|
s.add_dependency(%q<rspec>, [">= 0"])
|
98
100
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
99
101
|
s.add_dependency(%q<bundler>, [">= 0"])
|
102
|
+
s.add_dependency(%q<sinatra-reloader>, [">= 0"])
|
103
|
+
s.add_dependency(%q<mechanize>, [">= 1.0.0"])
|
104
|
+
s.add_dependency(%q<gemcutter>, [">= 0"])
|
100
105
|
end
|
101
106
|
else
|
102
|
-
s.add_dependency(%q<rack>, ["~> 1.1.0"])
|
103
107
|
s.add_dependency(%q<sinatra>, [">= 0"])
|
104
|
-
s.add_dependency(%q<mechanize>, [">= 1.0.0"])
|
105
108
|
s.add_dependency(%q<childprocess>, ["~> 0.1"])
|
106
109
|
s.add_dependency(%q<rake>, [">= 0"])
|
107
110
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
111
|
+
s.add_dependency(%q<gherkin>, ["= 2.3.9"])
|
108
112
|
s.add_dependency(%q<rspec>, [">= 0"])
|
109
113
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
110
114
|
s.add_dependency(%q<bundler>, [">= 0"])
|
115
|
+
s.add_dependency(%q<sinatra-reloader>, [">= 0"])
|
116
|
+
s.add_dependency(%q<mechanize>, [">= 1.0.0"])
|
117
|
+
s.add_dependency(%q<gemcutter>, [">= 0"])
|
111
118
|
end
|
112
119
|
end
|
113
120
|
|