engineyard-serverside 2.8.0.pre → 2.8.0.pre2

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.
Files changed (202) hide show
  1. checksums.yaml +7 -0
  2. data/bin/engineyard-serverside-execute-service-hook +1 -1
  3. data/lib/engineyard-serverside/version.rb +1 -1
  4. metadata +208 -577
  5. data/spec/archive_deploy_spec.rb +0 -53
  6. data/spec/basic_deploy_spec.rb +0 -26
  7. data/spec/bundler_deploy_spec.rb +0 -160
  8. data/spec/configuration_spec.rb +0 -206
  9. data/spec/custom_deploy_spec.rb +0 -128
  10. data/spec/deploy_hook_spec.rb +0 -378
  11. data/spec/deprecation_spec.rb +0 -23
  12. data/spec/ey_yml_customized_deploy_spec.rb +0 -99
  13. data/spec/fixtures/gitrepo.tar.gz +0 -0
  14. data/spec/fixtures/invalid_hook.rb +0 -1
  15. data/spec/fixtures/lockfiles/0.9-no-bundler +0 -111
  16. data/spec/fixtures/lockfiles/0.9-with-bundler +0 -117
  17. data/spec/fixtures/lockfiles/1.0-no-bundler +0 -54
  18. data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +0 -162
  19. data/spec/fixtures/lockfiles/1.0.18-do_mysql +0 -88
  20. data/spec/fixtures/lockfiles/1.0.18-do_postgres +0 -79
  21. data/spec/fixtures/lockfiles/1.0.18-mysql +0 -43
  22. data/spec/fixtures/lockfiles/1.0.18-mysql2 +0 -43
  23. data/spec/fixtures/lockfiles/1.0.18-pg +0 -43
  24. data/spec/fixtures/lockfiles/1.0.6-no-bundler +0 -51
  25. data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +0 -52
  26. data/spec/fixtures/lockfiles/1.0.6-with-bundler +0 -52
  27. data/spec/fixtures/lockfiles/1.15.1-no-bundler +0 -51
  28. data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +0 -112
  29. data/spec/fixtures/lockfiles/not-a-lockfile +0 -1
  30. data/spec/fixtures/repos/assets_detected/Gemfile +0 -5
  31. data/spec/fixtures/repos/assets_detected/Gemfile.lock +0 -88
  32. data/spec/fixtures/repos/assets_detected/README +0 -1
  33. data/spec/fixtures/repos/assets_detected/Rakefile +0 -5
  34. data/spec/fixtures/repos/assets_detected/app/assets/empty +0 -0
  35. data/spec/fixtures/repos/assets_detected/config/application.rb +0 -5
  36. data/spec/fixtures/repos/assets_detected/config/ey.yml +0 -3
  37. data/spec/fixtures/repos/assets_disabled/Gemfile +0 -5
  38. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +0 -88
  39. data/spec/fixtures/repos/assets_disabled/README +0 -1
  40. data/spec/fixtures/repos/assets_disabled/Rakefile +0 -6
  41. data/spec/fixtures/repos/assets_disabled/app/assets/empty +0 -0
  42. data/spec/fixtures/repos/assets_disabled/config/application.rb +0 -5
  43. data/spec/fixtures/repos/assets_disabled/config/ey.yml +0 -3
  44. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +0 -5
  45. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +0 -88
  46. data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +0 -1
  47. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +0 -6
  48. data/spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty +0 -0
  49. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +0 -5
  50. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +0 -5
  51. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile +0 -5
  52. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile.lock +0 -88
  53. data/spec/fixtures/repos/assets_disabled_utf8/README +0 -3
  54. data/spec/fixtures/repos/assets_disabled_utf8/Rakefile +0 -5
  55. data/spec/fixtures/repos/assets_disabled_utf8/app/assets/empty +0 -0
  56. data/spec/fixtures/repos/assets_disabled_utf8/config/application.rb +0 -7
  57. data/spec/fixtures/repos/assets_disabled_utf8/config/ey.yml +0 -3
  58. data/spec/fixtures/repos/assets_enabled_all/Gemfile +0 -5
  59. data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +0 -88
  60. data/spec/fixtures/repos/assets_enabled_all/README +0 -1
  61. data/spec/fixtures/repos/assets_enabled_all/app/assets/empty +0 -0
  62. data/spec/fixtures/repos/assets_enabled_all/config/application.rb +0 -5
  63. data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +0 -6
  64. data/spec/fixtures/repos/assets_enabled_all/script/assets +0 -5
  65. data/spec/fixtures/repos/assets_enabled_all/tmp/obstruction +0 -1
  66. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +0 -3
  67. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +0 -10
  68. data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +0 -1
  69. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +0 -8
  70. data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +0 -4
  71. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +0 -5
  72. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +0 -88
  73. data/spec/fixtures/repos/assets_enabled_util_only/README +0 -1
  74. data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +0 -6
  75. data/spec/fixtures/repos/assets_enabled_util_only/app/assets/empty +0 -0
  76. data/spec/fixtures/repos/assets_enabled_util_only/config/application.rb +0 -5
  77. data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +0 -6
  78. data/spec/fixtures/repos/assets_error/Gemfile +0 -5
  79. data/spec/fixtures/repos/assets_error/Gemfile.lock +0 -88
  80. data/spec/fixtures/repos/assets_error/README +0 -1
  81. data/spec/fixtures/repos/assets_error/Rakefile +0 -4
  82. data/spec/fixtures/repos/assets_error/app/assets/empty +0 -0
  83. data/spec/fixtures/repos/assets_error/config/application.rb +0 -5
  84. data/spec/fixtures/repos/assets_error/config/ey.yml +0 -4
  85. data/spec/fixtures/repos/assets_in_hook/Gemfile +0 -5
  86. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +0 -88
  87. data/spec/fixtures/repos/assets_in_hook/README +0 -2
  88. data/spec/fixtures/repos/assets_in_hook/Rakefile +0 -5
  89. data/spec/fixtures/repos/assets_in_hook/app/assets/empty +0 -0
  90. data/spec/fixtures/repos/assets_in_hook/config/application.rb +0 -5
  91. data/spec/fixtures/repos/assets_in_hook/config/ey.yml +0 -3
  92. data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +0 -2
  93. data/spec/fixtures/repos/bundle_fails/Gemfile +0 -1
  94. data/spec/fixtures/repos/bundle_fails/README +0 -1
  95. data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +0 -1
  96. data/spec/fixtures/repos/bundler_disabled/Gemfile +0 -4
  97. data/spec/fixtures/repos/bundler_disabled/Gemfile.lock +0 -12
  98. data/spec/fixtures/repos/bundler_disabled/README +0 -1
  99. data/spec/fixtures/repos/bundler_disabled/config/ey.yml +0 -2
  100. data/spec/fixtures/repos/bundler_disabled/deploy/after_bundle.rb +0 -1
  101. data/spec/fixtures/repos/bundler_disabled/deploy/before_bundle.rb +0 -1
  102. data/spec/fixtures/repos/bundler_old/Gemfile +0 -5
  103. data/spec/fixtures/repos/bundler_old/Gemfile.lock +0 -15
  104. data/spec/fixtures/repos/bundler_old/README +0 -1
  105. data/spec/fixtures/repos/default/Gemfile +0 -4
  106. data/spec/fixtures/repos/default/Gemfile.lock +0 -12
  107. data/spec/fixtures/repos/default/README +0 -5
  108. data/spec/fixtures/repos/default/ey.yml +0 -3
  109. data/spec/fixtures/repos/executable_hooks/README +0 -1
  110. data/spec/fixtures/repos/executable_hooks/deploy/before_restart +0 -72
  111. data/spec/fixtures/repos/executable_hooks_not_executable/README +0 -3
  112. data/spec/fixtures/repos/executable_hooks_not_executable/deploy/before_restart +0 -3
  113. data/spec/fixtures/repos/ey_yml/Gemfile +0 -4
  114. data/spec/fixtures/repos/ey_yml/Gemfile.lock +0 -12
  115. data/spec/fixtures/repos/ey_yml/README +0 -1
  116. data/spec/fixtures/repos/ey_yml/config/ey.yml +0 -18
  117. data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +0 -6
  118. data/spec/fixtures/repos/ey_yml_alt/Gemfile +0 -4
  119. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +0 -12
  120. data/spec/fixtures/repos/ey_yml_alt/README +0 -1
  121. data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +0 -6
  122. data/spec/fixtures/repos/ey_yml_alt/ey.yml +0 -12
  123. data/spec/fixtures/repos/hook_fails/README +0 -1
  124. data/spec/fixtures/repos/hook_fails/deploy/before_deploy.rb +0 -1
  125. data/spec/fixtures/repos/hooks/README +0 -1
  126. data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +0 -1
  127. data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +0 -1
  128. data/spec/fixtures/repos/hooks/deploy/after_deploy.rb +0 -1
  129. data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +0 -1
  130. data/spec/fixtures/repos/hooks/deploy/after_restart.rb +0 -1
  131. data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +0 -1
  132. data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +0 -1
  133. data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +0 -1
  134. data/spec/fixtures/repos/hooks/deploy/before_deploy.rb +0 -1
  135. data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +0 -1
  136. data/spec/fixtures/repos/hooks/deploy/before_restart.rb +0 -1
  137. data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +0 -1
  138. data/spec/fixtures/repos/multi_dep_manager/README +0 -1
  139. data/spec/fixtures/repos/multi_dep_manager/composer.json +0 -5
  140. data/spec/fixtures/repos/multi_dep_manager/composer.lock +0 -462
  141. data/spec/fixtures/repos/multi_dep_manager/package.json +0 -7
  142. data/spec/fixtures/repos/multi_dep_manager/public/index.php +0 -4
  143. data/spec/fixtures/repos/no_ey_config/Gemfile +0 -3
  144. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +0 -10
  145. data/spec/fixtures/repos/no_ey_config/README +0 -1
  146. data/spec/fixtures/repos/no_ey_config/ey.yml +0 -3
  147. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile +0 -3
  148. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile.lock +0 -10
  149. data/spec/fixtures/repos/no_ey_config_no_warning/README +0 -1
  150. data/spec/fixtures/repos/no_ey_config_no_warning/ey.yml +0 -5
  151. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +0 -4
  152. data/spec/fixtures/repos/no_gemfile_lock/README +0 -1
  153. data/spec/fixtures/repos/no_gemfile_lock/ey.yml +0 -3
  154. data/spec/fixtures/repos/nodejs/README +0 -1
  155. data/spec/fixtures/repos/nodejs/package.json +0 -7
  156. data/spec/fixtures/repos/not_bundled/README +0 -1
  157. data/spec/fixtures/repos/npm_disabled/README +0 -1
  158. data/spec/fixtures/repos/npm_disabled/config/ey.yml +0 -2
  159. data/spec/fixtures/repos/npm_disabled/package.json +0 -7
  160. data/spec/fixtures/repos/php_composer_disabled/README +0 -1
  161. data/spec/fixtures/repos/php_composer_disabled/composer.json +0 -5
  162. data/spec/fixtures/repos/php_composer_disabled/composer.lock +0 -462
  163. data/spec/fixtures/repos/php_composer_disabled/config/ey.yml +0 -2
  164. data/spec/fixtures/repos/php_composer_disabled/public/index.php +0 -4
  165. data/spec/fixtures/repos/php_composer_lock/README +0 -1
  166. data/spec/fixtures/repos/php_composer_lock/composer.json +0 -5
  167. data/spec/fixtures/repos/php_composer_lock/composer.lock +0 -462
  168. data/spec/fixtures/repos/php_composer_lock/public/index.php +0 -4
  169. data/spec/fixtures/repos/php_no_composer_lock/README +0 -1
  170. data/spec/fixtures/repos/php_no_composer_lock/composer.json +0 -21
  171. data/spec/fixtures/repos/php_no_composer_lock/public/index.php +0 -4
  172. data/spec/fixtures/repos/public_system/Gemfile +0 -4
  173. data/spec/fixtures/repos/public_system/Gemfile.lock +0 -12
  174. data/spec/fixtures/repos/public_system/README +0 -5
  175. data/spec/fixtures/repos/public_system/ey.yml +0 -3
  176. data/spec/fixtures/repos/public_system/public/system/cant_touch_this.txt +0 -3
  177. data/spec/fixtures/repos/sqlite3/Gemfile +0 -4
  178. data/spec/fixtures/repos/sqlite3/Gemfile.lock +0 -89
  179. data/spec/fixtures/repos/sqlite3/README +0 -1
  180. data/spec/fixtures/retwisj.war +0 -0
  181. data/spec/fixtures/valid_hook.rb +0 -1
  182. data/spec/git_strategy_spec.rb +0 -34
  183. data/spec/lockfile_parser_spec.rb +0 -126
  184. data/spec/maintenance_spec.rb +0 -44
  185. data/spec/multi_dependency_manager_spec.rb +0 -25
  186. data/spec/nodejs_deploy_spec.rb +0 -30
  187. data/spec/php_deploy_spec.rb +0 -81
  188. data/spec/platform_configure_spec.rb +0 -61
  189. data/spec/rails31_deploy_spec.rb +0 -172
  190. data/spec/restart_spec.rb +0 -43
  191. data/spec/rollback_spec.rb +0 -87
  192. data/spec/server_spec.rb +0 -70
  193. data/spec/services_deploy_spec.rb +0 -165
  194. data/spec/shell_spec.rb +0 -57
  195. data/spec/source/archive_spec.rb +0 -33
  196. data/spec/source/git_spec.rb +0 -44
  197. data/spec/spec_helper.rb +0 -361
  198. data/spec/sqlite3_deploy_spec.rb +0 -38
  199. data/spec/support/integration.rb +0 -103
  200. data/spec/support/source_doubles.rb +0 -28
  201. data/spec/support/timecop.rb +0 -5
  202. data/spec/symlink_spec.rb +0 -15
@@ -1,378 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "deploy hooks" do
4
- context "successful deploy with all hooks" do
5
- before(:all) do
6
- deploy_test_application('hooks')
7
- end
8
-
9
- it "runs all the hooks" do
10
- expect(deploy_dir.join('current', 'before_deploy.ran' )).to exist
11
- expect(deploy_dir.join('current', 'before_bundle.ran' )).to exist
12
- expect(deploy_dir.join('current', 'after_bundle.ran' )).to exist
13
- expect(deploy_dir.join('current', 'before_migrate.ran')).to exist
14
- expect(deploy_dir.join('current', 'after_migrate.ran' )).to exist
15
- expect(deploy_dir.join('current', 'before_compile_assets.ran')).to exist
16
- expect(deploy_dir.join('current', 'after_compile_assets.ran' )).to exist
17
- expect(deploy_dir.join('current', 'before_symlink.ran')).to exist
18
- expect(deploy_dir.join('current', 'after_symlink.ran' )).to exist
19
- expect(deploy_dir.join('current', 'before_restart.ran')).to exist
20
- expect(deploy_dir.join('current', 'after_restart.ran' )).to exist
21
- expect(deploy_dir.join('current', 'after_deploy.ran' )).to exist
22
- end
23
- end
24
-
25
- context "with failing deploy hook" do
26
- before(:all) do
27
- begin
28
- deploy_test_application('hook_fails', :verbose => false)
29
- rescue EY::Serverside::RemoteFailure
30
- end
31
- end
32
-
33
- it "prints the failure to the log even when non-verbose" do
34
- out = read_output
35
- expect(out).to match(%r|FATAL:\s+Exception raised in hook .*/deploy/before_deploy.rb.|)
36
- expect(out).to match(%r|RuntimeError:.*Hook failing in \(eval\)|)
37
- expect(out).to match(%r|Please fix this error before retrying.|)
38
- end
39
-
40
- it "retains the failed release" do
41
- release_name = @config.paths.active_release.basename
42
- expect(deploy_dir.join('releases_failed', release_name)).to be_directory
43
- end
44
- end
45
-
46
- context "with an executable for a deploy hook" do
47
- before(:all) do
48
- deploy_test_application('executable_hooks')
49
- end
50
-
51
- it 'runs the hook' do
52
- expect(deploy_dir.join('current', 'before_restart.ran')).to exist
53
- end
54
- end
55
-
56
- context "with a non-executable, but correctly named deploy hook" do
57
- before(:all) do
58
- deploy_test_application('executable_hooks_not_executable')
59
- end
60
-
61
- it 'does not run the hook' do
62
- expect(deploy_dir.join('current', 'before_restart.ran')).not_to exist
63
- end
64
-
65
- it 'outputs a message about the hook not being executable' do
66
- expect(read_output).to match(%r|Skipping.*deploy hook.*not executable|)
67
- end
68
- end
69
-
70
- context "deploy hook API" do
71
- def deploy_hook(options={})
72
- config = EY::Serverside::Deploy::Configuration.new({
73
- 'app' => 'app_name',
74
- 'framework_env' => 'staging',
75
- 'current_roles' => ['solo'],
76
- 'deploy_to' => deploy_dir.to_s,
77
- }.merge(options))
78
- # setup to run hooks since a deploy hasn't happened
79
- config.paths.new_release!
80
- config.paths.active_release.mkpath
81
- hook = EY::Serverside::Callbacks::Hooks::App.new(
82
- File.join(config.paths.active_release, 'deploy', 'fake_test_hook.rb')
83
- )
84
- #EY::Serverside::DeployHook.new(config, test_shell, 'fake_test_hook')
85
- EY::Serverside::Callbacks::Executor::Ruby::Context.new(
86
- config,
87
- test_shell,
88
- hook
89
- )
90
- end
91
-
92
- # Deprecated by inside tests - dwalters
93
- #context "#run" do
94
- #it "is available" do
95
- #expect(deploy_hook.instance_eval('respond_to?(:run)')).to be_truthy
96
- #end
97
-
98
- #it "runs commands like the shell does" do
99
- #ENV['COUNT'] = 'Chocula'
100
- #File.unlink("/tmp/deploy_hook_spec.the_count") rescue nil
101
-
102
- #deploy_hook.instance_eval('run("echo $COUNT > /tmp/deploy_hook_spec.the_count")')
103
-
104
- #expect(IO.read("/tmp/deploy_hook_spec.the_count").strip).to eq("Chocula")
105
- #end
106
-
107
- #it "returns true/false to indicate the command's success" do
108
- #expect(deploy_hook.instance_eval('run("true")')).to be_truthy
109
- #expect(deploy_hook.instance_eval('run("false")')).to be_falsey
110
- #end
111
-
112
- #it "raises when the bang method alternative is used" do
113
- ##expect {
114
- #deploy_hook.instance_eval('run!("false")')
115
- ##}.to raise_error(RuntimeError)
116
- #out = read_output
117
- #puts "out == '#{out}'"
118
- #fail
119
- #expect(out).to match(%r|FATAL:\s+Exception raised in hook .*/deploy/fake_test_hook.rb.|)
120
- #expect(out).to match(%r|RuntimeError: .*run!.*Command failed. false|)
121
- #expect(out).to match(%r|Please fix this error before retrying.|)
122
- #end
123
- #end
124
-
125
- # Deprecated by inside tests - dwalters
126
- #context "#sudo" do
127
- #it "is available" do
128
- #expect(deploy_hook.instance_eval('respond_to?(:sudo)')).to be_truthy
129
- #end
130
-
131
- #it "runs things with sudo" do
132
- #hook = deploy_hook
133
- #mock_sudo do
134
- #hook.instance_eval('sudo("true") || raise("failed")')
135
- #end
136
- #end
137
-
138
- #it "raises when the bang method alternative is used" do
139
- #hook = deploy_hook
140
- #mock_sudo do
141
- #expect {
142
- #hook.instance_eval('sudo!("false")')
143
- #}.to raise_error(RuntimeError)
144
- #end
145
- #out = read_output
146
- #expect(out).to match(%r|FATAL:\s+Exception raised in hook .*/deploy/fake_test_hook.rb.|)
147
- #expect(out).to match(%r|RuntimeError: .*sudo!.*Command failed. false|)
148
- #expect(out).to match(%r|Please fix this error before retrying.|)
149
- #end
150
- #end
151
-
152
- context "capistrano-ish methods" do
153
- it "has them" do
154
- expect(deploy_hook.instance_eval('respond_to?(:latest_release) ')).to be_truthy
155
- expect(deploy_hook.instance_eval('respond_to?(:previous_release) ')).to be_truthy
156
- expect(deploy_hook.instance_eval('respond_to?(:all_releases) ')).to be_truthy
157
- expect(deploy_hook.instance_eval('respond_to?(:current_path) ')).to be_truthy
158
- expect(deploy_hook.instance_eval('respond_to?(:shared_path) ')).to be_truthy
159
- expect(deploy_hook.instance_eval('respond_to?(:release_dir) ')).to be_truthy
160
- expect(deploy_hook.instance_eval('respond_to?(:failed_release_dir)')).to be_truthy
161
- expect(deploy_hook.instance_eval('respond_to?(:release_path) ')).to be_truthy
162
- end
163
-
164
- it "shows a deprecation warning that asks you to use config to access these variables" do
165
- expect(deploy_hook.instance_eval('shared_path.nil?')).to be_falsey
166
- out = read_output
167
- expect(out).to include("Use of `shared_path` (via method_missing) is deprecated in favor of `config.shared_path` for improved error messages and compatibility.")
168
- expect(out).to match(%r|in .*/deploy/fake_test_hook.rb|)
169
- end
170
- end
171
-
172
- context "access to command line options that should be handed through to the config" do
173
- before do
174
- @hook = deploy_hook({'app' => 'app', 'environment_name' => 'env', 'account_name' => 'acc'})
175
- end
176
-
177
- it "has account_name" do
178
- expect(@hook.instance_eval('account_name')).to eq('acc')
179
- end
180
-
181
- it "has environment_name" do
182
- expect(@hook.instance_eval('environment_name')).to eq('env')
183
- end
184
-
185
- it "has app_name" do
186
- expect(@hook.instance_eval('app_name')).to eq('app')
187
- end
188
- end
189
-
190
- context "node" do
191
- before(:each) do
192
- EY::Serverside.dna_json = MultiJson.dump({
193
- 'instance_role' => 'solo',
194
- 'applications' => {
195
- 'myapp' => {
196
- 'type' => 'rails',
197
- 'branch' => 'master',
198
- }
199
- }
200
- })
201
- end
202
-
203
- # Test deprecated by inside tests and new implementation - dwalters
204
- #it "is deprecated through the @node ivar" do
205
- #expect(deploy_hook.instance_eval('@node.nil?')).to be_falsey
206
- #out = read_output
207
- #expect(out).to match(%r|Use of `@node` in deploy hooks is deprecated.|)
208
- #expect(out).to match(%r|Please use `config.node`, which provides access to the same object.|)
209
- #expect(out).to match(%r|.*/deploy/fake_test_hook.rb|)
210
- #end
211
-
212
- it "is available" do
213
- expect(deploy_hook.instance_eval('config.node.nil?')).to be_falsey
214
- end
215
-
216
- it "has indifferent access" do
217
- expect(deploy_hook.instance_eval('config.node[:instance_role] ')).to eq('solo')
218
- expect(deploy_hook.instance_eval('config.node["instance_role"]')).to eq('solo')
219
- end
220
-
221
- it "has deep indifferent access" do
222
- expect(deploy_hook.instance_eval('config.node["applications"]["myapp"]["type"]')).to eq('rails')
223
- expect(deploy_hook.instance_eval('config.node[:applications]["myapp"][:type] ')).to eq('rails')
224
- expect(deploy_hook.instance_eval('config.node[:applications][:myapp][:type] ')).to eq('rails')
225
- end
226
- end
227
-
228
- context "config" do
229
- it "is available" do
230
- expect(deploy_hook.instance_eval('config.nil?')).to be_falsey
231
- end
232
-
233
- # Test deprecated by inside tests and new implementation - dwalters
234
- #it "is deprecated through the @configuration ivar" do
235
- #expect(deploy_hook.instance_eval('@configuration.nil?')).to be_falsey
236
- #out = read_output
237
- #expect(out).to match(%r|Use of `@configuration` in deploy hooks is deprecated.|)
238
- #expect(out).to match(%r|Please use `config`, which provides access to the same object.|)
239
- #expect(out).to match(%r|.*/deploy/fake_test_hook.rb|)
240
- #end
241
-
242
- it "has the configuration in it" do
243
- expect(deploy_hook('bert' => 'ernie').instance_eval('config.bert')).to eq('ernie')
244
- end
245
-
246
- it "can be accessed with method calls, with [:symbols], or ['strings']" do
247
- expect(deploy_hook('bert' => 'ernie').instance_eval('config.bert ')).to eq('ernie')
248
- expect(deploy_hook('bert' => 'ernie').instance_eval('config[:bert] ')).to eq('ernie')
249
- expect(deploy_hook('bert' => 'ernie').instance_eval('config["bert"]')).to eq('ernie')
250
- end
251
-
252
- [:repository_cache,
253
- :release_path,
254
- :branch,
255
- :shared_path,
256
- :deploy_to,
257
- :user,
258
- :revision,
259
- :environment].each do |attribute|
260
- it "has the #{attribute.inspect} attribute for compatibility with chef-deploy" do
261
- expect(deploy_hook.instance_eval("config.has_key?(#{attribute.inspect})")).to be_truthy
262
- end
263
- end
264
- end
265
-
266
- context "environment variables" do
267
- it "sets the framework env variables" do
268
- expect(deploy_hook('framework_env' => 'production').instance_eval("ENV['RAILS_ENV']")).to eq('production')
269
- expect(deploy_hook('framework_env' => 'production').instance_eval("ENV['RACK_ENV'] ")).to eq('production')
270
- expect(deploy_hook('framework_env' => 'production').instance_eval("ENV['MERB_ENV'] ")).to eq('production')
271
- expect(deploy_hook('framework_env' => 'production').instance_eval("ENV['NODE_ENV'] ")).to eq('production')
272
- end
273
- end
274
-
275
- context "has methods to run code only on certain instances" do
276
- def scenarios
277
- [
278
- ['solo' ],
279
- ['app_master' ],
280
- ['app' ],
281
- ['db_master' ],
282
- ['db_slave' ],
283
- ['multi_role,app'],
284
- ['multi,util' ],
285
- ['util', 'alpha' ],
286
- ['util', 'beta' ],
287
- ['util', 'gamma' ],
288
- ]
289
- end
290
-
291
- def where_code_runs_with(code)
292
- scenarios.select do |role, name|
293
- hook = deploy_hook('current_roles' => role.split(','), 'current_name' => name)
294
- hook.instance_eval("#{code} { 'ran' } == 'ran'")
295
- end.map do |scenario|
296
- scenario.compact.join("_")
297
- end.compact
298
- end
299
-
300
- it "#on_app_master runs on app masters and solos" do
301
- expect(where_code_runs_with("on_app_master")).to eq(%w(solo app_master))
302
- end
303
-
304
- it "#on_app_servers runs on app masters, app slaves, and solos" do
305
- expect(where_code_runs_with("on_app_servers")).to eq(%w(solo app_master app multi_role,app))
306
- end
307
-
308
- it "#on_app_servers_and_utilities does what it says on the tin" do
309
- expect(where_code_runs_with("on_app_servers_and_utilities")).to eq(
310
- %w(solo app_master app multi_role,app multi,util util_alpha util_beta util_gamma)
311
- )
312
- end
313
-
314
- it "#on_utilities() runs on all utility instances" do
315
- expect(where_code_runs_with("on_utilities")).to eq(
316
- %w(multi,util util_alpha util_beta util_gamma)
317
- )
318
- end
319
-
320
- it "#on_utilities('sometype') runs on only utilities of type 'sometype'" do
321
- expect(where_code_runs_with("on_utilities('alpha')")).to eq(%w(util_alpha))
322
- end
323
-
324
- it "#on_utilities('type1', 'type2') runs on utilities of both types" do
325
- expect(where_code_runs_with("on_utilities('alpha', 'beta')")).to eq(
326
- %w(util_alpha util_beta)
327
- )
328
- end
329
-
330
- it "#on_utilities can be invoked with (['a', 'b']) or ('a', 'b')" do
331
- expect(where_code_runs_with("on_utilities(%w[alpha beta])")).to eq(
332
- where_code_runs_with("on_utilities('alpha', 'beta')")
333
- )
334
- end
335
- end
336
-
337
- # Deprecated by new implementation and inside tests - dwalters
338
- #context "#syntax_error" do
339
- #it "returns nil for hook files containing valid Ruby syntax" do
340
- #hook_path = File.expand_path('../fixtures/valid_hook.rb', __FILE__)
341
- #expect(deploy_hook.syntax_error(hook_path)).to be_nil
342
- #end
343
-
344
- #it "returns a brief problem description for hook files containing valid Ruby syntax" do
345
- #hook_path = File.expand_path('../fixtures/invalid_hook.rb', __FILE__)
346
- #error = Regexp.escape("spec/fixtures/invalid_hook.rb:1: syntax error, unexpected '^'")
347
- #expect(deploy_hook.syntax_error(hook_path)).to match(/#{error}/)
348
- #end
349
- #end
350
-
351
- # Test deprecated by inside tests and new implementation - dwalters
352
- #context "errors in hooks" do
353
- #it "shows the error in a helpful way" do
354
- #expect {
355
- #deploy_hook.instance_eval('methedo_no_existo')
356
- #}.to raise_error(NameError)
357
- #out = read_output
358
- #expect(out).to match(%r|FATAL:\s+Exception raised in hook .*/deploy/fake_test_hook.rb.|)
359
- #expect(out).to match(%r|NameError: undefined local variable or method `methedo_no_existo' for|)
360
- #expect(out).to match(%r|Please fix this error before retrying.|)
361
- #end
362
- #end
363
-
364
- context "is compatible with older hook scripts" do
365
- it "#current_role returns the first role" do
366
- expect(deploy_hook('current_roles' => %w(a b)).instance_eval('current_role')).to eq('a')
367
- end
368
-
369
- it "has info, warning, debug, logged_system, and access to shell" do
370
- expect(deploy_hook.instance_eval('respond_to?(:info) ')).to be_truthy
371
- expect(deploy_hook.instance_eval('respond_to?(:warning) ')).to be_truthy
372
- expect(deploy_hook.instance_eval('respond_to?(:debug) ')).to be_truthy
373
- expect(deploy_hook.instance_eval('respond_to?(:logged_system)')).to be_truthy
374
- expect(deploy_hook.instance_eval('respond_to?(:shell) ')).to be_truthy
375
- end
376
- end
377
- end
378
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
- require 'stringio'
3
-
4
- describe EY::Serverside do
5
- before do
6
- @original_stderr = $stderr
7
- @warnings = StringIO.new
8
- $stderr = @warnings
9
- end
10
-
11
- after do
12
- $stderr = @original_stderr
13
- end
14
-
15
- it "deprecates EY::Serverside::LoggedOutput for EY::Serverside::Shell::Helpers" do
16
- expect(EY::Serverside::LoggedOutput).to eq(EY::Serverside::Shell::Helpers)
17
- expect(@warnings.string).to include("EY::Serverside::LoggedOutput")
18
- end
19
-
20
- it "doesn't interfere with unrelated constants" do
21
- expect{ EY::Serverside::WTFNotDefined }.to raise_error(NameError, /uninitialized constant.*WTFNotDefined/)
22
- end
23
- end
@@ -1,99 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an app with ey.yml" do
4
- context "--no-migrate" do
5
- before(:all) do
6
- deploy_test_application('ey_yml', 'migrate' => nil)
7
- end
8
-
9
- it "does not migrate even though ey.yml says migrate: true" do
10
- expect(read_output).not_to match(/Migrating/)
11
- end
12
-
13
- it "does not enable the maintenance page at all" do
14
- expect(deploy_dir.join('current','maintenance_disabled')).to exist
15
- end
16
- end
17
-
18
-
19
- context "with migration" do
20
- before(:all) do
21
- deploy_test_application('ey_yml')
22
- end
23
-
24
- it "excludes copy_excludes from releases" do
25
- cmd = @deployer.commands.grep(/rsync -aq/).first
26
- expect(cmd).to include('rsync -aq --exclude=".git" --exclude="README"')
27
- expect(deploy_dir.join('current', '.git')).not_to exist
28
- expect(deploy_dir.join('current', 'README')).not_to exist
29
- end
30
-
31
- it "loads ey.yml at lower priority than command line options" do
32
- expect(deploy_dir.join('current', 'REVISION').read).to eq("somebranch\n")
33
- end
34
-
35
- it "loads bundle_without from the config, which overrides the default (and 'defaults:' in ey.yml)" do
36
- cmd = @deployer.commands.grep(/bundle _\S*_ install/).first
37
- expect(cmd).to include('--without only test')
38
- end
39
-
40
- it "does not enable the maintenance page during migrations" do
41
- expect(deploy_dir.join('current','maintenance_disabled')).to exist
42
- expect(deploy_dir.join('current','maintenance_enabled')).not_to exist
43
- end
44
-
45
- it "does not remove an existing maintenance page" do
46
- maintenance = EY::Serverside::Maintenance.new(test_servers, @config, test_shell)
47
- deploy_dir.join('current','maintenance_disabled').delete
48
- maintenance.manually_enable
49
- expect(deploy_dir.join('shared','system','maintenance.html')).to exist
50
- redeploy_test_application
51
- expect(read_output).to match(/Maintenance page is still up./)
52
- expect(deploy_dir.join('shared','system','maintenance.html')).to exist
53
- expect(deploy_dir.join('current','maintenance_disabled')).not_to exist
54
- expect(deploy_dir.join('current','maintenance_enabled')).to exist
55
- maintenance.manually_disable
56
- expect(deploy_dir.join('shared','system','maintenance.html')).not_to exist
57
- end
58
-
59
- it "makes custom variables available to hooks" do
60
- expect(deploy_dir.join('current', 'custom_hook').read).to include("custom_from_ey_yml")
61
- end
62
-
63
- it "doesn't display the database adapter warning with ignore_database_adapter_warning: true" do
64
- expect(read_output).not_to match(/WARNING/)
65
- end
66
- end
67
-
68
- context "with a different ey.yml" do
69
- before(:all) do
70
- deploy_test_application('ey_yml_alt') do
71
- deploy_dir.join('shared','config').mkpath
72
- deploy_dir.join('shared','config','database.yml').open('w') { |f| f << 'something' }
73
- end
74
- end
75
-
76
- it "always installs maintenance pages" do
77
- expect(deploy_dir.join('current','maintenance_enabled')).to exist
78
- expect(deploy_dir.join('current','maintenance_disabled')).not_to exist
79
- end
80
-
81
- it "displays the database adapter warning without ignore_database_adapter_warning" do
82
- expect(read_output).to match(/WARNING: Gemfile.lock does not contain a recognized database adapter./)
83
- end
84
- end
85
-
86
- context "with nodatabase.yml" do
87
- before(:all) do
88
- deploy_test_application('ey_yml_alt') do
89
- deploy_dir.join('shared','config').mkpath
90
- deploy_dir.join('shared','config','nodatabase.yml').open('w') { |f| f << 'something' }
91
- end
92
-
93
- end
94
-
95
- it "doesn't display the database adapter warning" do
96
- expect(read_output).not_to match(/WARNING: Gemfile.lock does not contain a recognized database adapter./)
97
- end
98
- end
99
- end