mirage 2.0.0.alpha3 → 2.0.0.alpha4
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/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
|
|