console-vmc-plugin 0.0.4 → 0.1.0
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/lib/console-vmc-plugin/console.rb +10 -3
- data/lib/console-vmc-plugin/plugin.rb +3 -2
- data/lib/console-vmc-plugin/version.rb +1 -1
- data/spec/console_spec.rb +178 -187
- data/spec/spec_helper.rb +11 -0
- metadata +95 -100
- data/spec/Rakefile +0 -13
- data/spec/console_functional_spec.rb +0 -53
@@ -5,10 +5,11 @@ require "tunnel-vmc-plugin/tunnel"
|
|
5
5
|
|
6
6
|
|
7
7
|
class CFConsole < CFTunnel
|
8
|
-
def initialize(client, app, port = 10000)
|
8
|
+
def initialize(client, app, port = 10000, v2 = false)
|
9
9
|
@client = client
|
10
10
|
@app = app
|
11
11
|
@port = port
|
12
|
+
@v2 = v2
|
12
13
|
end
|
13
14
|
|
14
15
|
def get_connection_info(auth)
|
@@ -27,7 +28,11 @@ class CFConsole < CFTunnel
|
|
27
28
|
end
|
28
29
|
|
29
30
|
def get_credentials
|
30
|
-
|
31
|
+
if @v2
|
32
|
+
YAML.load(@app.file("cf-rails-console", ".consoleaccess"))
|
33
|
+
else
|
34
|
+
YAML.load(@app.file("app", "cf-rails-console", ".consoleaccess"))
|
35
|
+
end
|
31
36
|
end
|
32
37
|
|
33
38
|
def start_console
|
@@ -157,8 +162,10 @@ class CFConsole < CFTunnel
|
|
157
162
|
end
|
158
163
|
|
159
164
|
def exit_console
|
165
|
+
@telnet.cmd("String" => "exit", "Timeout" => 1)
|
166
|
+
rescue TimeoutError
|
160
167
|
# TimeoutError expected, as exit doesn't return anything
|
161
|
-
|
168
|
+
ensure
|
162
169
|
close_console
|
163
170
|
end
|
164
171
|
|
@@ -11,7 +11,7 @@ module VMCConsole
|
|
11
11
|
def console
|
12
12
|
app = input[:app]
|
13
13
|
|
14
|
-
console = CFConsole.new(client, app)
|
14
|
+
console = CFConsole.new(client, app, nil, v2?)
|
15
15
|
port = console.pick_port!(input[:port])
|
16
16
|
|
17
17
|
with_progress("Opening console on port #{c(port, :name)}") do
|
@@ -23,7 +23,8 @@ module VMCConsole
|
|
23
23
|
end
|
24
24
|
|
25
25
|
filter(:start, :start_app) do |app|
|
26
|
-
if app.framework.name == "rails3"
|
26
|
+
if app.framework.name == "rails3" || app.framework.name == "buildpack"
|
27
|
+
puts "Setting console to true"
|
27
28
|
app.console = true
|
28
29
|
end
|
29
30
|
|
data/spec/console_spec.rb
CHANGED
@@ -1,214 +1,205 @@
|
|
1
|
-
require "
|
2
|
-
require "vmc"
|
1
|
+
require "spec_helper"
|
3
2
|
require "console-vmc-plugin/plugin"
|
4
3
|
|
5
4
|
describe "CFConsole" do
|
6
|
-
before(:each) do
|
7
|
-
@app = mock("app")
|
8
|
-
@console = CFConsole.new(nil, @app)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should return connection info for apps that have a console ip and port" do
|
12
|
-
instance = mock("instance")
|
13
|
-
@app.should_receive(:instances).and_return([instance])
|
14
|
-
instance.should_receive(:console).
|
15
|
-
and_return({:ip => "192.168.1.1", :port => 3344})
|
16
|
-
|
17
|
-
@console.get_connection_info(nil).
|
18
|
-
should == {"hostname" => "192.168.1.1", "port" => 3344}
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should raise error when no app instances found" do
|
22
|
-
@app.should_receive(:instances).and_return([])
|
23
|
-
|
24
|
-
expect { @console.get_connection_info(nil) }.
|
25
|
-
to raise_error("App has no running instances; try starting it.")
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should raise error when app does not have console access" do
|
29
|
-
instance = mock("instance")
|
30
|
-
@app.should_receive(:instances).and_return([instance])
|
31
|
-
instance.should_receive(:console).and_return(nil)
|
32
|
-
|
33
|
-
expect { @console.get_connection_info(nil) }.
|
34
|
-
to raise_error("App does not have console access; try restarting it.")
|
35
|
-
end
|
36
|
-
|
37
|
-
describe "start_console" do
|
38
|
-
before(:each) do
|
39
|
-
@creds = {
|
40
|
-
:path => %w(app cf-rails-console .consoleaccess),
|
41
|
-
:yaml => "username: cfuser\npassword: testpw",
|
42
|
-
:telnet => {"Name" => "cfuser", "Password" => "testpw"}
|
43
|
-
}
|
44
|
-
|
45
|
-
unless example.metadata[:description_args].first ==
|
46
|
-
"should raise error if console credentials cannot be obtained"
|
47
|
-
@app.should_receive(:file).with(*@creds[:path]).
|
48
|
-
and_return(@creds[:yaml])
|
49
|
-
@telnet = mock("telnet")
|
50
|
-
@console.should_receive(:telnet_client).and_return(@telnet)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should raise error if console credentials cannot be obtained" do
|
55
|
-
@app.should_receive(:file).with(*@creds[:path]).
|
56
|
-
and_return("username: cfuser")
|
57
|
-
|
58
|
-
expect { @console.start_console }.
|
59
|
-
to raise_error("Unable to verify console credentials.")
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should raise error if authentication fails" do
|
63
|
-
@telnet.should_receive(:login).with(@creds[:telnet]).
|
64
|
-
and_return("Login failed")
|
65
|
-
@telnet.should_receive(:close)
|
66
|
-
|
67
|
-
expect { @console.start_console }.to raise_error("Login failed")
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should retry authentication on timeout" do
|
71
|
-
@telnet.should_receive(:login).with(@creds[:telnet]).
|
72
|
-
and_raise(TimeoutError)
|
73
|
-
@telnet.should_receive(:login).with(@creds[:telnet]).
|
74
|
-
and_return("Switch to inspect mode\nirb():001:0> ")
|
75
|
-
verify_console_exit("irb():001:0> ")
|
76
5
|
|
77
|
-
|
6
|
+
context "V1" do
|
7
|
+
before do
|
8
|
+
@app = mock("app")
|
9
|
+
@console = CFConsole.new(nil, @app)
|
78
10
|
end
|
79
11
|
|
80
|
-
it "should
|
81
|
-
|
82
|
-
@
|
83
|
-
|
84
|
-
@telnet.should_receive(:login).with(@creds[:telnet]).
|
85
|
-
and_return("irb():001:0> ")
|
86
|
-
verify_console_exit("irb():001:0> ")
|
12
|
+
it "should return connection info for apps that have a console ip and port" do
|
13
|
+
instance = mock("instance")
|
14
|
+
mock(@app).instances { [instance] }
|
15
|
+
mock(instance).console { {:ip => "192.168.1.1", :port => 3344} }
|
87
16
|
|
88
|
-
@console.
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
@telnet.should_receive(:login).with(@creds[:telnet]).
|
93
|
-
and_return("irb():001:0> ")
|
94
|
-
Readline.should_receive(:readline).with("irb():001:0> ").
|
95
|
-
and_return("puts 'hi'")
|
96
|
-
Readline::HISTORY.should_receive(:push).with("puts 'hi'")
|
97
|
-
@telnet.should_receive(:cmd).with("puts 'hi'").
|
98
|
-
and_return("nil" + "\n" + "irb():002:0> ")
|
99
|
-
STDOUT.should_receive(:puts).with("nil")
|
100
|
-
verify_console_exit("irb():002:0> ")
|
101
|
-
|
102
|
-
@console.start_console
|
17
|
+
@console.get_connection_info(nil).should == {
|
18
|
+
"hostname" => "192.168.1.1",
|
19
|
+
"port" => 3344
|
20
|
+
}
|
103
21
|
end
|
104
22
|
|
105
|
-
it "should
|
106
|
-
@
|
107
|
-
and_return("irb():001:0> ")
|
108
|
-
Readline.should_receive(:readline).with("irb():001:0> ").
|
109
|
-
and_return("puts 'hi'")
|
110
|
-
Readline::HISTORY.should_receive(:push).with("puts 'hi'")
|
111
|
-
@telnet.should_receive(:cmd).with("puts 'hi'").and_raise(TimeoutError)
|
112
|
-
STDOUT.should_receive(:puts).with("Timed out sending command to server.")
|
113
|
-
verify_console_exit("irb():001:0> ")
|
114
|
-
|
115
|
-
@console.start_console
|
116
|
-
end
|
23
|
+
it "should raise error when no app instances found" do
|
24
|
+
mock(@app).instances { [] }
|
117
25
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
Readline.should_receive(:readline).with("irb():001:0> ").
|
122
|
-
and_return("puts 'hi'")
|
123
|
-
Readline::HISTORY.should_receive(:push).with("puts 'hi'")
|
124
|
-
@telnet.should_receive(:cmd).with("puts 'hi'").and_raise(EOFError)
|
125
|
-
|
126
|
-
expect { @console.start_console }.
|
127
|
-
to raise_error("The console connection has been terminated. " +
|
128
|
-
"Perhaps the app was stopped or deleted?")
|
26
|
+
expect {
|
27
|
+
@console.get_connection_info(nil)
|
28
|
+
}.to raise_error("App has no running instances; try starting it.")
|
129
29
|
end
|
130
30
|
|
131
|
-
it "should
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
Readline::HISTORY.should_not_receive(:push).with("")
|
136
|
-
@telnet.should_receive(:cmd).with("").and_return("irb():002:0*> ")
|
137
|
-
verify_console_exit("irb():002:0*> ")
|
31
|
+
it "should raise error when app does not have console access" do
|
32
|
+
instance = mock("instance")
|
33
|
+
mock(@app).instances { [instance] }
|
34
|
+
mock(instance).console { nil }
|
138
35
|
|
139
|
-
|
36
|
+
expect {
|
37
|
+
@console.get_connection_info(nil)
|
38
|
+
}.to raise_error("App does not have console access; try restarting it.")
|
140
39
|
end
|
141
40
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
and_return("nil" + "\n" + "irb():002:0> ")
|
151
|
-
STDOUT.should_receive(:puts).with("nil")
|
152
|
-
verify_console_exit("irb():002:0> ")
|
153
|
-
|
154
|
-
@console.start_console
|
155
|
-
end
|
156
|
-
|
157
|
-
it "should return tab completion data" do
|
158
|
-
@telnet.should_receive(:login).with(@creds[:telnet]).
|
159
|
-
and_return("Switch to inspect mode\nirb():001:0> ")
|
160
|
-
@telnet.should_receive(:cmd).
|
161
|
-
with({"String" => "app.\t", "Match" => /\S*\n$/, "Timeout" => 10}).
|
162
|
-
and_return("to_s,nil?\n")
|
163
|
-
verify_console_exit("irb():001:0> ")
|
41
|
+
describe "start_console" do
|
42
|
+
before do
|
43
|
+
@creds = {
|
44
|
+
:path => %w(app cf-rails-console .consoleaccess),
|
45
|
+
:yaml => "username: cfuser\npassword: testpw",
|
46
|
+
:telnet => {"Name" => "cfuser", "Password" => "testpw"}
|
47
|
+
}
|
48
|
+
end
|
164
49
|
|
165
|
-
|
166
|
-
|
167
|
-
|
50
|
+
context "when console credentials cannot be obtained" do
|
51
|
+
it "should raise error" do
|
52
|
+
mock(@app).file(*@creds[:path]) { "username: cfuser" }
|
168
53
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
and_return("\n")
|
175
|
-
verify_console_exit("irb():001:0> ")
|
54
|
+
expect {
|
55
|
+
@console.start_console
|
56
|
+
}.to raise_error("Unable to verify console credentials.")
|
57
|
+
end
|
58
|
+
end
|
176
59
|
|
177
|
-
|
178
|
-
|
60
|
+
context "when console credentials can be obtained" do
|
61
|
+
before do
|
62
|
+
mock(@app).file(*@creds[:path]) { @creds[:yaml] }
|
63
|
+
@telnet = Object.new
|
64
|
+
mock(@console).telnet_client { @telnet }
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should raise error if authentication fails" do
|
68
|
+
mock(@telnet).login(@creds[:telnet]) { "Login failed" }
|
69
|
+
mock(@telnet).close
|
70
|
+
|
71
|
+
expect { @console.start_console }.to raise_error("Login failed")
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should retry authentication on timeout" do
|
75
|
+
mock(@telnet).login(@creds[:telnet]) { raise TimeoutError }
|
76
|
+
mock(@telnet).login(@creds[:telnet]) { "Switch to inspect mode\nirb():001:0> " }
|
77
|
+
verify_console_exit("irb():001:0> ")
|
78
|
+
|
79
|
+
@console.start_console
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should retry authentication on EOF" do
|
83
|
+
mock(@console).telnet_client { @telnet }
|
84
|
+
mock(@telnet).login(@creds[:telnet]) { raise EOFError }
|
85
|
+
mock(@telnet).close
|
86
|
+
mock(@telnet).login(@creds[:telnet]) { "irb():001:0> " }
|
87
|
+
verify_console_exit("irb():001:0> ")
|
88
|
+
|
89
|
+
@console.start_console
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should operate console interactively" do
|
93
|
+
mock(@telnet).login(@creds[:telnet]) { "irb():001:0> " }
|
94
|
+
mock(Readline).readline("irb():001:0> ") { "puts 'hi'" }
|
95
|
+
mock(Readline::HISTORY).push("puts 'hi'")
|
96
|
+
mock(@telnet).cmd("puts 'hi'") { "nil" + "\n" + "irb():002:0> " }
|
97
|
+
mock(@console).puts("nil")
|
98
|
+
verify_console_exit("irb():002:0> ")
|
99
|
+
|
100
|
+
@console.start_console
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should not crash if command times out" do
|
104
|
+
mock(@telnet).login(@creds[:telnet]) { "irb():001:0> " }
|
105
|
+
mock(Readline).readline("irb():001:0> ") { "puts 'hi'" }
|
106
|
+
mock(Readline::HISTORY).push("puts 'hi'")
|
107
|
+
mock(@telnet).cmd("puts 'hi'") { raise TimeoutError }
|
108
|
+
mock(@console).puts("Timed out sending command to server.")
|
109
|
+
verify_console_exit("irb():001:0> ")
|
110
|
+
|
111
|
+
@console.start_console
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should raise error if an EOF is received" do
|
115
|
+
mock(@telnet).login(@creds[:telnet]) { "Switch to inspect mode\nirb():001:0> " }
|
116
|
+
mock(Readline).readline("irb():001:0> ") { "puts 'hi'" }
|
117
|
+
mock(Readline::HISTORY).push("puts 'hi'")
|
118
|
+
mock(@telnet).cmd("puts 'hi'") { raise EOFError }
|
119
|
+
|
120
|
+
expect {
|
121
|
+
@console.start_console
|
122
|
+
}.to raise_error("The console connection has been terminated. Perhaps the app was stopped or deleted?")
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should not keep blank lines in history" do
|
126
|
+
mock(@telnet).login(@creds[:telnet]) { "irb():001:0> " }
|
127
|
+
mock(Readline).readline("irb():001:0> ") { "" }
|
128
|
+
dont_allow(Readline::HISTORY).push("")
|
129
|
+
mock(@telnet).cmd("") { "irb():002:0*> " }
|
130
|
+
verify_console_exit("irb():002:0*> ")
|
131
|
+
|
132
|
+
@console.start_console
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should not keep identical commands in history" do
|
136
|
+
mock(@telnet).login(@creds[:telnet]) { "irb():001:0> " }
|
137
|
+
mock(Readline).readline("irb():001:0> ") { "puts 'hi'" }
|
138
|
+
mock(Readline::HISTORY).to_a { ["puts 'hi'"] }
|
139
|
+
dont_allow(Readline::HISTORY).push("puts 'hi'")
|
140
|
+
mock(@telnet).cmd("puts 'hi'") { "nil" + "\n" + "irb():002:0> " }
|
141
|
+
mock(@console).puts("nil")
|
142
|
+
verify_console_exit("irb():002:0> ")
|
143
|
+
|
144
|
+
@console.start_console
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should return tab completion data" do
|
148
|
+
mock(@telnet).login(@creds[:telnet]) { "Switch to inspect mode\nirb():001:0> " }
|
149
|
+
mock(@telnet).cmd("String" => "app.\t", "Match" => /\S*\n$/, "Timeout" => 10) { "to_s,nil?\n" }
|
150
|
+
verify_console_exit("irb():001:0> ")
|
151
|
+
|
152
|
+
@console.start_console
|
153
|
+
Readline.completion_proc.call("app.").should == ["to_s", "nil?"]
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should return tab completion data receiving empty completion string" do
|
157
|
+
mock(@telnet).login(@creds[:telnet]) { "irb():001:0> " }
|
158
|
+
mock(@telnet).cmd("String" => "app.\t", "Match" => /\S*\n$/, "Timeout" => 10) { "\n" }
|
159
|
+
verify_console_exit("irb():001:0> ")
|
160
|
+
|
161
|
+
@console.start_console
|
162
|
+
Readline.completion_proc.call("app.").should == []
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should not crash on timeout of remote tab completion data" do
|
166
|
+
mock(@telnet).login(@creds[:telnet]) { "Switch to inspect mode\nirb():001:0> " }
|
167
|
+
mock(@telnet).cmd("String" => "app.\t", "Match" => /\S*\n$/, "Timeout" => 10) { raise TimeoutError }
|
168
|
+
verify_console_exit("irb():001:0> ")
|
169
|
+
|
170
|
+
@console.start_console
|
171
|
+
Readline.completion_proc.call("app.").should == []
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should properly initialize Readline for tab completion" do
|
175
|
+
mock(@telnet).login(@creds[:telnet]) { "irb():001:0> " }
|
176
|
+
mock(Readline).respond_to?("basic_word_break_characters=") { true }
|
177
|
+
mock(Readline).basic_word_break_characters=(" \t\n`><=;|&{(")
|
178
|
+
mock(Readline).completion_append_character=(nil)
|
179
|
+
mock(Readline).completion_proc=(anything)
|
180
|
+
verify_console_exit("irb():001:0> ")
|
181
|
+
|
182
|
+
@console.start_console
|
183
|
+
end
|
184
|
+
end
|
179
185
|
end
|
186
|
+
end
|
180
187
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
@
|
185
|
-
with({"String" => "app.\t", "Match" => /\S*\n$/, "Timeout" => 10}).
|
186
|
-
and_raise(TimeoutError)
|
187
|
-
verify_console_exit("irb():001:0> ")
|
188
|
-
|
189
|
-
@console.start_console
|
190
|
-
Readline.completion_proc.yield("app.").should == []
|
188
|
+
context "V2" do
|
189
|
+
before do
|
190
|
+
@app = mock("app")
|
191
|
+
@console = CFConsole.new(nil, @app, nil, true)
|
191
192
|
end
|
192
193
|
|
193
|
-
it "
|
194
|
-
@
|
195
|
-
|
196
|
-
Readline.should_receive(:respond_to?).
|
197
|
-
with("basic_word_break_characters=").and_return(true)
|
198
|
-
Readline.should_receive(:basic_word_break_characters=).
|
199
|
-
with(" \t\n`><=;|&{(")
|
200
|
-
Readline.should_receive(:completion_append_character=).with(nil)
|
201
|
-
Readline.should_receive(:completion_proc=)
|
202
|
-
verify_console_exit("irb():001:0> ")
|
203
|
-
|
204
|
-
@console.start_console
|
194
|
+
it "reads console credentials from correct file" do
|
195
|
+
mock(@app).file(*%w(cf-rails-console .consoleaccess)) { "username: cfuser\npassword: testpw" }
|
196
|
+
@console.get_credentials
|
205
197
|
end
|
206
198
|
end
|
207
199
|
|
208
200
|
def verify_console_exit(prompt)
|
209
|
-
Readline.
|
210
|
-
@telnet.
|
211
|
-
|
212
|
-
@telnet.should_receive(:close)
|
201
|
+
mock(Readline).readline(prompt) { "exit" }
|
202
|
+
mock(@telnet).cmd("String" => "exit", "Timeout" => 1) { raise TimeoutError }
|
203
|
+
mock(@telnet).close
|
213
204
|
end
|
214
|
-
end
|
205
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: console-vmc-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.4
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alex Suraci
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
19
|
-
default_executable:
|
18
|
+
date: 2013-02-06 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: tunnel-vmc-plugin
|
@@ -26,12 +25,12 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ~>
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
28
|
+
hash: 23
|
30
29
|
segments:
|
31
30
|
- 0
|
32
|
-
-
|
33
|
-
-
|
34
|
-
version: 0.
|
31
|
+
- 2
|
32
|
+
- 0
|
33
|
+
version: 0.2.0
|
35
34
|
type: :runtime
|
36
35
|
version_requirements: *id001
|
37
36
|
- !ruby/object:Gem::Dependency
|
@@ -40,12 +39,13 @@ dependencies:
|
|
40
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
|
-
- -
|
42
|
+
- - ~>
|
44
43
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
44
|
+
hash: 25
|
46
45
|
segments:
|
47
46
|
- 0
|
48
|
-
|
47
|
+
- 9
|
48
|
+
version: "0.9"
|
49
49
|
type: :development
|
50
50
|
version_requirements: *id002
|
51
51
|
- !ruby/object:Gem::Dependency
|
@@ -56,43 +56,41 @@ dependencies:
|
|
56
56
|
requirements:
|
57
57
|
- - ~>
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
hash:
|
59
|
+
hash: 21
|
60
60
|
segments:
|
61
61
|
- 2
|
62
|
-
-
|
63
|
-
version: "2.
|
62
|
+
- 11
|
63
|
+
version: "2.11"
|
64
64
|
type: :development
|
65
65
|
version_requirements: *id003
|
66
66
|
- !ruby/object:Gem::Dependency
|
67
|
-
name:
|
67
|
+
name: webmock
|
68
68
|
prerelease: false
|
69
69
|
requirement: &id004 !ruby/object:Gem::Requirement
|
70
70
|
none: false
|
71
71
|
requirements:
|
72
|
-
- -
|
72
|
+
- - ~>
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
hash:
|
74
|
+
hash: 29
|
75
75
|
segments:
|
76
|
-
-
|
77
|
-
-
|
78
|
-
|
79
|
-
- beta
|
80
|
-
- 42
|
81
|
-
version: 0.4.0.beta.42
|
76
|
+
- 1
|
77
|
+
- 9
|
78
|
+
version: "1.9"
|
82
79
|
type: :development
|
83
80
|
version_requirements: *id004
|
84
81
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
82
|
+
name: rr
|
86
83
|
prerelease: false
|
87
84
|
requirement: &id005 !ruby/object:Gem::Requirement
|
88
85
|
none: false
|
89
86
|
requirements:
|
90
|
-
- -
|
87
|
+
- - ~>
|
91
88
|
- !ruby/object:Gem::Version
|
92
|
-
hash:
|
89
|
+
hash: 15
|
93
90
|
segments:
|
91
|
+
- 1
|
94
92
|
- 0
|
95
|
-
version: "0"
|
93
|
+
version: "1.0"
|
96
94
|
type: :development
|
97
95
|
version_requirements: *id005
|
98
96
|
description:
|
@@ -106,61 +104,59 @@ extra_rdoc_files: []
|
|
106
104
|
|
107
105
|
files:
|
108
106
|
- Rakefile
|
109
|
-
- lib/console-vmc-plugin/version.rb
|
110
|
-
- lib/console-vmc-plugin/plugin.rb
|
111
107
|
- lib/console-vmc-plugin/console.rb
|
112
|
-
-
|
113
|
-
-
|
114
|
-
- spec/assets/rails328_ruby187_app/app/
|
115
|
-
- spec/assets/rails328_ruby187_app/app/helpers/application_helper.rb
|
108
|
+
- lib/console-vmc-plugin/plugin.rb
|
109
|
+
- lib/console-vmc-plugin/version.rb
|
110
|
+
- spec/assets/rails328_ruby187_app/app/assets/images/rails.png
|
116
111
|
- spec/assets/rails328_ruby187_app/app/assets/javascripts/application.js
|
117
112
|
- spec/assets/rails328_ruby187_app/app/assets/stylesheets/application.css
|
118
|
-
- spec/assets/rails328_ruby187_app/app/
|
113
|
+
- spec/assets/rails328_ruby187_app/app/controllers/application_controller.rb
|
114
|
+
- spec/assets/rails328_ruby187_app/app/helpers/application_helper.rb
|
119
115
|
- spec/assets/rails328_ruby187_app/app/views/layouts/application.html.erb
|
120
|
-
- spec/assets/rails328_ruby187_app/
|
121
|
-
- spec/assets/rails328_ruby187_app/
|
122
|
-
- spec/assets/rails328_ruby187_app/
|
123
|
-
- spec/assets/rails328_ruby187_app/
|
124
|
-
- spec/assets/rails328_ruby187_app/config/routes.rb
|
125
|
-
- spec/assets/rails328_ruby187_app/config/environments/production.rb
|
116
|
+
- spec/assets/rails328_ruby187_app/config/application.rb
|
117
|
+
- spec/assets/rails328_ruby187_app/config/boot.rb
|
118
|
+
- spec/assets/rails328_ruby187_app/config/database.yml
|
119
|
+
- spec/assets/rails328_ruby187_app/config/environment.rb
|
126
120
|
- spec/assets/rails328_ruby187_app/config/environments/development.rb
|
121
|
+
- spec/assets/rails328_ruby187_app/config/environments/production.rb
|
127
122
|
- spec/assets/rails328_ruby187_app/config/environments/test.rb
|
123
|
+
- spec/assets/rails328_ruby187_app/config/initializers/backtrace_silencers.rb
|
128
124
|
- spec/assets/rails328_ruby187_app/config/initializers/inflections.rb
|
129
|
-
- spec/assets/rails328_ruby187_app/config/initializers/wrap_parameters.rb
|
130
125
|
- spec/assets/rails328_ruby187_app/config/initializers/mime_types.rb
|
131
|
-
- spec/assets/rails328_ruby187_app/config/initializers/session_store.rb
|
132
|
-
- spec/assets/rails328_ruby187_app/config/initializers/backtrace_silencers.rb
|
133
126
|
- spec/assets/rails328_ruby187_app/config/initializers/secret_token.rb
|
134
|
-
- spec/assets/rails328_ruby187_app/config/
|
135
|
-
- spec/assets/rails328_ruby187_app/config/
|
136
|
-
- spec/assets/rails328_ruby187_app/config/database.yml
|
137
|
-
- spec/assets/rails328_ruby187_app/config/boot.rb
|
127
|
+
- spec/assets/rails328_ruby187_app/config/initializers/session_store.rb
|
128
|
+
- spec/assets/rails328_ruby187_app/config/initializers/wrap_parameters.rb
|
138
129
|
- spec/assets/rails328_ruby187_app/config/locales/en.yml
|
139
|
-
- spec/assets/rails328_ruby187_app/
|
140
|
-
- spec/assets/rails328_ruby187_app/test/performance/browsing_test.rb
|
130
|
+
- spec/assets/rails328_ruby187_app/config/routes.rb
|
141
131
|
- spec/assets/rails328_ruby187_app/config.ru
|
142
|
-
- spec/assets/rails328_ruby187_app/
|
143
|
-
- spec/assets/rails328_ruby187_app/
|
132
|
+
- spec/assets/rails328_ruby187_app/db/seeds.rb
|
133
|
+
- spec/assets/rails328_ruby187_app/doc/README_FOR_APP
|
134
|
+
- spec/assets/rails328_ruby187_app/Gemfile
|
135
|
+
- spec/assets/rails328_ruby187_app/manifest.yml
|
136
|
+
- spec/assets/rails328_ruby187_app/public/404.html
|
144
137
|
- spec/assets/rails328_ruby187_app/public/422.html
|
145
|
-
- spec/assets/rails328_ruby187_app/public/
|
146
|
-
- spec/assets/rails328_ruby187_app/public/assets/application.js
|
147
|
-
- spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css.gz
|
148
|
-
- spec/assets/rails328_ruby187_app/public/assets/manifest.yml
|
149
|
-
- spec/assets/rails328_ruby187_app/public/assets/application.js.gz
|
138
|
+
- spec/assets/rails328_ruby187_app/public/500.html
|
150
139
|
- spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css
|
140
|
+
- spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css.gz
|
141
|
+
- spec/assets/rails328_ruby187_app/public/assets/application-ccab98dc1abdf097c0af693e20aed861.js
|
151
142
|
- spec/assets/rails328_ruby187_app/public/assets/application-ccab98dc1abdf097c0af693e20aed861.js.gz
|
143
|
+
- spec/assets/rails328_ruby187_app/public/assets/application.css
|
152
144
|
- spec/assets/rails328_ruby187_app/public/assets/application.css.gz
|
153
|
-
- spec/assets/rails328_ruby187_app/public/assets/application
|
145
|
+
- spec/assets/rails328_ruby187_app/public/assets/application.js
|
146
|
+
- spec/assets/rails328_ruby187_app/public/assets/application.js.gz
|
147
|
+
- spec/assets/rails328_ruby187_app/public/assets/manifest.yml
|
148
|
+
- spec/assets/rails328_ruby187_app/public/assets/rails-be8732dac73d845ac5b142c8fb5f9fb0.png
|
154
149
|
- spec/assets/rails328_ruby187_app/public/assets/rails.png
|
155
|
-
- spec/assets/rails328_ruby187_app/public/
|
156
|
-
- spec/assets/rails328_ruby187_app/public/404.html
|
150
|
+
- spec/assets/rails328_ruby187_app/public/favicon.ico
|
157
151
|
- spec/assets/rails328_ruby187_app/public/index.html
|
158
|
-
- spec/assets/rails328_ruby187_app/public/
|
159
|
-
- spec/assets/rails328_ruby187_app/README.rdoc
|
152
|
+
- spec/assets/rails328_ruby187_app/public/robots.txt
|
160
153
|
- spec/assets/rails328_ruby187_app/Rakefile
|
161
|
-
- spec/
|
162
|
-
- spec/
|
163
|
-
|
154
|
+
- spec/assets/rails328_ruby187_app/README.rdoc
|
155
|
+
- spec/assets/rails328_ruby187_app/script/rails
|
156
|
+
- spec/assets/rails328_ruby187_app/test/performance/browsing_test.rb
|
157
|
+
- spec/assets/rails328_ruby187_app/test/test_helper.rb
|
158
|
+
- spec/console_spec.rb
|
159
|
+
- spec/spec_helper.rb
|
164
160
|
homepage: http://cloudfoundry.com/
|
165
161
|
licenses: []
|
166
162
|
|
@@ -190,59 +186,58 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
186
|
requirements: []
|
191
187
|
|
192
188
|
rubyforge_project: console-vmc-plugin
|
193
|
-
rubygems_version: 1.
|
189
|
+
rubygems_version: 1.8.24
|
194
190
|
signing_key:
|
195
191
|
specification_version: 3
|
196
192
|
summary: Port of rails-console to vmc-ng.
|
197
193
|
test_files:
|
198
|
-
- spec/
|
199
|
-
- spec/assets/rails328_ruby187_app/doc/README_FOR_APP
|
200
|
-
- spec/assets/rails328_ruby187_app/app/controllers/application_controller.rb
|
201
|
-
- spec/assets/rails328_ruby187_app/app/helpers/application_helper.rb
|
194
|
+
- spec/assets/rails328_ruby187_app/app/assets/images/rails.png
|
202
195
|
- spec/assets/rails328_ruby187_app/app/assets/javascripts/application.js
|
203
196
|
- spec/assets/rails328_ruby187_app/app/assets/stylesheets/application.css
|
204
|
-
- spec/assets/rails328_ruby187_app/app/
|
197
|
+
- spec/assets/rails328_ruby187_app/app/controllers/application_controller.rb
|
198
|
+
- spec/assets/rails328_ruby187_app/app/helpers/application_helper.rb
|
205
199
|
- spec/assets/rails328_ruby187_app/app/views/layouts/application.html.erb
|
206
|
-
- spec/assets/rails328_ruby187_app/
|
207
|
-
- spec/assets/rails328_ruby187_app/
|
208
|
-
- spec/assets/rails328_ruby187_app/
|
209
|
-
- spec/assets/rails328_ruby187_app/
|
210
|
-
- spec/assets/rails328_ruby187_app/config/routes.rb
|
211
|
-
- spec/assets/rails328_ruby187_app/config/environments/production.rb
|
200
|
+
- spec/assets/rails328_ruby187_app/config/application.rb
|
201
|
+
- spec/assets/rails328_ruby187_app/config/boot.rb
|
202
|
+
- spec/assets/rails328_ruby187_app/config/database.yml
|
203
|
+
- spec/assets/rails328_ruby187_app/config/environment.rb
|
212
204
|
- spec/assets/rails328_ruby187_app/config/environments/development.rb
|
205
|
+
- spec/assets/rails328_ruby187_app/config/environments/production.rb
|
213
206
|
- spec/assets/rails328_ruby187_app/config/environments/test.rb
|
207
|
+
- spec/assets/rails328_ruby187_app/config/initializers/backtrace_silencers.rb
|
214
208
|
- spec/assets/rails328_ruby187_app/config/initializers/inflections.rb
|
215
|
-
- spec/assets/rails328_ruby187_app/config/initializers/wrap_parameters.rb
|
216
209
|
- spec/assets/rails328_ruby187_app/config/initializers/mime_types.rb
|
217
|
-
- spec/assets/rails328_ruby187_app/config/initializers/session_store.rb
|
218
|
-
- spec/assets/rails328_ruby187_app/config/initializers/backtrace_silencers.rb
|
219
210
|
- spec/assets/rails328_ruby187_app/config/initializers/secret_token.rb
|
220
|
-
- spec/assets/rails328_ruby187_app/config/
|
221
|
-
- spec/assets/rails328_ruby187_app/config/
|
222
|
-
- spec/assets/rails328_ruby187_app/config/database.yml
|
223
|
-
- spec/assets/rails328_ruby187_app/config/boot.rb
|
211
|
+
- spec/assets/rails328_ruby187_app/config/initializers/session_store.rb
|
212
|
+
- spec/assets/rails328_ruby187_app/config/initializers/wrap_parameters.rb
|
224
213
|
- spec/assets/rails328_ruby187_app/config/locales/en.yml
|
225
|
-
- spec/assets/rails328_ruby187_app/
|
226
|
-
- spec/assets/rails328_ruby187_app/test/performance/browsing_test.rb
|
214
|
+
- spec/assets/rails328_ruby187_app/config/routes.rb
|
227
215
|
- spec/assets/rails328_ruby187_app/config.ru
|
228
|
-
- spec/assets/rails328_ruby187_app/
|
229
|
-
- spec/assets/rails328_ruby187_app/
|
216
|
+
- spec/assets/rails328_ruby187_app/db/seeds.rb
|
217
|
+
- spec/assets/rails328_ruby187_app/doc/README_FOR_APP
|
218
|
+
- spec/assets/rails328_ruby187_app/Gemfile
|
219
|
+
- spec/assets/rails328_ruby187_app/manifest.yml
|
220
|
+
- spec/assets/rails328_ruby187_app/public/404.html
|
230
221
|
- spec/assets/rails328_ruby187_app/public/422.html
|
231
|
-
- spec/assets/rails328_ruby187_app/public/
|
232
|
-
- spec/assets/rails328_ruby187_app/public/assets/application.js
|
233
|
-
- spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css.gz
|
234
|
-
- spec/assets/rails328_ruby187_app/public/assets/manifest.yml
|
235
|
-
- spec/assets/rails328_ruby187_app/public/assets/application.js.gz
|
222
|
+
- spec/assets/rails328_ruby187_app/public/500.html
|
236
223
|
- spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css
|
224
|
+
- spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css.gz
|
225
|
+
- spec/assets/rails328_ruby187_app/public/assets/application-ccab98dc1abdf097c0af693e20aed861.js
|
237
226
|
- spec/assets/rails328_ruby187_app/public/assets/application-ccab98dc1abdf097c0af693e20aed861.js.gz
|
227
|
+
- spec/assets/rails328_ruby187_app/public/assets/application.css
|
238
228
|
- spec/assets/rails328_ruby187_app/public/assets/application.css.gz
|
239
|
-
- spec/assets/rails328_ruby187_app/public/assets/application
|
229
|
+
- spec/assets/rails328_ruby187_app/public/assets/application.js
|
230
|
+
- spec/assets/rails328_ruby187_app/public/assets/application.js.gz
|
231
|
+
- spec/assets/rails328_ruby187_app/public/assets/manifest.yml
|
232
|
+
- spec/assets/rails328_ruby187_app/public/assets/rails-be8732dac73d845ac5b142c8fb5f9fb0.png
|
240
233
|
- spec/assets/rails328_ruby187_app/public/assets/rails.png
|
241
|
-
- spec/assets/rails328_ruby187_app/public/
|
242
|
-
- spec/assets/rails328_ruby187_app/public/404.html
|
234
|
+
- spec/assets/rails328_ruby187_app/public/favicon.ico
|
243
235
|
- spec/assets/rails328_ruby187_app/public/index.html
|
244
|
-
- spec/assets/rails328_ruby187_app/public/
|
245
|
-
- spec/assets/rails328_ruby187_app/README.rdoc
|
236
|
+
- spec/assets/rails328_ruby187_app/public/robots.txt
|
246
237
|
- spec/assets/rails328_ruby187_app/Rakefile
|
247
|
-
- spec/
|
248
|
-
- spec/
|
238
|
+
- spec/assets/rails328_ruby187_app/README.rdoc
|
239
|
+
- spec/assets/rails328_ruby187_app/script/rails
|
240
|
+
- spec/assets/rails328_ruby187_app/test/performance/browsing_test.rb
|
241
|
+
- spec/assets/rails328_ruby187_app/test/test_helper.rb
|
242
|
+
- spec/console_spec.rb
|
243
|
+
- spec/spec_helper.rb
|
data/spec/Rakefile
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
|
-
Bundler.require(:default, :development)
|
4
|
-
|
5
|
-
require 'rake/dsl_definition'
|
6
|
-
require 'rake'
|
7
|
-
require 'rspec'
|
8
|
-
require 'rspec/core/rake_task'
|
9
|
-
|
10
|
-
RSpec::Core::RakeTask.new do |t|
|
11
|
-
t.pattern = "*_spec.rb"
|
12
|
-
t.rspec_opts = ["--format", "documentation", "--colour"]
|
13
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require "vmc/spec_helpers"
|
2
|
-
require "console-vmc-plugin/plugin"
|
3
|
-
|
4
|
-
describe "VMCConsole#console" do
|
5
|
-
before(:all) do
|
6
|
-
rails_app = File.expand_path("../assets/rails328_ruby187_app", __FILE__)
|
7
|
-
@name = "app-#{random_str}"
|
8
|
-
client.app_by_name(@name).should_not be
|
9
|
-
|
10
|
-
@app = client.app
|
11
|
-
@app.name = @name
|
12
|
-
@app.space = client.current_space if client.current_space
|
13
|
-
@app.framework = client.framework_by_name("rails3")
|
14
|
-
@app.runtime = client.runtime_by_name("ruby18")
|
15
|
-
@app.memory = client.is_a?(CFoundry::V2::Client) ? 128 : "128M"
|
16
|
-
@app.total_instances = 1
|
17
|
-
@app.console = true
|
18
|
-
@app.create!
|
19
|
-
|
20
|
-
@app.upload(rails_app)
|
21
|
-
@app.start!
|
22
|
-
|
23
|
-
@caldecott = client.app_by_name("caldecott")
|
24
|
-
@caldecott_running = @caldecott.running? if @caldecott
|
25
|
-
end
|
26
|
-
|
27
|
-
after(:all) do
|
28
|
-
if created = client.app_by_name(@name)
|
29
|
-
created.delete!
|
30
|
-
end
|
31
|
-
|
32
|
-
if @caldecott
|
33
|
-
client.app_by_name("caldecott").stop! unless @caldecott_running
|
34
|
-
else
|
35
|
-
client.app_by_name("caldecott").delete!
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
it "runs with args APP" do
|
40
|
-
running(:console, :app => @app) do
|
41
|
-
does("Opening console on port 10000")
|
42
|
-
kill
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it "runs with args APP and PORT" do
|
47
|
-
port = "10024"
|
48
|
-
running(:console, :app => @app, :port => port) do
|
49
|
-
does("Opening console on port #{port}")
|
50
|
-
kill
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|