mirage 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +1 -0
- data/README.md +25 -1
- data/VERSION +1 -1
- data/features/client/configure.feature +74 -0
- data/lib/mirage/client.rb +1 -0
- data/lib/mirage/client/cli_bridge.rb +32 -0
- data/lib/mirage/client/client.rb +14 -2
- data/lib/mirage/client/response.rb +1 -1
- data/lib/mirage/client/runner.rb +2 -27
- data/mirage.gemspec +7 -4
- data/spec/cli_bridge_spec.rb +64 -0
- data/spec/runner_spec.rb +130 -0
- data/spec/spec_helper.rb +23 -0
- metadata +36 -33
- data/spec/running_via_api_spec.rb +0 -147
- data/spec/running_via_api_windows_spec.rb +0 -187
data/HISTORY
CHANGED
data/README.md
CHANGED
@@ -15,4 +15,28 @@ P.s. Mirage runs on Linux,MacOSX and Windows; Rubies 1.8.7, 1.9 and JRuby.
|
|
15
15
|
Installation
|
16
16
|
------------
|
17
17
|
gem install mirage
|
18
|
-
|
18
|
+
|
19
|
+
What's New?
|
20
|
+
-----------
|
21
|
+
### 2.3.0
|
22
|
+
---------
|
23
|
+
#### What do I get?
|
24
|
+
##### 1: Run more than one instance of Mirage per machine.
|
25
|
+
##### 2: Programmatic interface for starting and stopping Mirage
|
26
|
+
The client API now includes the ability to start and stop Mirage locally. No more calling out to the command line.
|
27
|
+
|
28
|
+
**Example Usage:** (See rdoc for full details)
|
29
|
+
|
30
|
+
mirage_client = Mirage.start :port => 9001 #with out args start mirage on 7001 by default
|
31
|
+
Mirage.stop # stops the current running instance as long as only one is running
|
32
|
+
|
33
|
+
##### 3: Updated command line interface
|
34
|
+
Now powered by the mighty Thor, the stop subcommand has been enhanced.
|
35
|
+
**Usage:**
|
36
|
+
|
37
|
+
mirage stop -> As it always did, stops the current instances of Mirage as long as there is only one running instance.
|
38
|
+
mirage stop -p port -> stops Mirage on a given port.
|
39
|
+
mirage stop -p port1, port2... -> stop multiple instances of Mirage.
|
40
|
+
mirage stop -p all -> stop all instances of mirage.
|
41
|
+
#### What do I have to do to upgrade?
|
42
|
+
You shouldn't have to do anything to move from the last version of Mirage to this one. Let me know if something stops working!
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.0
|
@@ -0,0 +1,74 @@
|
|
1
|
+
Feature: The client can be configured with default settings to keep your mocking 'DRY'
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given the following gems are required to run the Mirage client test code:
|
5
|
+
"""
|
6
|
+
require 'rubygems'
|
7
|
+
require 'rspec'
|
8
|
+
require 'mirage/client'
|
9
|
+
"""
|
10
|
+
|
11
|
+
Scenario: configuring the client on instance
|
12
|
+
Given I run
|
13
|
+
"""
|
14
|
+
client = Mirage::Client.new do |defaults|
|
15
|
+
defaults.method = :post
|
16
|
+
defaults.status = 202
|
17
|
+
defaults.default = true
|
18
|
+
defaults.delay = 2
|
19
|
+
defaults.content_type = "text/xml"
|
20
|
+
end
|
21
|
+
|
22
|
+
client.put('greeting','hello')
|
23
|
+
"""
|
24
|
+
When I send POST to 'http://localhost:7001/mirage/responses/greeting/for/someone'
|
25
|
+
Then 'hello' should be returned
|
26
|
+
And a 202 should be returned
|
27
|
+
Then it should take at least '2' seconds
|
28
|
+
And the response 'content-type' should be 'text/xml'
|
29
|
+
|
30
|
+
Scenario: Configuring a client after it has been created
|
31
|
+
Given I run
|
32
|
+
"""
|
33
|
+
client = Mirage::Client.new
|
34
|
+
client.configure do |defaults|
|
35
|
+
defaults.method = :post
|
36
|
+
defaults.status = 202
|
37
|
+
defaults.default = true
|
38
|
+
defaults.delay = 2
|
39
|
+
defaults.content_type = "text/xml"
|
40
|
+
end
|
41
|
+
|
42
|
+
client.put('greeting','hello')
|
43
|
+
"""
|
44
|
+
When I send POST to 'http://localhost:7001/mirage/responses/greeting/for/someone'
|
45
|
+
Then 'hello' should be returned
|
46
|
+
And a 202 should be returned
|
47
|
+
Then it should take at least '2' seconds
|
48
|
+
And the response 'content-type' should be 'text/xml'
|
49
|
+
|
50
|
+
Scenario: resetting defaults
|
51
|
+
Given I run
|
52
|
+
"""
|
53
|
+
client = Mirage::Client.new
|
54
|
+
client.configure do |defaults|
|
55
|
+
defaults.method = :post
|
56
|
+
defaults.status = 202
|
57
|
+
defaults.default = true
|
58
|
+
defaults.delay = 2
|
59
|
+
defaults.content_type = "text/xml"
|
60
|
+
end
|
61
|
+
|
62
|
+
client.reset
|
63
|
+
|
64
|
+
client.configure do |defaults|
|
65
|
+
defaults.method.should == nil
|
66
|
+
defaults.status.should == nil
|
67
|
+
defaults.default.should == nil
|
68
|
+
defaults.delay.should == nil
|
69
|
+
defaults.content_type.should == nil
|
70
|
+
end
|
71
|
+
"""
|
72
|
+
|
73
|
+
|
74
|
+
|
data/lib/mirage/client.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
module Mirage
|
2
|
+
module CLIBridge
|
3
|
+
def mirage_process_ids *ports
|
4
|
+
ports.flatten!
|
5
|
+
mirage_instances = {}
|
6
|
+
["Mirage Server", "mirage_server", "mirage server"].each do |process_name|
|
7
|
+
processes_with_name(process_name).lines.collect { |line| line.chomp }.each do |process_line|
|
8
|
+
pid = process_line.split(' ')[1]
|
9
|
+
port = process_line[/port (\d+)/, 1]
|
10
|
+
mirage_instances[port] = pid
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
return mirage_instances if ports.first.to_s.downcase == "all"
|
15
|
+
Hash[mirage_instances.find_all { |port, pid| ports.include?(port.to_i) }]
|
16
|
+
end
|
17
|
+
|
18
|
+
def kill pid
|
19
|
+
ChildProcess.windows? ? `taskkill /F /T /PID #{pid}` : `kill -9 #{pid}`
|
20
|
+
end
|
21
|
+
|
22
|
+
def processes_with_name name
|
23
|
+
if ChildProcess.windows?
|
24
|
+
|
25
|
+
`tasklist /V | findstr "#{name.gsub(" ", '\\ ')}"`
|
26
|
+
else
|
27
|
+
IO.popen("ps aux | grep '#{name}' | grep -v grep | grep -v #{$$}")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
data/lib/mirage/client/client.rb
CHANGED
@@ -1,15 +1,27 @@
|
|
1
1
|
require 'uri'
|
2
2
|
module Mirage
|
3
3
|
class Client
|
4
|
+
Defaults = Struct.new(:method, :status, :delay, :content_type, :default)
|
4
5
|
include Mirage::Web
|
5
6
|
attr_reader :url
|
6
7
|
|
8
|
+
|
7
9
|
# Creates an instance of the Mirage client that can be used to interact with the Mirage Server
|
8
10
|
#
|
9
11
|
# Client.new => a client that is configured to connect to Mirage on http://localhost:7001/mirage (the default settings for Mirage)
|
10
12
|
# Client.new(URL) => a client that is configured to connect to an instance of Mirage running on the specified url.
|
11
|
-
def initialize url="http://localhost:7001/mirage"
|
13
|
+
def initialize url="http://localhost:7001/mirage", &block
|
12
14
|
@url = url
|
15
|
+
@defaults = Defaults.new
|
16
|
+
configure &block if block_given?
|
17
|
+
end
|
18
|
+
|
19
|
+
def configure &block
|
20
|
+
yield @defaults
|
21
|
+
end
|
22
|
+
|
23
|
+
def reset
|
24
|
+
@defaults = Defaults.new
|
13
25
|
end
|
14
26
|
|
15
27
|
def stop
|
@@ -31,7 +43,7 @@ module Mirage
|
|
31
43
|
# end
|
32
44
|
def put endpoint, response_value, &block
|
33
45
|
response = Mirage::Response.new response_value
|
34
|
-
|
46
|
+
@defaults.each_pair{|key, value|response.send("#{key}=", value) if value}
|
35
47
|
yield response if block_given?
|
36
48
|
|
37
49
|
build_response(http_put("#{@url}/templates/#{endpoint}", response.value, response.headers))
|
data/lib/mirage/client/runner.rb
CHANGED
@@ -50,6 +50,7 @@ module Mirage
|
|
50
50
|
|
51
51
|
class Runner < Thor
|
52
52
|
include ::Mirage::Web
|
53
|
+
include CLIBridge
|
53
54
|
RUBY_CMD = ChildProcess.jruby? ? 'jruby' : 'ruby'
|
54
55
|
|
55
56
|
desc "start", "Starts mirage"
|
@@ -104,7 +105,7 @@ module Mirage
|
|
104
105
|
end
|
105
106
|
|
106
107
|
mirage_process_ids(ports).values.each do |process_id|
|
107
|
-
|
108
|
+
kill process_id
|
108
109
|
end
|
109
110
|
|
110
111
|
wait_until do
|
@@ -112,31 +113,5 @@ module Mirage
|
|
112
113
|
end
|
113
114
|
end
|
114
115
|
|
115
|
-
private
|
116
|
-
|
117
|
-
def processes_with_name name
|
118
|
-
if ChildProcess.windows?
|
119
|
-
|
120
|
-
`tasklist /V | findstr "#{name.gsub(" ", '\\ ')}"`
|
121
|
-
else
|
122
|
-
IO.popen("ps aux | grep '#{name}' | grep -v grep | grep -v #{$$}")
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def mirage_process_ids *ports
|
127
|
-
ports.flatten!
|
128
|
-
mirage_instances = {}
|
129
|
-
["Mirage Server", "mirage_server", "mirage server"].each do |process_name|
|
130
|
-
processes_with_name(process_name).lines.collect { |line| line.chomp }.each do |process_line|
|
131
|
-
pid = process_line.split(' ')[1]
|
132
|
-
port = process_line[/port (\d+)/, 1]
|
133
|
-
mirage_instances[port] = pid
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
return mirage_instances if ports.first.to_s.downcase == "all"
|
138
|
-
Hash[mirage_instances.find_all { |port, pid| ports.include?(port.to_i) }]
|
139
|
-
end
|
140
|
-
|
141
116
|
end
|
142
117
|
end
|
data/mirage.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "mirage"
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Leon Davis"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-09-11"
|
13
13
|
s.description = "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."
|
14
14
|
s.executables = ["mirage"]
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
"VERSION",
|
25
25
|
"bin/mirage",
|
26
26
|
"features/client/clear.feature",
|
27
|
+
"features/client/configure.feature",
|
27
28
|
"features/client/preview_responses.feature",
|
28
29
|
"features/client/put.feature",
|
29
30
|
"features/client/requests.feature",
|
@@ -54,6 +55,7 @@ Gem::Specification.new do |s|
|
|
54
55
|
"features/support/mirage.rb",
|
55
56
|
"full_build.sh",
|
56
57
|
"lib/mirage/client.rb",
|
58
|
+
"lib/mirage/client/cli_bridge.rb",
|
57
59
|
"lib/mirage/client/client.rb",
|
58
60
|
"lib/mirage/client/error.rb",
|
59
61
|
"lib/mirage/client/response.rb",
|
@@ -66,8 +68,9 @@ Gem::Specification.new do |s|
|
|
66
68
|
"server/extensions/hash.rb",
|
67
69
|
"server/extensions/object.rb",
|
68
70
|
"server/mock_response.rb",
|
69
|
-
"spec/
|
70
|
-
"spec/
|
71
|
+
"spec/cli_bridge_spec.rb",
|
72
|
+
"spec/runner_spec.rb",
|
73
|
+
"spec/spec_helper.rb",
|
71
74
|
"test.rb",
|
72
75
|
"views/index.erb"
|
73
76
|
]
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'mirage/client'
|
3
|
+
|
4
|
+
describe Mirage::CLIBridge do
|
5
|
+
|
6
|
+
include Mirage::CLIBridge
|
7
|
+
|
8
|
+
describe 'Windows' do
|
9
|
+
|
10
|
+
include_context :windows
|
11
|
+
|
12
|
+
it 'should find the pids of mirage instances for given ports' do
|
13
|
+
|
14
|
+
tasklist_output = "#{process_string_for_mirage(7001, 18903)}
|
15
|
+
#{process_string_for_mirage(7002, 18904)}
|
16
|
+
#{process_string_for_mirage(7003, 18905)}"
|
17
|
+
|
18
|
+
self.should_receive(:`).with(/tasklist.*/).any_number_of_times.and_return(tasklist_output)
|
19
|
+
mirage_process_ids([7001, 7002]).should == {"7001" => "18903", "7002" => "18904"}
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should find the pids of mirage instances for all ports' do
|
23
|
+
tasklist_output = "#{process_string_for_mirage(7001, 18903)}
|
24
|
+
#{process_string_for_mirage(7002, 18904)}
|
25
|
+
#{process_string_for_mirage(7003, 18905)}"
|
26
|
+
|
27
|
+
self.should_receive(:`).with(/tasklist.*/).any_number_of_times.and_return(tasklist_output)
|
28
|
+
mirage_process_ids([:all]).should == {"7001" => "18903", "7002" => "18904", "7003" => "18905"}
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should kill the given process id' do
|
32
|
+
self.should_receive(:`).with(/taskkill \/F \/T \/PID 18903/)
|
33
|
+
kill(18903)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'Linux/MacOSX' do
|
38
|
+
|
39
|
+
include_context :linux
|
40
|
+
|
41
|
+
it 'should find the pids of mirage instances for given ports' do
|
42
|
+
ps_aux_output = "#{process_string_for_mirage(7001, 18903)}
|
43
|
+
#{process_string_for_mirage(7002, 18904)}
|
44
|
+
#{process_string_for_mirage(7003, 18905)}"
|
45
|
+
|
46
|
+
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
47
|
+
mirage_process_ids([7001, 7002]).should == {"7001" => "18903", "7002" => "18904"}
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should find the pids of mirage instances for all ports' do
|
51
|
+
ps_aux_output = "#{process_string_for_mirage(7001, 18903)}
|
52
|
+
#{process_string_for_mirage(7002, 18904)}
|
53
|
+
#{process_string_for_mirage(7003, 18905)}"
|
54
|
+
|
55
|
+
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
56
|
+
mirage_process_ids([:all]).should == {"7001" => "18903", "7002" => "18904", "7003" => "18905"}
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should kill the given process id' do
|
60
|
+
self.should_receive(:`).with(/kill -9 18903/)
|
61
|
+
kill(18903)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/spec/runner_spec.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'mirage/client'
|
3
|
+
|
4
|
+
include Mirage
|
5
|
+
|
6
|
+
describe Mirage do
|
7
|
+
|
8
|
+
describe 'starting' do
|
9
|
+
before(:each) do
|
10
|
+
@runner = mock
|
11
|
+
Runner.should_receive(:new).and_return(@runner)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should start Mirage on port 7001 by default' do
|
15
|
+
@runner.should_receive(:invoke).with(:start, [], {:port => 7001})
|
16
|
+
Mirage.start
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should start mirage on the given port' do
|
20
|
+
options = {:port => 9001}
|
21
|
+
@runner.should_receive(:invoke).with(:start, [], options)
|
22
|
+
Mirage.start options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'stopping' do
|
27
|
+
before(:each) do
|
28
|
+
@runner = mock
|
29
|
+
Runner.stub(:new).and_return(@runner)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should supply single port argument in an array to the runner' do
|
33
|
+
port = 7001
|
34
|
+
@runner.should_receive(:invoke).with(:stop, [], :port => [port])
|
35
|
+
@runner.should_receive(:invoke).with(:stop, [], :port => [:all])
|
36
|
+
Mirage.stop(:port => port)
|
37
|
+
Mirage.stop(:all)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should stop multiple instances of Mirage' do
|
41
|
+
ports = 7001, 7002
|
42
|
+
@runner.should_receive(:invoke).with(:stop, [], :port => ports)
|
43
|
+
Mirage.stop(:port => ports)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe Mirage::Runner do
|
49
|
+
it 'should stop the running instance of Mirage' do
|
50
|
+
|
51
|
+
runner = Mirage::Runner.new
|
52
|
+
runner.should_receive(:mirage_process_ids).with([:all]).any_number_of_times.and_return({"7001" => "18901"})
|
53
|
+
|
54
|
+
runner.should_receive(:kill).with("18901") do
|
55
|
+
runner.rspec_reset
|
56
|
+
runner.should_receive(:mirage_process_ids).with([:all]).any_number_of_times.and_return({})
|
57
|
+
end
|
58
|
+
|
59
|
+
runner.stop
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should not stop any instances when more than one is running' do
|
63
|
+
runner = Mirage::Runner.new
|
64
|
+
runner.should_receive(:mirage_process_ids).with([:all]).any_number_of_times.and_return({"7001" => "18901", "7002" => "18902", "7003" => "18903"})
|
65
|
+
runner.should_not_receive(:kill)
|
66
|
+
|
67
|
+
lambda { runner.stop }.should raise_error(Mirage::ClientError)
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
it 'should stop the instance running on the given port' do
|
72
|
+
options = {:port => [7001]}
|
73
|
+
runner = Mirage::Runner.new
|
74
|
+
runner.options = options
|
75
|
+
|
76
|
+
runner.should_receive(:mirage_process_ids).with([7001]).and_return({"7001" => "18901"})
|
77
|
+
runner.should_receive(:kill).with("18901") do
|
78
|
+
runner.rspec_reset
|
79
|
+
runner.stub(:mirage_process_ids).with([7001]).and_return({})
|
80
|
+
end
|
81
|
+
|
82
|
+
Mirage::Runner.should_receive(:new).and_return(runner)
|
83
|
+
runner.invoke(:stop, [], options)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should stop the instance running on the given ports' do
|
87
|
+
options = {:port => [7001, 7002]}
|
88
|
+
runner = Mirage::Runner.new
|
89
|
+
runner.options = options
|
90
|
+
|
91
|
+
runner.should_receive(:mirage_process_ids).with([7001, 7002]).and_return({"7001" => "18901", "7002" => "18902"})
|
92
|
+
runner.should_receive(:kill).with("18901")
|
93
|
+
runner.should_receive(:kill).with("18902") do
|
94
|
+
runner.rspec_reset
|
95
|
+
runner.stub(:mirage_process_ids).with([7001, 7002]).and_return({})
|
96
|
+
end
|
97
|
+
|
98
|
+
Mirage::Runner.should_receive(:new).and_return(runner)
|
99
|
+
runner.invoke(:stop, [], options)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should stop all running instances' do
|
103
|
+
options = {:port => [:all]}
|
104
|
+
runner = Mirage::Runner.new
|
105
|
+
runner.options = options
|
106
|
+
|
107
|
+
runner.should_receive(:mirage_process_ids).with([:all]).and_return({"7001" => "18901", "7002" => "18902"})
|
108
|
+
runner.should_receive(:kill).with("18901")
|
109
|
+
runner.should_receive(:kill).with("18902") do
|
110
|
+
runner.rspec_reset
|
111
|
+
runner.stub(:mirage_process_ids).with([:all]).and_return({})
|
112
|
+
end
|
113
|
+
|
114
|
+
Mirage::Runner.should_receive(:new).and_return(runner)
|
115
|
+
runner.invoke(:stop, [], options)
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'should not error when asked to stop Mirage on a port that it is not running on' do
|
120
|
+
options = {:port => [7001]}
|
121
|
+
runner = Mirage::Runner.new
|
122
|
+
runner.options = options
|
123
|
+
runner.should_receive(:mirage_process_ids).with([7001]).any_number_of_times.and_return({})
|
124
|
+
|
125
|
+
Mirage::Runner.should_receive(:new).and_return(runner)
|
126
|
+
lambda { runner.invoke(:stop, [], options) }.should_not raise_error(Mirage::ClientError)
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
$LOAD_PATH.unshift "../lib"
|
2
|
+
require 'rspec'
|
3
|
+
|
4
|
+
shared_context :windows do
|
5
|
+
def process_string_for_mirage(mirage_port, pid)
|
6
|
+
%Q{ruby.exe #{pid} Console 1 6,076 K Running WIN-ATPGMMC0218\\\\leon 0:01:58 mirage server port #{mirage_port}}
|
7
|
+
end
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
ChildProcess.should_receive(:windows?).any_number_of_times.and_return(true)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
shared_context :linux do
|
15
|
+
|
16
|
+
def process_string_for_mirage(mirage_port, pid)
|
17
|
+
"team #{pid} 6.2 0.4 84328 20760 pts/1 Sl 22:15 0:00 Mirage Server port #{mirage_port}"
|
18
|
+
end
|
19
|
+
|
20
|
+
before :each do
|
21
|
+
ChildProcess.should_receive(:windows?).any_number_of_times.and_return(false)
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mirage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-11 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &13798800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *13798800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: eventmachine
|
27
|
-
requirement: &
|
27
|
+
requirement: &13797620 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.0.rc.4
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *13797620
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: childprocess
|
38
|
-
requirement: &
|
38
|
+
requirement: &13789700 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *13789700
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: waitforit
|
49
|
-
requirement: &
|
49
|
+
requirement: &13788460 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *13788460
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: thor
|
60
|
-
requirement: &
|
60
|
+
requirement: &13787080 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *13787080
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thin
|
71
|
-
requirement: &
|
71
|
+
requirement: &13786060 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *13786060
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rake
|
82
|
-
requirement: &
|
82
|
+
requirement: &13784820 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *13784820
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: cucumber
|
93
|
-
requirement: &
|
93
|
+
requirement: &13783980 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *13783980
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rspec
|
104
|
-
requirement: &
|
104
|
+
requirement: &13732180 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *13732180
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: jeweler
|
115
|
-
requirement: &
|
115
|
+
requirement: &13729860 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *13729860
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: sinatra-contrib
|
126
|
-
requirement: &
|
126
|
+
requirement: &13727620 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *13727620
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: mechanize
|
137
|
-
requirement: &
|
137
|
+
requirement: &13725580 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *13725580
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: nokogiri
|
148
|
-
requirement: &
|
148
|
+
requirement: &13680160 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *13680160
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: jruby-openssl
|
159
|
-
requirement: &
|
159
|
+
requirement: &13678600 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *13678600
|
168
168
|
description: Mirage aids testing of your applications by hosting mock responses so
|
169
169
|
that your applications do not have to talk to real endpoints. Its accessible via
|
170
170
|
HTTP and has a RESTful interface.
|
@@ -183,6 +183,7 @@ files:
|
|
183
183
|
- VERSION
|
184
184
|
- bin/mirage
|
185
185
|
- features/client/clear.feature
|
186
|
+
- features/client/configure.feature
|
186
187
|
- features/client/preview_responses.feature
|
187
188
|
- features/client/put.feature
|
188
189
|
- features/client/requests.feature
|
@@ -213,6 +214,7 @@ files:
|
|
213
214
|
- features/support/mirage.rb
|
214
215
|
- full_build.sh
|
215
216
|
- lib/mirage/client.rb
|
217
|
+
- lib/mirage/client/cli_bridge.rb
|
216
218
|
- lib/mirage/client/client.rb
|
217
219
|
- lib/mirage/client/error.rb
|
218
220
|
- lib/mirage/client/response.rb
|
@@ -225,8 +227,9 @@ files:
|
|
225
227
|
- server/extensions/hash.rb
|
226
228
|
- server/extensions/object.rb
|
227
229
|
- server/mock_response.rb
|
228
|
-
- spec/
|
229
|
-
- spec/
|
230
|
+
- spec/cli_bridge_spec.rb
|
231
|
+
- spec/runner_spec.rb
|
232
|
+
- spec/spec_helper.rb
|
230
233
|
- test.rb
|
231
234
|
- views/index.erb
|
232
235
|
homepage: https://github.com/lashd/mirage
|
@@ -246,7 +249,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
246
249
|
version: '0'
|
247
250
|
segments:
|
248
251
|
- 0
|
249
|
-
hash:
|
252
|
+
hash: 943352209253188731
|
250
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
251
254
|
none: false
|
252
255
|
requirements:
|
@@ -1,147 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift "../lib"
|
2
|
-
require 'rspec'
|
3
|
-
require 'mirage/client'
|
4
|
-
|
5
|
-
def process_string_for_mirage(mirage_port, pid)
|
6
|
-
"team #{pid} 6.2 0.4 84328 20760 pts/1 Sl 22:15 0:00 Mirage Server port #{mirage_port}"
|
7
|
-
end
|
8
|
-
|
9
|
-
include Mirage
|
10
|
-
|
11
|
-
unless ChildProcess.windows?
|
12
|
-
describe Mirage do
|
13
|
-
|
14
|
-
describe 'starting' do
|
15
|
-
before(:each) do
|
16
|
-
@runner = mock
|
17
|
-
Runner.should_receive(:new).and_return(@runner)
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should start Mirage on port 7001 by default' do
|
21
|
-
@runner.should_receive(:invoke).with(:start, [], {:port => 7001})
|
22
|
-
Mirage.start
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'should start mirage on the given port' do
|
26
|
-
options = {:port => 9001}
|
27
|
-
@runner.should_receive(:invoke).with(:start, [], options)
|
28
|
-
Mirage.start options
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe 'stopping' do
|
33
|
-
before(:each) do
|
34
|
-
@runner = mock
|
35
|
-
Runner.stub(:new).and_return(@runner)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'should supply single port argument in an array to the runner' do
|
39
|
-
port = 7001
|
40
|
-
@runner.should_receive(:invoke).with(:stop, [], :port => [port])
|
41
|
-
@runner.should_receive(:invoke).with(:stop, [], :port => [:all])
|
42
|
-
Mirage.stop(:port => port)
|
43
|
-
Mirage.stop(:all)
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'should stop multiple instances of Mirage' do
|
47
|
-
ports = 7001, 7002
|
48
|
-
@runner.should_receive(:invoke).with(:stop, [], :port => ports)
|
49
|
-
Mirage.stop(:port => ports)
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
describe Mirage::Runner do
|
55
|
-
it 'should stop the running instance of Mirage' do
|
56
|
-
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(process_string_for_mirage(7001, 18903))
|
57
|
-
|
58
|
-
IO.should_receive(:popen).with("kill -9 18903") do
|
59
|
-
IO.rspec_reset
|
60
|
-
IO.stub(:popen).and_return("")
|
61
|
-
end
|
62
|
-
Mirage::Runner.new.stop
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'should not stop any instances when more than one is running' do
|
66
|
-
ps_aux_output =<<PS
|
67
|
-
#{process_string_for_mirage(7001, 18901)}
|
68
|
-
#{process_string_for_mirage(7002, 18902)}
|
69
|
-
#{process_string_for_mirage(7003, 18903)}
|
70
|
-
PS
|
71
|
-
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
72
|
-
IO.should_not_receive(:popen).with(/kill.*/)
|
73
|
-
|
74
|
-
lambda { Mirage::Runner.new.stop }.should raise_error(Mirage::ClientError)
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
|
-
it 'should stop the instance running on the given port' do
|
80
|
-
ps_aux_output =<<PS
|
81
|
-
#{process_string_for_mirage(7001, 18901)}
|
82
|
-
#{process_string_for_mirage(7002, 18902)}
|
83
|
-
PS
|
84
|
-
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
85
|
-
IO.should_receive(:popen).with(/kill -9 18901/) do
|
86
|
-
IO.rspec_reset
|
87
|
-
IO.stub(:popen).and_return(process_string_for_mirage(7002, 18902))
|
88
|
-
end
|
89
|
-
|
90
|
-
Mirage::Runner.new.invoke(:stop, [], {:port => [7001]})
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'should stop the instance running on the given ports' do
|
94
|
-
ps_aux_output =<<PS
|
95
|
-
#{process_string_for_mirage(7001, 18901)}
|
96
|
-
#{process_string_for_mirage(7002, 18902)}
|
97
|
-
#{process_string_for_mirage(7003, 18903)}
|
98
|
-
PS
|
99
|
-
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
100
|
-
IO.should_receive(:popen).with(/kill -9 18901/)
|
101
|
-
IO.should_receive(:popen).with(/kill -9 18902/) do
|
102
|
-
IO.rspec_reset
|
103
|
-
IO.stub(:popen).and_return(process_string_for_mirage("7003", 18903))
|
104
|
-
end
|
105
|
-
|
106
|
-
Mirage::Runner.new.invoke(:stop, [], {:port => [7001, 7002]})
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'should stop all running instances' do
|
110
|
-
ps_aux_output =<<PS
|
111
|
-
#{process_string_for_mirage(7001, 18901)}
|
112
|
-
#{process_string_for_mirage(7002, 18902)}
|
113
|
-
#{process_string_for_mirage(7003, 18903)}
|
114
|
-
PS
|
115
|
-
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
116
|
-
IO.should_receive(:popen).with(/kill -9 18901/)
|
117
|
-
IO.should_receive(:popen).with(/kill -9 18902/)
|
118
|
-
IO.should_receive(:popen).with(/kill -9 18903/) do
|
119
|
-
IO.rspec_reset
|
120
|
-
IO.stub(:popen).and_return("")
|
121
|
-
end
|
122
|
-
|
123
|
-
Mirage::Runner.new.invoke(:stop, [], {:port => [:all]})
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
it 'should not error when asked to stop Mirage on a port that it is not running on' do
|
128
|
-
ps_aux_output =<<PS
|
129
|
-
#{process_string_for_mirage(7001, 18901)}
|
130
|
-
PS
|
131
|
-
IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
132
|
-
IO.should_not_receive(:popen).with(/kill -9 18901/)
|
133
|
-
lambda { Mirage::Runner.new.invoke(:stop, [], {:port => [7002]}) }.should_not raise_error(Mirage::ClientError)
|
134
|
-
end
|
135
|
-
|
136
|
-
# it 'should not start mirage on the same port' do
|
137
|
-
# ps_aux_output =<<PS
|
138
|
-
##{process_string_for_mirage(7001, 18901)}
|
139
|
-
#PS
|
140
|
-
# IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
141
|
-
# lambda{Mirage::Runner.new.invoke(:start, [], {:port => 7001})}.should raise_error(Mirage::ClientError)
|
142
|
-
# end
|
143
|
-
|
144
|
-
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
@@ -1,187 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift "../lib"
|
2
|
-
require 'rspec'
|
3
|
-
require 'mirage/client'
|
4
|
-
|
5
|
-
if ChildProcess.windows?
|
6
|
-
|
7
|
-
|
8
|
-
def process_string_for_mirage(mirage_port, pid)
|
9
|
-
%Q{ruby.exe #{pid} Console 1 6,076 K Running WIN-ATPGMMC0218\\\\leon 0:01:58 mirage server port #{mirage_port}}
|
10
|
-
end
|
11
|
-
|
12
|
-
include Mirage
|
13
|
-
|
14
|
-
describe Mirage do
|
15
|
-
|
16
|
-
describe 'starting' do
|
17
|
-
before(:each) do
|
18
|
-
@runner = mock
|
19
|
-
Runner.should_receive(:new).and_return(@runner)
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should start Mirage on port 7001 by default' do
|
23
|
-
@runner.should_receive(:invoke).with(:start, [], {:port => 7001})
|
24
|
-
Mirage.start
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should start mirage on the given port' do
|
28
|
-
options = {:port => 9001}
|
29
|
-
@runner.should_receive(:invoke).with(:start, [], options)
|
30
|
-
Mirage.start options
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe 'stopping' do
|
35
|
-
before(:each) do
|
36
|
-
@runner = mock
|
37
|
-
Runner.stub(:new).and_return(@runner)
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'should supply single port argument in an array to the runner' do
|
41
|
-
port = 7001
|
42
|
-
@runner.should_receive(:invoke).with(:stop, [], :port => [port])
|
43
|
-
@runner.should_receive(:invoke).with(:stop, [], :port => [:all])
|
44
|
-
Mirage.stop(:port => port)
|
45
|
-
Mirage.stop(:port => :all)
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'should stop multiple instances of Mirage' do
|
49
|
-
ports = 7001, 7002
|
50
|
-
@runner.should_receive(:invoke).with(:stop, [], :port => ports)
|
51
|
-
Mirage.stop(:port => ports)
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
describe Mirage::Runner do
|
57
|
-
it 'should stop the running instance of Mirage' do
|
58
|
-
|
59
|
-
runner = Mirage::Runner.new
|
60
|
-
|
61
|
-
runner.should_receive(:`).with(/tasklist.*/).any_number_of_times.and_return(process_string_for_mirage(7001, 18903))
|
62
|
-
runner.should_receive(:`).with(/taskkill \/F \/T \/PID 18903/) do
|
63
|
-
runner.rspec_reset
|
64
|
-
runner.stub(:`).and_return("")
|
65
|
-
end
|
66
|
-
|
67
|
-
Mirage::Runner.should_receive(:new).with([], {}, anything).and_return(runner)
|
68
|
-
runner.invoke(:stop, [], nil)
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'should not stop any instances when more than one is running' do
|
72
|
-
ps_aux_output =<<PS
|
73
|
-
#{process_string_for_mirage(7001, 18901)}
|
74
|
-
#{process_string_for_mirage(7002, 18902)}
|
75
|
-
#{process_string_for_mirage(7003, 18903)}
|
76
|
-
PS
|
77
|
-
|
78
|
-
runner = Mirage::Runner.new
|
79
|
-
|
80
|
-
runner.should_receive(:`).with(/tasklist.*/).any_number_of_times.and_return(ps_aux_output)
|
81
|
-
runner.should_not_receive(:`).with(/taskkill.*/)
|
82
|
-
|
83
|
-
Mirage::Runner.should_receive(:new).with([], {}, anything).and_return(runner)
|
84
|
-
|
85
|
-
lambda { runner.invoke(:stop, [], nil) }.should raise_error(Mirage::ClientError)
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
|
90
|
-
it 'should stop the instance running on the given port' do
|
91
|
-
|
92
|
-
task_list_output =<<TASKLIST
|
93
|
-
#{process_string_for_mirage(7001, 18901)}
|
94
|
-
#{process_string_for_mirage(7002, 18902)}
|
95
|
-
TASKLIST
|
96
|
-
|
97
|
-
options = {:port => [7001]}
|
98
|
-
runner = Mirage::Runner.new
|
99
|
-
runner.options = options
|
100
|
-
|
101
|
-
runner.should_receive(:`).with(/tasklist.*/).at_least(1).and_return(task_list_output)
|
102
|
-
runner.should_receive(:`).with(/taskkill \/F \/T \/PID 18901/) do
|
103
|
-
runner.rspec_reset
|
104
|
-
runner.stub(:`).and_return(process_string_for_mirage(7002, 18902))
|
105
|
-
end
|
106
|
-
|
107
|
-
Mirage::Runner.should_receive(:new).with([], options, anything).and_return(runner)
|
108
|
-
|
109
|
-
runner.invoke(:stop, [], options)
|
110
|
-
end
|
111
|
-
|
112
|
-
it 'should stop the instance running on the given ports' do
|
113
|
-
ps_aux_output =<<PS
|
114
|
-
#{process_string_for_mirage(7001, 18901)}
|
115
|
-
#{process_string_for_mirage(7002, 18902)}
|
116
|
-
#{process_string_for_mirage(7003, 18903)}
|
117
|
-
PS
|
118
|
-
|
119
|
-
options = {:port => [7001,7002]}
|
120
|
-
runner = Mirage::Runner.new
|
121
|
-
runner.options = options
|
122
|
-
|
123
|
-
runner.should_receive(:`).with(/tasklist.*/).any_number_of_times.and_return(ps_aux_output)
|
124
|
-
runner.should_receive(:`).with(/taskkill \/F \/T \/PID 18901/)
|
125
|
-
runner.should_receive(:`).with(/taskkill \/F \/T \/PID 18902/) do
|
126
|
-
runner.rspec_reset
|
127
|
-
runner.stub(:`).and_return(process_string_for_mirage("7003", 18903))
|
128
|
-
end
|
129
|
-
|
130
|
-
Mirage::Runner.should_receive(:new).with([], options, anything).and_return(runner)
|
131
|
-
runner.invoke(:stop, [], options)
|
132
|
-
end
|
133
|
-
|
134
|
-
it 'should stop all running instances' do
|
135
|
-
ps_aux_output =<<PS
|
136
|
-
#{process_string_for_mirage(7001, 18901)}
|
137
|
-
#{process_string_for_mirage(7002, 18902)}
|
138
|
-
#{process_string_for_mirage(7003, 18903)}
|
139
|
-
PS
|
140
|
-
|
141
|
-
options = {:port => [:all]}
|
142
|
-
runner = Mirage::Runner.new
|
143
|
-
runner.options = options
|
144
|
-
|
145
|
-
|
146
|
-
runner.should_receive(:`).with(/tasklist.*/).any_number_of_times.and_return(ps_aux_output)
|
147
|
-
|
148
|
-
runner.should_receive(:`).with(/taskkill \/F \/T \/PID 18901/)
|
149
|
-
runner.should_receive(:`).with(/taskkill \/F \/T \/PID 18902/)
|
150
|
-
runner.should_receive(:`).with(/taskkill \/F \/T \/PID 18903/) do
|
151
|
-
runner.rspec_reset
|
152
|
-
runner.stub(:`).and_return("")
|
153
|
-
end
|
154
|
-
|
155
|
-
Mirage::Runner.should_receive(:new).with([], options, anything).and_return(runner)
|
156
|
-
runner.invoke(:stop, [], options)
|
157
|
-
|
158
|
-
end
|
159
|
-
|
160
|
-
it 'should not error when asked to stop Mirage on a port that it is not running on' do
|
161
|
-
ps_aux_output =<<PS
|
162
|
-
#{process_string_for_mirage(7001, 18901)}
|
163
|
-
PS
|
164
|
-
|
165
|
-
options = {:port => [7002]}
|
166
|
-
runner = Mirage::Runner.new
|
167
|
-
|
168
|
-
runner.should_receive(:`).with(/tasklist.*/).any_number_of_times.and_return(ps_aux_output)
|
169
|
-
runner.should_not_receive(:`).with(/taskkill \/F \/T \/PID 18901/)
|
170
|
-
|
171
|
-
Mirage::Runner.should_receive(:new).with([], options, anything).and_return(runner)
|
172
|
-
|
173
|
-
lambda { runner.invoke(:stop, [], options) }.should_not raise_error(Mirage::ClientError)
|
174
|
-
end
|
175
|
-
|
176
|
-
# it 'should not start mirage on the same port' do
|
177
|
-
# ps_aux_output =<<PS
|
178
|
-
##{process_string_for_mirage(7001, 18901)}
|
179
|
-
#PS
|
180
|
-
# IO.should_receive(:popen).with(/ps aux.*/).any_number_of_times.and_return(ps_aux_output)
|
181
|
-
# lambda{Mirage::Runner.new.invoke(:start, [], {:port => 7001})}.should raise_error(Mirage::ClientError)
|
182
|
-
# end
|
183
|
-
|
184
|
-
|
185
|
-
end
|
186
|
-
end
|
187
|
-
end
|