vmc 0.5.0 → 0.5.1.rc1
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/Rakefile +0 -50
- data/lib/vmc/cli/app/base.rb +11 -3
- data/lib/vmc/cli/app/push/create.rb +5 -1
- data/lib/vmc/cli/app/start.rb +6 -13
- data/lib/vmc/cli/start/base.rb +25 -15
- data/lib/vmc/version.rb +1 -1
- data/spec/console_app_specker/console_app_specker_matchers_spec.rb +21 -0
- data/spec/console_app_specker/specker_runner_spec.rb +13 -3
- data/spec/features/v2/login_spec.rb +64 -0
- data/spec/features/v2/push_flow_spec.rb +1 -1
- data/spec/features/v2/switching_targets_spec.rb +2 -2
- data/spec/support/console_app_specker_matchers.rb +15 -4
- data/spec/support/specker_runner.rb +2 -1
- data/spec/vmc/cli/app/push/create_spec.rb +44 -2
- data/spec/vmc/cli/app/push_spec.rb +1 -1
- data/spec/vmc/cli/app/start_spec.rb +40 -0
- metadata +76 -61
data/Rakefile
CHANGED
@@ -48,54 +48,4 @@ namespace :deploy do
|
|
48
48
|
sh "git push origin :latest-release"
|
49
49
|
sh "git push origin latest-release"
|
50
50
|
end
|
51
|
-
|
52
|
-
task :release do
|
53
|
-
version = CURRENT_VERSION.sub(/\.rc\d+/, "")
|
54
|
-
|
55
|
-
prereleases = SPEC.runtime_dependencies.select(&:prerelease?)
|
56
|
-
unless prereleases.empty?
|
57
|
-
puts "The following dependencies must be released:"
|
58
|
-
prereleases.each do |pre|
|
59
|
-
puts "- #{pre.name}"
|
60
|
-
end
|
61
|
-
|
62
|
-
puts ""
|
63
|
-
|
64
|
-
raise
|
65
|
-
end
|
66
|
-
|
67
|
-
# grab the last release candidate
|
68
|
-
sh "git checkout latest-release -b release-v#{version}"
|
69
|
-
|
70
|
-
# update the version
|
71
|
-
sh "gem bump --version #{version}"
|
72
|
-
|
73
|
-
# switch to master
|
74
|
-
sh "git checkout master"
|
75
|
-
|
76
|
-
# merge the new version number back into master
|
77
|
-
sh "git merge release-v#{version}"
|
78
|
-
|
79
|
-
# apply tags
|
80
|
-
sh "git tag -f v#{version}"
|
81
|
-
sh "git tag -f latest-release"
|
82
|
-
sh "git tag -f latest-stable"
|
83
|
-
sh "git push origin master"
|
84
|
-
sh "git push origin :latest-release 2> /dev/null || exit 0"
|
85
|
-
sh "git push origin :latest-stable 2> /dev/null || exit 0"
|
86
|
-
sh "git push origin latest-release"
|
87
|
-
sh "git push origin latest-stable"
|
88
|
-
sh "git push origin v#{version}"
|
89
|
-
|
90
|
-
# check out the release tag
|
91
|
-
sh "git checkout latest-stable"
|
92
|
-
|
93
|
-
# build the gem and push the gem to rubygems
|
94
|
-
sh "rm -f *.gem"
|
95
|
-
sh "gem build *.gemspec"
|
96
|
-
sh "gem push *.gem"
|
97
|
-
sh "rm -f *.gem"
|
98
|
-
|
99
|
-
puts "You are now on the latest-release tag. You'll have to switch back to your working branch."
|
100
|
-
end
|
101
51
|
end
|
data/lib/vmc/cli/app/base.rb
CHANGED
@@ -33,13 +33,21 @@ module VMC
|
|
33
33
|
|
34
34
|
def memory_choices(exclude = 0)
|
35
35
|
info = client.info
|
36
|
-
|
36
|
+
|
37
|
+
usage = info[:usage]
|
37
38
|
limit = info[:limits][:memory]
|
38
|
-
|
39
|
+
|
40
|
+
ceiling =
|
41
|
+
if usage
|
42
|
+
used = usage[:memory]
|
43
|
+
limit - used + exclude
|
44
|
+
else
|
45
|
+
limit
|
46
|
+
end
|
39
47
|
|
40
48
|
mem = 64
|
41
49
|
choices = []
|
42
|
-
until mem >
|
50
|
+
until mem > ceiling
|
43
51
|
choices << human_mb(mem)
|
44
52
|
mem *= 2
|
45
53
|
end
|
@@ -68,7 +68,11 @@ module VMC::App
|
|
68
68
|
|
69
69
|
with_progress("Creating #{c(app.name, :name)}") do
|
70
70
|
wrap_message_format_errors do
|
71
|
-
|
71
|
+
begin
|
72
|
+
app.create!
|
73
|
+
rescue CFoundry::NotAuthorized
|
74
|
+
fail "You need the Project Developer role in #{b(client.current_space.name)} to push."
|
75
|
+
end
|
72
76
|
end
|
73
77
|
end
|
74
78
|
|
data/lib/vmc/cli/app/start.rb
CHANGED
@@ -65,13 +65,13 @@ module VMC::App
|
|
65
65
|
# set app debug mode, ensuring it's valid, and shutting it down
|
66
66
|
def switch_mode(app, mode)
|
67
67
|
mode = nil if mode == "none"
|
68
|
-
mode = "run" if mode == "
|
68
|
+
mode = "run" if mode == "" # no value given
|
69
69
|
|
70
|
-
return false if app.
|
70
|
+
return false if app.debug == mode
|
71
71
|
|
72
72
|
if mode.nil?
|
73
73
|
with_progress("Removing debug mode") do
|
74
|
-
app.
|
74
|
+
app.debug = nil
|
75
75
|
app.stop! if app.started?
|
76
76
|
end
|
77
77
|
|
@@ -79,20 +79,13 @@ module VMC::App
|
|
79
79
|
end
|
80
80
|
|
81
81
|
with_progress("Switching mode to #{c(mode, :name)}") do |s|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
if modes.include?(mode)
|
86
|
-
app.debug_mode = mode
|
87
|
-
app.stop! if app.started?
|
88
|
-
else
|
89
|
-
fail "Unknown mode '#{mode}'; available: #{modes.join ", "}"
|
90
|
-
end
|
82
|
+
app.debug = mode
|
83
|
+
app.stop! if app.started?
|
91
84
|
end
|
92
85
|
end
|
93
86
|
|
94
87
|
def check_application(app)
|
95
|
-
if app.
|
88
|
+
if app.debug == "suspend"
|
96
89
|
line "Application is in suspended debugging mode."
|
97
90
|
line "It will wait for you to attach to it before starting."
|
98
91
|
return
|
data/lib/vmc/cli/start/base.rb
CHANGED
@@ -37,32 +37,42 @@ module VMC
|
|
37
37
|
def select_org(input, info)
|
38
38
|
if input.has?(:organization) || !org_valid?(info[:organization])
|
39
39
|
org = input[:organization]
|
40
|
-
|
41
|
-
|
40
|
+
if org
|
41
|
+
with_progress("Switching to organization #{c(org.name, :name)}") {}
|
42
|
+
client.current_organization = org
|
43
|
+
end
|
44
|
+
info[:organization] = org ? org.guid : nil
|
45
|
+
!!org
|
42
46
|
else
|
43
|
-
|
47
|
+
info[:organization] = nil
|
48
|
+
client.current_organization = nil
|
49
|
+
false
|
44
50
|
end
|
45
51
|
end
|
46
52
|
|
47
|
-
def select_space(
|
53
|
+
def select_space(input, info, changed_org)
|
48
54
|
if input.has?(:space) || !space_valid?(info[:space])
|
49
55
|
line if changed_org && !quiet?
|
50
|
-
space = input[:space,
|
51
|
-
|
52
|
-
|
56
|
+
space = input[:space, client.current_organization]
|
57
|
+
if space
|
58
|
+
with_progress("Switching to space #{c(space.name, :name)}") {}
|
59
|
+
client.current_space = space
|
60
|
+
end
|
61
|
+
info[:space] = space ? space.guid : nil
|
53
62
|
else
|
54
|
-
|
63
|
+
info[:space] = nil
|
64
|
+
client.current_space = nil
|
55
65
|
end
|
56
66
|
end
|
57
67
|
|
58
68
|
def select_org_and_space(input, info)
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
:
|
64
|
-
|
65
|
-
|
69
|
+
changed_org = select_org(input, info)
|
70
|
+
if client.current_organization
|
71
|
+
select_space(input, info, changed_org)
|
72
|
+
else
|
73
|
+
info[:space] = nil
|
74
|
+
client.current_space = nil
|
75
|
+
end
|
66
76
|
end
|
67
77
|
|
68
78
|
def org_valid?(guid, user = client.current_user)
|
data/lib/vmc/version.rb
CHANGED
@@ -77,6 +77,27 @@ describe ExpectOutputMatcher, :ruby19 => true do
|
|
77
77
|
subject.negative_failure_message.should == "expected 'expected_output' to not be printed, but it was. full output:\nactual_output"
|
78
78
|
end
|
79
79
|
end
|
80
|
+
|
81
|
+
context "when expecting branching output" do
|
82
|
+
let(:expected_output) { {
|
83
|
+
"expected_output" => proc {},
|
84
|
+
"other_expected_output" => proc {}
|
85
|
+
} }
|
86
|
+
|
87
|
+
it "has a correct failure message" do
|
88
|
+
run("echo -n actual_output") do |runner|
|
89
|
+
subject.matches?(runner)
|
90
|
+
subject.failure_message.should == "expected one of 'expected_output', 'other_expected_output' to be printed, but it wasn't. full output:\nactual_output"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it "has a correct negative failure message" do
|
95
|
+
run("echo -n expected_output") do |runner|
|
96
|
+
subject.matches?(runner)
|
97
|
+
subject.negative_failure_message.should == "expected 'expected_output' to not be printed, but it was. full output:\nexpected_output"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
80
101
|
end
|
81
102
|
end
|
82
103
|
|
@@ -85,7 +85,7 @@ describe SpeckerRunner, :ruby19 => true do
|
|
85
85
|
|
86
86
|
context "expecting multiple branches" do
|
87
87
|
context "and one of them matches" do
|
88
|
-
it "can be passed a hash of values with callbacks" do
|
88
|
+
it "can be passed a hash of values with callbacks, and returns the matched key" do
|
89
89
|
run("echo 1 3") do |runner|
|
90
90
|
branches = {
|
91
91
|
"1" => proc { 1 },
|
@@ -93,8 +93,18 @@ describe SpeckerRunner, :ruby19 => true do
|
|
93
93
|
"3" => proc { 3 }
|
94
94
|
}
|
95
95
|
|
96
|
-
expect(runner.expect(branches)).to eq 1
|
97
|
-
expect(runner.expect(branches)).to eq 3
|
96
|
+
expect(runner.expect(branches)).to eq "1"
|
97
|
+
expect(runner.expect(branches)).to eq "3"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it "calls the matched callback" do
|
102
|
+
callback = mock!
|
103
|
+
run("echo 1 3") do |runner|
|
104
|
+
branches = {
|
105
|
+
"1" => proc { callback }
|
106
|
+
}
|
107
|
+
runner.expect(branches)
|
98
108
|
end
|
99
109
|
end
|
100
110
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
if ENV['VMC_V2_TEST_USER'] && ENV['VMC_V2_TEST_PASSWORD'] && ENV['VMC_V2_TEST_TARGET'] && ENV['VMC_V2_OTHER_TEST_USER']
|
4
|
+
describe 'A user logs in and switches spaces, after a different user has logged in', :ruby19 => true do
|
5
|
+
include ConsoleAppSpeckerMatchers
|
6
|
+
|
7
|
+
let(:target) { ENV['VMC_V2_TEST_TARGET'] }
|
8
|
+
let(:username) { ENV['VMC_V2_TEST_USER'] }
|
9
|
+
let(:password) { ENV['VMC_V2_TEST_PASSWORD'] }
|
10
|
+
|
11
|
+
let(:second_username) { ENV['VMC_V2_OTHER_TEST_USER'] }
|
12
|
+
let(:second_organization) { ENV['VMC_V2_OTHER_TEST_ORGANIZATION'] }
|
13
|
+
let(:second_space) { ENV['VMC_V2_OTHER_TEST_SPACE'] }
|
14
|
+
let(:second_password) { ENV['VMC_V2_OTHER_TEST_PASSWORD'] || ENV['VMC_V2_TEST_PASSWORD'] }
|
15
|
+
|
16
|
+
before do
|
17
|
+
Interact::Progress::Dots.start!
|
18
|
+
|
19
|
+
run("#{vmc_bin} target #{target}") do |runner|
|
20
|
+
expect(runner).to say "Setting target"
|
21
|
+
expect(runner).to say target
|
22
|
+
runner.wait_for_exit
|
23
|
+
end
|
24
|
+
|
25
|
+
run("#{vmc_bin} logout") do |runner|
|
26
|
+
runner.wait_for_exit
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
after do
|
31
|
+
Interact::Progress::Dots.stop!
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when a different user is already logged in" do
|
35
|
+
before do
|
36
|
+
run("#{vmc_bin} login #{username} --password #{password}") do |runner|
|
37
|
+
expect(runner).to say "Authenticating... OK"
|
38
|
+
|
39
|
+
expect(runner).to say "Switching to organization"
|
40
|
+
expect(runner).to say "OK"
|
41
|
+
|
42
|
+
expect(runner).to say "Space"
|
43
|
+
runner.send_keys("1")
|
44
|
+
|
45
|
+
expect(runner).to say "Switching to space"
|
46
|
+
expect(runner).to say "OK"
|
47
|
+
|
48
|
+
runner.wait_for_exit
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "can switch spaces on login" do
|
53
|
+
run("#{vmc_bin} login #{second_username} --password #{second_password} --organization #{second_organization} --space #{second_space}") do |runner|
|
54
|
+
expect(runner).to say "Authenticating... OK"
|
55
|
+
expect(runner).to say "Switching to organization #{second_organization}... OK"
|
56
|
+
expect(runner).to say "Switching to space #{second_space}... OK"
|
57
|
+
runner.wait_for_exit
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
else
|
63
|
+
$stderr.puts 'Skipping v2 integration specs; please provide $VMC_V2_TEST_TARGET, $VMC_V2_TEST_USER, $VMC_V2_TEST_PASSWORD, and $VMC_V2_OTHER_TEST_USER'
|
64
|
+
end
|
@@ -121,5 +121,5 @@ if ENV['VMC_V2_TEST_USER'] && ENV['VMC_V2_TEST_PASSWORD'] && ENV['VMC_V2_TEST_TA
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
else
|
124
|
-
$stderr.puts 'Skipping integration specs; please provide $
|
124
|
+
$stderr.puts 'Skipping v2 integration specs; please provide $VMC_V2_TEST_TARGET, $VMC_V2_TEST_USER, and $VMC_V2_TEST_PASSWORD'
|
125
125
|
end
|
@@ -16,7 +16,7 @@ if ENV['VMC_V2_TEST_TARGET']
|
|
16
16
|
|
17
17
|
it "can switch targets, even if a target is invalid" do
|
18
18
|
run("#{vmc_bin} target invalid-target") do |runner|
|
19
|
-
expect(runner).to say
|
19
|
+
expect(runner).to say /target refused/i
|
20
20
|
runner.wait_for_exit
|
21
21
|
end
|
22
22
|
|
@@ -29,4 +29,4 @@ if ENV['VMC_V2_TEST_TARGET']
|
|
29
29
|
end
|
30
30
|
else
|
31
31
|
$stderr.puts 'Skipping v2 integration specs; please provide $VMC_V2_TEST_TARGET'
|
32
|
-
end
|
32
|
+
end
|
@@ -11,17 +11,28 @@ module ConsoleAppSpeckerMatchers
|
|
11
11
|
|
12
12
|
def matches?(runner)
|
13
13
|
raise InvalidInputError unless runner.respond_to?(:expect)
|
14
|
-
|
14
|
+
@matched = runner.expect(@expected_output, @timeout)
|
15
15
|
@full_output = runner.output
|
16
|
-
|
16
|
+
!!@matched
|
17
17
|
end
|
18
18
|
|
19
19
|
def failure_message
|
20
|
-
|
20
|
+
if @expected_output.is_a?(Hash)
|
21
|
+
expected_keys = @expected_output.keys.map{|key| "'#{key}'"}.join(', ')
|
22
|
+
"expected one of #{expected_keys} to be printed, but it wasn't. full output:\n#@full_output"
|
23
|
+
else
|
24
|
+
"expected '#{@expected_output}' to be printed, but it wasn't. full output:\n#@full_output"
|
25
|
+
end
|
21
26
|
end
|
22
27
|
|
23
28
|
def negative_failure_message
|
24
|
-
|
29
|
+
if @expected_output.is_a?(Hash)
|
30
|
+
match = @matched
|
31
|
+
else
|
32
|
+
match = @expected_output
|
33
|
+
end
|
34
|
+
|
35
|
+
"expected '#{match}' to not be printed, but it was. full output:\n#@full_output"
|
25
36
|
end
|
26
37
|
end
|
27
38
|
|
@@ -69,6 +69,7 @@ class SpeckerRunner
|
|
69
69
|
data = expected.first.match(/(#{branch_names})$/)
|
70
70
|
matched = data[1]
|
71
71
|
branches[matched].call
|
72
|
+
matched
|
72
73
|
end
|
73
74
|
|
74
75
|
def numeric_exit_code(status)
|
@@ -76,4 +77,4 @@ class SpeckerRunner
|
|
76
77
|
rescue NoMethodError
|
77
78
|
status
|
78
79
|
end
|
79
|
-
end
|
80
|
+
end
|
@@ -31,7 +31,7 @@ describe VMC::App::Create do
|
|
31
31
|
|
32
32
|
let(:path) { "some-path" }
|
33
33
|
|
34
|
-
|
34
|
+
subject(:create) do
|
35
35
|
command = Mothership.commands[:push]
|
36
36
|
create = VMC::App::Push.new(command)
|
37
37
|
create.path = path
|
@@ -295,6 +295,7 @@ describe VMC::App::Create do
|
|
295
295
|
before { dont_allow_ask }
|
296
296
|
|
297
297
|
let(:app) { fake(:app, :guid => nil) }
|
298
|
+
let(:space) { fake(:space, :name => "some-space") }
|
298
299
|
|
299
300
|
let(:attributes) do
|
300
301
|
{ :name => "some-app",
|
@@ -307,7 +308,10 @@ describe VMC::App::Create do
|
|
307
308
|
}
|
308
309
|
end
|
309
310
|
|
310
|
-
before
|
311
|
+
before do
|
312
|
+
stub(client).app { app }
|
313
|
+
stub(client).current_space { space }
|
314
|
+
end
|
311
315
|
|
312
316
|
subject { create.create_app(attributes) }
|
313
317
|
|
@@ -323,6 +327,16 @@ describe VMC::App::Create do
|
|
323
327
|
end
|
324
328
|
end
|
325
329
|
|
330
|
+
context "when the user does not have permission to create apps" do
|
331
|
+
it "fails with a friendly message" do
|
332
|
+
stub(app).create! { raise CFoundry::NotAuthorized, "foo" }
|
333
|
+
|
334
|
+
expect { subject }.to raise_error(
|
335
|
+
VMC::UserError,
|
336
|
+
"You need the Project Developer role in some-space to push.")
|
337
|
+
end
|
338
|
+
end
|
339
|
+
|
326
340
|
context "with an invalid buildpack" do
|
327
341
|
before do
|
328
342
|
stub(app).create! do
|
@@ -588,4 +602,32 @@ describe VMC::App::Create do
|
|
588
602
|
end
|
589
603
|
end
|
590
604
|
end
|
605
|
+
|
606
|
+
describe '#memory_choices' do
|
607
|
+
let(:info) { {} }
|
608
|
+
|
609
|
+
before do
|
610
|
+
stub(client).info { info }
|
611
|
+
end
|
612
|
+
|
613
|
+
context "when the user has usage information" do
|
614
|
+
let(:info) do
|
615
|
+
{ :usage => { :memory => 512 },
|
616
|
+
:limits => { :memory => 2048 }
|
617
|
+
}
|
618
|
+
end
|
619
|
+
|
620
|
+
it "asks for the memory with the ceiling taking the memory usage into account" do
|
621
|
+
expect(subject.memory_choices).to eq(%w[64M 128M 256M 512M 1G])
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
context "when the user does not have usage information" do
|
626
|
+
let(:info) { {:limits => { :memory => 2048 } } }
|
627
|
+
|
628
|
+
it "asks for the memory with the ceiling as their overall limit" do
|
629
|
+
expect(subject.memory_choices).to eq(%w[64M 128M 256M 512M 1G 2G])
|
630
|
+
end
|
631
|
+
end
|
632
|
+
end
|
591
633
|
end
|
@@ -98,6 +98,8 @@ command VMC::App::Start do
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
+
let(:log_url) { nil }
|
102
|
+
|
101
103
|
before do
|
102
104
|
stub(app).invalidate!
|
103
105
|
stub(app).instances do
|
@@ -164,5 +166,43 @@ command VMC::App::Start do
|
|
164
166
|
it_does_not_print_log_progress
|
165
167
|
it_waits_for_application_to_become_healthy
|
166
168
|
end
|
169
|
+
|
170
|
+
context "when a debug mode is given" do
|
171
|
+
let(:mode) { "foo" }
|
172
|
+
|
173
|
+
subject { vmc %W[start #{app.name} -d #{mode}] }
|
174
|
+
|
175
|
+
context "and the debug mode is different from the one already set" do
|
176
|
+
it "starts the app with the given debug mode" do
|
177
|
+
expect { subject }.to change { app.debug }.from(nil).to("foo")
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
context "and the debug mode is the same as the one already set" do
|
182
|
+
let(:app) { fake :app, :debug => "foo" }
|
183
|
+
|
184
|
+
it "does not set the debug mode to anything different" do
|
185
|
+
dont_allow(app).debug = anything
|
186
|
+
subject
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
context "and the mode is given as 'none'" do
|
191
|
+
let(:app) { fake :app, :debug => "foo" }
|
192
|
+
let(:mode) { "none" }
|
193
|
+
|
194
|
+
it "removes the debug mode" do
|
195
|
+
expect { subject }.to change { app.debug }.from("foo").to(nil)
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
context "and an empty mode is given" do
|
200
|
+
let(:mode) { "" }
|
201
|
+
|
202
|
+
it "sets debug to 'run'" do
|
203
|
+
expect { subject }.to change { app.debug }.from(nil).to("run")
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
167
207
|
end
|
168
208
|
end
|
metadata
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vmc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 2761529585
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
|
9
|
+
- 1
|
10
|
+
- rc
|
11
|
+
- 1
|
12
|
+
version: 0.5.1.rc1
|
11
13
|
platform: ruby
|
12
14
|
authors:
|
13
15
|
- Cloud Foundry Team
|
@@ -16,10 +18,12 @@ autorequire:
|
|
16
18
|
bindir: bin
|
17
19
|
cert_chain: []
|
18
20
|
|
19
|
-
date: 2013-03-
|
21
|
+
date: 2013-03-06 00:00:00 Z
|
20
22
|
dependencies:
|
21
23
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
24
|
+
name: json_pure
|
25
|
+
prerelease: false
|
26
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
27
|
none: false
|
24
28
|
requirements:
|
25
29
|
- - ~>
|
@@ -29,12 +33,12 @@ dependencies:
|
|
29
33
|
- 1
|
30
34
|
- 6
|
31
35
|
version: "1.6"
|
32
|
-
prerelease: false
|
33
36
|
type: :runtime
|
34
|
-
|
35
|
-
requirement: *id001
|
37
|
+
version_requirements: *id001
|
36
38
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
39
|
+
name: multi_json
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
42
|
none: false
|
39
43
|
requirements:
|
40
44
|
- - ~>
|
@@ -44,12 +48,12 @@ dependencies:
|
|
44
48
|
- 1
|
45
49
|
- 3
|
46
50
|
version: "1.3"
|
47
|
-
prerelease: false
|
48
51
|
type: :runtime
|
49
|
-
|
50
|
-
requirement: *id002
|
52
|
+
version_requirements: *id002
|
51
53
|
- !ruby/object:Gem::Dependency
|
52
|
-
|
54
|
+
name: interact
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
57
|
none: false
|
54
58
|
requirements:
|
55
59
|
- - ~>
|
@@ -59,28 +63,37 @@ dependencies:
|
|
59
63
|
- 0
|
60
64
|
- 5
|
61
65
|
version: "0.5"
|
62
|
-
prerelease: false
|
63
66
|
type: :runtime
|
64
|
-
|
65
|
-
requirement: *id003
|
67
|
+
version_requirements: *id003
|
66
68
|
- !ruby/object:Gem::Dependency
|
67
|
-
|
69
|
+
name: cfoundry
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
72
|
none: false
|
69
73
|
requirements:
|
70
|
-
- -
|
74
|
+
- - ">="
|
71
75
|
- !ruby/object:Gem::Version
|
72
|
-
hash:
|
76
|
+
hash: 2761529569
|
73
77
|
segments:
|
74
78
|
- 0
|
75
79
|
- 5
|
76
|
-
-
|
77
|
-
|
78
|
-
|
80
|
+
- 3
|
81
|
+
- rc
|
82
|
+
- 1
|
83
|
+
version: 0.5.3.rc1
|
84
|
+
- - <
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 7
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
- 6
|
90
|
+
version: "0.6"
|
79
91
|
type: :runtime
|
80
|
-
|
81
|
-
requirement: *id004
|
92
|
+
version_requirements: *id004
|
82
93
|
- !ruby/object:Gem::Dependency
|
83
|
-
|
94
|
+
name: clouseau
|
95
|
+
prerelease: false
|
96
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
97
|
none: false
|
85
98
|
requirements:
|
86
99
|
- - ~>
|
@@ -90,12 +103,12 @@ dependencies:
|
|
90
103
|
- 0
|
91
104
|
- 0
|
92
105
|
version: "0.0"
|
93
|
-
prerelease: false
|
94
106
|
type: :runtime
|
95
|
-
|
96
|
-
requirement: *id005
|
107
|
+
version_requirements: *id005
|
97
108
|
- !ruby/object:Gem::Dependency
|
98
|
-
|
109
|
+
name: mothership
|
110
|
+
prerelease: false
|
111
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
99
112
|
none: false
|
100
113
|
requirements:
|
101
114
|
- - ">="
|
@@ -113,12 +126,12 @@ dependencies:
|
|
113
126
|
- 1
|
114
127
|
- 0
|
115
128
|
version: "1.0"
|
116
|
-
prerelease: false
|
117
129
|
type: :runtime
|
118
|
-
|
119
|
-
requirement: *id006
|
130
|
+
version_requirements: *id006
|
120
131
|
- !ruby/object:Gem::Dependency
|
121
|
-
|
132
|
+
name: manifests-vmc-plugin
|
133
|
+
prerelease: false
|
134
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
122
135
|
none: false
|
123
136
|
requirements:
|
124
137
|
- - ~>
|
@@ -129,12 +142,12 @@ dependencies:
|
|
129
142
|
- 6
|
130
143
|
- 2
|
131
144
|
version: 0.6.2
|
132
|
-
prerelease: false
|
133
145
|
type: :runtime
|
134
|
-
|
135
|
-
requirement: *id007
|
146
|
+
version_requirements: *id007
|
136
147
|
- !ruby/object:Gem::Dependency
|
137
|
-
|
148
|
+
name: tunnel-vmc-plugin
|
149
|
+
prerelease: false
|
150
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
138
151
|
none: false
|
139
152
|
requirements:
|
140
153
|
- - ~>
|
@@ -145,12 +158,12 @@ dependencies:
|
|
145
158
|
- 2
|
146
159
|
- 2
|
147
160
|
version: 0.2.2
|
148
|
-
prerelease: false
|
149
161
|
type: :runtime
|
150
|
-
|
151
|
-
requirement: *id008
|
162
|
+
version_requirements: *id008
|
152
163
|
- !ruby/object:Gem::Dependency
|
153
|
-
|
164
|
+
name: rake
|
165
|
+
prerelease: false
|
166
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
154
167
|
none: false
|
155
168
|
requirements:
|
156
169
|
- - ~>
|
@@ -160,12 +173,12 @@ dependencies:
|
|
160
173
|
- 0
|
161
174
|
- 9
|
162
175
|
version: "0.9"
|
163
|
-
prerelease: false
|
164
176
|
type: :development
|
165
|
-
|
166
|
-
requirement: *id009
|
177
|
+
version_requirements: *id009
|
167
178
|
- !ruby/object:Gem::Dependency
|
168
|
-
|
179
|
+
name: rspec
|
180
|
+
prerelease: false
|
181
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
169
182
|
none: false
|
170
183
|
requirements:
|
171
184
|
- - ~>
|
@@ -175,12 +188,12 @@ dependencies:
|
|
175
188
|
- 2
|
176
189
|
- 11
|
177
190
|
version: "2.11"
|
178
|
-
prerelease: false
|
179
191
|
type: :development
|
180
|
-
|
181
|
-
requirement: *id010
|
192
|
+
version_requirements: *id010
|
182
193
|
- !ruby/object:Gem::Dependency
|
183
|
-
|
194
|
+
name: webmock
|
195
|
+
prerelease: false
|
196
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
184
197
|
none: false
|
185
198
|
requirements:
|
186
199
|
- - ~>
|
@@ -190,12 +203,12 @@ dependencies:
|
|
190
203
|
- 1
|
191
204
|
- 9
|
192
205
|
version: "1.9"
|
193
|
-
prerelease: false
|
194
206
|
type: :development
|
195
|
-
|
196
|
-
requirement: *id011
|
207
|
+
version_requirements: *id011
|
197
208
|
- !ruby/object:Gem::Dependency
|
198
|
-
|
209
|
+
name: rr
|
210
|
+
prerelease: false
|
211
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
199
212
|
none: false
|
200
213
|
requirements:
|
201
214
|
- - ~>
|
@@ -205,10 +218,8 @@ dependencies:
|
|
205
218
|
- 1
|
206
219
|
- 0
|
207
220
|
version: "1.0"
|
208
|
-
prerelease: false
|
209
221
|
type: :development
|
210
|
-
|
211
|
-
requirement: *id012
|
222
|
+
version_requirements: *id012
|
212
223
|
description:
|
213
224
|
email:
|
214
225
|
- vcap-dev@googlegroups.com
|
@@ -307,6 +318,7 @@ files:
|
|
307
318
|
- spec/console_app_specker/specker_runner_spec.rb
|
308
319
|
- spec/features/v1/new_user_flow_spec.rb
|
309
320
|
- spec/features/v2/account_lifecycle_spec.rb
|
321
|
+
- spec/features/v2/login_spec.rb
|
310
322
|
- spec/features/v2/push_flow_spec.rb
|
311
323
|
- spec/features/v2/switching_targets_spec.rb
|
312
324
|
- spec/spec_helper.rb
|
@@ -374,12 +386,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
374
386
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
375
387
|
none: false
|
376
388
|
requirements:
|
377
|
-
- - "
|
389
|
+
- - ">"
|
378
390
|
- !ruby/object:Gem::Version
|
379
|
-
hash:
|
391
|
+
hash: 25
|
380
392
|
segments:
|
381
|
-
-
|
382
|
-
|
393
|
+
- 1
|
394
|
+
- 3
|
395
|
+
- 1
|
396
|
+
version: 1.3.1
|
383
397
|
requirements: []
|
384
398
|
|
385
399
|
rubyforge_project: vmc
|
@@ -398,6 +412,7 @@ test_files:
|
|
398
412
|
- spec/console_app_specker/specker_runner_spec.rb
|
399
413
|
- spec/features/v1/new_user_flow_spec.rb
|
400
414
|
- spec/features/v2/account_lifecycle_spec.rb
|
415
|
+
- spec/features/v2/login_spec.rb
|
401
416
|
- spec/features/v2/push_flow_spec.rb
|
402
417
|
- spec/features/v2/switching_targets_spec.rb
|
403
418
|
- spec/spec_helper.rb
|