engineyard 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/engineyard/cli.rb +4 -3
- data/lib/engineyard/cli/ui.rb +2 -2
- data/lib/engineyard/collection/abstract.rb +17 -3
- data/lib/engineyard/model/app.rb +1 -1
- data/lib/engineyard/model/environment.rb +1 -1
- data/lib/engineyard/version.rb +1 -1
- data/spec/engineyard/collection/apps_spec.rb +1 -1
- data/spec/engineyard/collection/environments_spec.rb +1 -1
- data/spec/engineyard/model/environment_spec.rb +6 -12
- data/spec/engineyard/model/instance_spec.rb +0 -5
- data/spec/engineyard/repo_spec.rb +8 -5
- data/spec/engineyard/resolver_spec.rb +4 -11
- data/spec/ey/deploy_spec.rb +2 -2
- data/spec/ey/list_environments_spec.rb +1 -1
- data/spec/ey/logs_spec.rb +1 -1
- data/spec/ey/rebuild_spec.rb +1 -1
- data/spec/ey/recipes/apply_spec.rb +2 -2
- data/spec/ey/recipes/download_spec.rb +3 -3
- data/spec/ey/recipes/upload_spec.rb +3 -3
- data/spec/ey/rollback_spec.rb +2 -2
- data/spec/ey/ssh_spec.rb +25 -27
- data/spec/ey/web/disable_spec.rb +2 -2
- data/spec/ey/web/enable_spec.rb +2 -2
- data/spec/spec_helper.rb +8 -29
- data/spec/support/fake_awsm.rb +51 -0
- data/spec/support/helpers.rb +170 -183
- data/spec/support/matchers.rb +44 -0
- data/spec/support/shared_behavior.rb +6 -34
- metadata +19 -18
- data/spec/support/git_repo.rb +0 -36
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'rspec/matchers'
|
2
|
+
|
3
|
+
RSpec::Matchers.define :have_command_like do |regex|
|
4
|
+
match do |command_list|
|
5
|
+
@found = command_list.find{|c| c =~ regex }
|
6
|
+
!!@found
|
7
|
+
end
|
8
|
+
|
9
|
+
failure_message_for_should do |command_list|
|
10
|
+
"Didn't find a command matching #{regex} in commands:\n\n" + command_list.join("\n\n")
|
11
|
+
end
|
12
|
+
|
13
|
+
failure_message_for_should_not do |command_list|
|
14
|
+
"Found unwanted command:\n\n#{@found}\n\n(matches regex #{regex})"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
RSpec::Matchers.define :have_app_code do
|
19
|
+
match { |instance| instance.has_app_code? }
|
20
|
+
|
21
|
+
failure_message_for_should do |instance|
|
22
|
+
"Expected #has_app_code? to be true on instance: #{instance.inspect}"
|
23
|
+
end
|
24
|
+
|
25
|
+
failure_message_for_should_not do |instance|
|
26
|
+
"Expected #has_app_code? to be false on instance: #{instance.inspect}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
RSpec::Matchers.define :resolve_to do |expected|
|
31
|
+
match do |pair|
|
32
|
+
app, env = *pair
|
33
|
+
app.name == expected[:app_name] && env.name == expected[:environment_name]
|
34
|
+
end
|
35
|
+
|
36
|
+
failure_message_for_should do |pair|
|
37
|
+
app, env = *pair
|
38
|
+
"Expected: #{expected[:app_name]}, #{expected[:environment_name]}; Got: #{app.name}, #{env.name}"
|
39
|
+
end
|
40
|
+
|
41
|
+
failure_message_for_should_not do |pair|
|
42
|
+
"Expected to not match: #{expected[:app_name]}, #{expected[:environment_name]}"
|
43
|
+
end
|
44
|
+
end
|
@@ -1,29 +1,6 @@
|
|
1
|
-
|
2
|
-
module Helpers
|
3
|
-
module SharedIntegrationTestUtils
|
4
|
-
|
5
|
-
def run_ey(command_options, ey_options={})
|
6
|
-
if respond_to?(:extra_ey_options) # needed for ssh tests
|
7
|
-
ey_options.merge!(extra_ey_options)
|
8
|
-
end
|
9
|
-
|
10
|
-
ey(command_to_run(command_options), ey_options)
|
11
|
-
end
|
12
|
-
|
13
|
-
def make_scenario(hash)
|
14
|
-
# since nil will silently turn to empty string when interpolated,
|
15
|
-
# and there's a lot of string matching involved in integration
|
16
|
-
# testing, it would be nice to have early notification of typos.
|
17
|
-
scenario = Hash.new { |h,k| raise "Tried to get key #{k.inspect}, but it's missing!" }
|
18
|
-
scenario.merge!(hash)
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
1
|
+
require 'ostruct'
|
24
2
|
|
25
3
|
shared_examples_for "it has an ambiguous git repo" do
|
26
|
-
include Spec::Helpers::SharedIntegrationTestUtils
|
27
4
|
|
28
5
|
define_git_repo('dup test') do
|
29
6
|
system("git remote add dup git://github.com/engineyard/dup.git")
|
@@ -37,7 +14,7 @@ shared_examples_for "it has an ambiguous git repo" do
|
|
37
14
|
end
|
38
15
|
|
39
16
|
shared_examples_for "it requires an unambiguous git repo" do
|
40
|
-
|
17
|
+
include_examples "it has an ambiguous git repo"
|
41
18
|
|
42
19
|
it "lists disambiguating environments to choose from" do
|
43
20
|
run_ey({}, {:expect_failure => true})
|
@@ -49,8 +26,8 @@ shared_examples_for "it requires an unambiguous git repo" do
|
|
49
26
|
end
|
50
27
|
|
51
28
|
shared_examples_for "it takes an environment name and an app name and an account name" do
|
52
|
-
|
53
|
-
|
29
|
+
include_examples "it takes an app name"
|
30
|
+
include_examples "it takes an environment name"
|
54
31
|
|
55
32
|
context "when multiple accounts with collaboration" do
|
56
33
|
before :all do
|
@@ -77,7 +54,7 @@ shared_examples_for "it takes an environment name and an app name and an account
|
|
77
54
|
end
|
78
55
|
|
79
56
|
shared_examples_for "it takes an environment name and an account name" do
|
80
|
-
|
57
|
+
include_examples "it takes an environment name"
|
81
58
|
|
82
59
|
context "when multiple accounts with collaboration" do
|
83
60
|
before :all do
|
@@ -119,8 +96,6 @@ shared_examples_for "it takes an environment name and an account name" do
|
|
119
96
|
end
|
120
97
|
|
121
98
|
shared_examples_for "it takes an environment name" do
|
122
|
-
include Spec::Helpers::SharedIntegrationTestUtils
|
123
|
-
|
124
99
|
it "operates on the current environment by default" do
|
125
100
|
api_scenario "one app, one environment"
|
126
101
|
run_ey({:environment => nil}, {:debug => true})
|
@@ -194,7 +169,6 @@ shared_examples_for "it takes an environment name" do
|
|
194
169
|
end
|
195
170
|
|
196
171
|
shared_examples_for "it takes an app name" do
|
197
|
-
include Spec::Helpers::SharedIntegrationTestUtils
|
198
172
|
before { @takes_app_name = true }
|
199
173
|
|
200
174
|
it "allows you to specify a valid app" do
|
@@ -233,8 +207,6 @@ shared_examples_for "it takes an app name" do
|
|
233
207
|
end
|
234
208
|
|
235
209
|
shared_examples_for "it invokes engineyard-serverside" do
|
236
|
-
include Spec::Helpers::SharedIntegrationTestUtils
|
237
|
-
|
238
210
|
context "with arguments" do
|
239
211
|
before(:all) do
|
240
212
|
api_scenario "one app, one environment"
|
@@ -296,7 +268,7 @@ shared_examples_for "model collections" do
|
|
296
268
|
it "returns nil when it can't find anything" do
|
297
269
|
@collection.match_one("dev-and-production").should be_nil
|
298
270
|
end
|
299
|
-
|
271
|
+
end
|
300
272
|
|
301
273
|
describe "#match_one!" do
|
302
274
|
it "works when given an unambiguous substring" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
9
|
+
- 1
|
10
|
+
version: 1.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- EY Cloud Team
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-10-
|
18
|
+
date: 2011-10-18 00:00:00 -07:00
|
19
19
|
default_executable: ey
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -105,12 +105,12 @@ dependencies:
|
|
105
105
|
requirements:
|
106
106
|
- - "="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
hash:
|
108
|
+
hash: 7
|
109
109
|
segments:
|
110
110
|
- 1
|
111
111
|
- 5
|
112
|
-
-
|
113
|
-
version: 1.5.
|
112
|
+
- 2
|
113
|
+
version: 1.5.2
|
114
114
|
requirement: *id006
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: net-ssh
|
@@ -151,14 +151,13 @@ dependencies:
|
|
151
151
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
152
152
|
none: false
|
153
153
|
requirements:
|
154
|
-
- -
|
154
|
+
- - ~>
|
155
155
|
- !ruby/object:Gem::Version
|
156
|
-
hash:
|
156
|
+
hash: 3
|
157
157
|
segments:
|
158
|
-
-
|
159
|
-
- 3
|
158
|
+
- 2
|
160
159
|
- 0
|
161
|
-
version:
|
160
|
+
version: "2.0"
|
162
161
|
requirement: *id009
|
163
162
|
- !ruby/object:Gem::Dependency
|
164
163
|
name: rake
|
@@ -239,12 +238,12 @@ dependencies:
|
|
239
238
|
requirements:
|
240
239
|
- - ~>
|
241
240
|
- !ruby/object:Gem::Version
|
242
|
-
hash:
|
241
|
+
hash: 19
|
243
242
|
segments:
|
244
243
|
- 0
|
245
|
-
-
|
246
|
-
-
|
247
|
-
version: 0.
|
244
|
+
- 2
|
245
|
+
- 2
|
246
|
+
version: 0.2.2
|
248
247
|
requirement: *id015
|
249
248
|
- !ruby/object:Gem::Dependency
|
250
249
|
name: open4
|
@@ -330,10 +329,11 @@ files:
|
|
330
329
|
- spec/ey/whoami_spec.rb
|
331
330
|
- spec/spec_helper.rb
|
332
331
|
- spec/support/bundled_ey
|
332
|
+
- spec/support/fake_awsm.rb
|
333
333
|
- spec/support/fake_awsm.ru
|
334
334
|
- spec/support/fixture_recipes.tgz
|
335
|
-
- spec/support/git_repo.rb
|
336
335
|
- spec/support/helpers.rb
|
336
|
+
- spec/support/matchers.rb
|
337
337
|
- spec/support/ruby_ext.rb
|
338
338
|
- spec/support/scenarios.rb
|
339
339
|
- spec/support/shared_behavior.rb
|
@@ -412,10 +412,11 @@ test_files:
|
|
412
412
|
- spec/ey/whoami_spec.rb
|
413
413
|
- spec/spec_helper.rb
|
414
414
|
- spec/support/bundled_ey
|
415
|
+
- spec/support/fake_awsm.rb
|
415
416
|
- spec/support/fake_awsm.ru
|
416
417
|
- spec/support/fixture_recipes.tgz
|
417
|
-
- spec/support/git_repo.rb
|
418
418
|
- spec/support/helpers.rb
|
419
|
+
- spec/support/matchers.rb
|
419
420
|
- spec/support/ruby_ext.rb
|
420
421
|
- spec/support/scenarios.rb
|
421
422
|
- spec/support/shared_behavior.rb
|
data/spec/support/git_repo.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module GitRepo
|
3
|
-
module ClassMethods
|
4
|
-
|
5
|
-
def define_git_repo(name, &setup)
|
6
|
-
# EY's ivars don't get cleared between examples, so we can keep
|
7
|
-
# a git repo around longer (and thus make our tests faster)
|
8
|
-
FakeFS.without { EY.define_git_repo(name, &setup) }
|
9
|
-
end
|
10
|
-
|
11
|
-
def use_git_repo(repo_name)
|
12
|
-
before(:all) do
|
13
|
-
FakeFS.without do
|
14
|
-
@_original_wd ||= []
|
15
|
-
@_original_wd << Dir.getwd
|
16
|
-
Dir.chdir(EY.git_repo_dir(repo_name))
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
after(:all) do
|
21
|
-
FakeFS.without { Dir.chdir(@_original_wd.pop) }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end # ClassMethods
|
26
|
-
|
27
|
-
def refresh_git_repo(name)
|
28
|
-
EY.refresh_git_repo(name)
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.included(other)
|
32
|
-
other.extend ClassMethods
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|