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,61 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an application with platform configure command" do
4
- describe "configure script does not exist" do
5
- before do
6
- @releases_failed = deploy_dir.join('releases_failed')
7
- deploy_test_application('default')
8
- end
9
-
10
- it "works without warning" do
11
- expect(read_output).not_to match(/WARNING/)
12
-
13
- expect(@releases_failed).not_to exist
14
- end
15
- end
16
-
17
- describe "a succesful deploy" do
18
- before do
19
- @releases_failed = deploy_dir.join('releases_failed')
20
- ENV['EY_SERVERSIDE_CONFIGURE_COMMAND'] = "echo platform_configure_command_ran >&2"
21
- deploy_test_application('default')
22
- end
23
-
24
- after do
25
- ENV.delete('EY_SERVERSIDE_CONFIGURE_COMMAND')
26
- end
27
-
28
- it "runs the configure_command during deploy and finishes successfully" do
29
- expect(read_output).to match(/platform_configure_command_ran/)
30
-
31
- expect(@releases_failed).not_to exist
32
-
33
- restart = deploy_dir.join('current', 'restart')
34
- expect(restart).to exist
35
- end
36
- end
37
-
38
- describe "a failed configure command" do
39
-
40
- before do
41
- ENV['EY_SERVERSIDE_CONFIGURE_COMMAND'] = "echo platform_configure_command_failed >&2 && false"
42
- end
43
-
44
- after do
45
- ENV.delete('EY_SERVERSIDE_CONFIGURE_COMMAND')
46
- end
47
-
48
- it "aborts the deplo when it fails, preventing the app from being restarted" do
49
- @releases_failed = deploy_dir.join('releases_failed')
50
- expect(@releases_failed).not_to exist
51
-
52
- begin
53
- deploy_test_application('default')
54
- rescue
55
- end
56
- expect(read_output).to match(/platform_configure_command_failed/)
57
-
58
- expect(@releases_failed.entries).not_to be_empty
59
- end
60
- end
61
- end
@@ -1,172 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying a Rails 3.1 application" do
4
- context "with default production settings" do
5
- it "precompiles assets when asset compilation is detected" do
6
- deploy_test_application('assets_detected')
7
- expect(deploy_dir.join('current', 'precompiled')).to exist
8
- expect(deploy_dir.join('current', 'public', 'assets')).to exist
9
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
10
- expect(read_output).to include("Precompiling assets. ('app/assets' exists, 'public/assets' not found, not disabled in config.)")
11
- end
12
-
13
- it "precompiles assets, then reuses them on the next deploy if nothing has changed" do
14
- deploy_test_application('assets_enabled_in_ey_yml')
15
- expect(deploy_dir.join('current', 'precompiled')).to exist
16
- expect(deploy_dir.join('current', 'public', 'assets')).to exist
17
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
18
-
19
- redeploy_test_application
20
- expect(deploy_dir.join('current', 'precompiled')).not_to exist # doesn't run the task
21
- expect(deploy_dir.join('current', 'public', 'assets')).to exist # but the assets are there
22
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
23
- expect(read_output).to match(%r#Reusing existing assets\. \(configured asset_dependencies unchanged from \w{7}..\w{7}\)#)
24
-
25
- redeploy_test_application('config' => {'precompile_unchanged_assets' => 'true'})
26
- expect(deploy_dir.join('current', 'precompiled')).to exist # doesn't run the task
27
- expect(deploy_dir.join('current', 'public', 'assets')).to exist # but the assets are there
28
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
29
- expect(read_output).not_to include("Reusing existing assets")
30
- end
31
-
32
- it "raises error in a experimental_sync_assets mode and stops deployment" do
33
- expect do
34
- deploy_test_application('assets_error')
35
- end.to raise_error(RuntimeError)
36
- expect(deploy_dir.join('current', 'precompiled')).not_to exist
37
- expect(deploy_dir.join('current', 'public', 'assets')).not_to exist
38
- end
39
-
40
- it "precompile assets again when redeploying a ref with changes" do
41
- deploy_test_application('assets_enabled_in_ey_yml')
42
- expect(deploy_dir.join('current', 'precompiled')).to exist
43
- expect(deploy_dir.join('current', 'public', 'assets')).to exist
44
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
45
- expect(deploy_dir.join('current', 'tmp', 'cache')).to exist
46
- expect(deploy_dir.join('current', 'tmp')).to be_a_symlink
47
- expect(deploy_dir.join('current', 'cache_compiled')).not_to exist
48
- expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
49
-
50
- # changing the ref stands in for actually having assets change (see Strategies::IntegrationSpec#same?)
51
- redeploy_test_application('branch' => 'somenewref')
52
- expect(deploy_dir.join('current', 'precompiled')).to exist # it does runs the task
53
- expect(deploy_dir.join('current', 'public', 'assets')).to exist
54
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
55
- expect(deploy_dir.join('current', 'tmp')).to be_a_symlink
56
- expect(deploy_dir.join('current', 'tmp', 'cache')).to exist # preserves tmp dir
57
- expect(deploy_dir.join('current', 'cache_compiled')).to exist # uses tmp/cache to compile assets faster
58
- expect(read_output).not_to match(%r#Reusing existing assets#)
59
- end
60
-
61
- it "precompile assets when redeploying the same ref, but assets were turned off the first time" do
62
- deploy_test_application('assets_enabled_in_ey_yml', 'config' => {'precompile_assets' => 'false'})
63
- expect(deploy_dir.join('current', 'precompiled')).not_to exist
64
- expect(deploy_dir.join('current', 'public', 'assets')).not_to exist
65
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).not_to exist
66
- expect(read_output).not_to include("Precompiling assets. (precompile_assets: true)")
67
-
68
- # assets will show as unchanged, but it should compile them fresh anyway.
69
- redeploy_test_application('config' => {'precompile_assets' => 'true'})
70
- expect(deploy_dir.join('current', 'precompiled')).to exist # it does runs the task
71
- expect(deploy_dir.join('current', 'public', 'assets')).to exist
72
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
73
- expect(read_output).not_to match(%r#Reusing existing assets#)
74
- end
75
-
76
- %w[cleaning shared private].each do |strategy|
77
- it "precompiles assets with asset_strategy '#{strategy}', then reuses them on the next deploy if nothing has changed" do
78
- deploy_test_application('assets_enabled_in_ey_yml', 'config' => {'asset_strategy' => strategy})
79
- expect(deploy_dir.join('current', 'precompiled')).to exist
80
- expect(deploy_dir.join('current', 'public', 'assets')).to exist
81
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
82
-
83
- redeploy_test_application
84
- expect(deploy_dir.join('current', 'precompiled')).not_to exist # doesn't run the task
85
- expect(deploy_dir.join('current', 'public', 'assets')).to exist # but the assets are there
86
- expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
87
- expect(read_output).to match(%r#Reusing existing assets\. \(configured asset_dependencies unchanged from \w{7}..\w{7}\)#)
88
- end
89
- end
90
- end
91
-
92
- context "with asset compilation enabled in ey.yml, despite not otherwise being enabled" do
93
- before(:all) do
94
- deploy_test_application('assets_enabled_in_ey_yml')
95
- end
96
-
97
- it "precompiles assets" do
98
- expect(deploy_dir.join('current', 'precompiled')).to exist
99
- expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
100
- end
101
- end
102
-
103
- context "with asset compilation enabled in ey.yml, but asset_roles is set to only :util" do
104
- before(:all) do
105
- deploy_test_application('assets_enabled_util_only')
106
- end
107
-
108
- it "precompiles assets" do
109
- expect(deploy_dir.join('current', 'precompiled')).not_to exist
110
- expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
111
- end
112
- end
113
-
114
- context "with asset compilation enabled in ey.yml, and asset_roles is set to :all, and a custom compile command" do
115
- before(:all) do
116
- deploy_test_application('assets_enabled_all')
117
- end
118
-
119
- it "precompiles assets but never shares the tmp cache because the repository has a committed tmp dir with contents" do
120
- expect(deploy_dir.join('current', 'custom_compiled')).to exist
121
- expect(deploy_dir.join('current', 'cache_compiled')).not_to exist
122
- expect(deploy_dir.join('current', 'tmp', 'cache')).to exist
123
- expect(deploy_dir.join('current', 'tmp')).not_to be_a_symlink
124
- expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
125
-
126
- redeploy_test_application('config' => {'precompile_unchanged_assets' => 'true'})
127
- expect(deploy_dir.join('current', 'tmp', 'cache')).to exist
128
- expect(deploy_dir.join('current', 'cache_compiled')).not_to exist
129
- expect(deploy_dir.join('current', 'tmp')).not_to be_a_symlink
130
- end
131
- end
132
-
133
- context "with asset support disabled in config/application.rb" do
134
- it "does not precompile assets" do
135
- deploy_test_application('assets_disabled')
136
- expect(deploy_dir.join('current', 'precompiled')).not_to exist
137
- expect(read_output).to include("Skipping asset precompilation. ('config/application.rb' disables assets.)")
138
- end
139
-
140
- it "deploys successfully when application.rb has utf-8 encoding" do
141
- deploy_test_application('assets_disabled_utf8')
142
- expect(deploy_dir.join('current', 'precompiled')).not_to exist
143
- expect(read_output).to include("Skipping asset precompilation. ('config/application.rb' disables assets.)")
144
- end
145
- end
146
-
147
- context "with asset compilation disabled in ey.yml, despite all other configuration would enable assets" do
148
- before(:all) do
149
- deploy_test_application('assets_disabled_in_ey_yml')
150
- end
151
-
152
- it "does not precompile assets" do
153
- expect(deploy_dir.join('current', 'precompiled')).not_to exist
154
- expect(read_output).to include("Skipping asset precompilation. (precompile_assets: false)")
155
- end
156
- end
157
-
158
- context "with existing precompilation in a deploy hook" do
159
- before(:all) do
160
- deploy_test_application('assets_in_hook')
161
- end
162
-
163
- it "does not replace the public/assets directory" do
164
- expect(deploy_dir.join('current', 'custom_compiled')).to exist
165
- expect(deploy_dir.join('current', 'precompiled')).not_to exist
166
- expect(deploy_dir.join('current', 'public', 'assets')).to be_directory
167
- expect(deploy_dir.join('current', 'public', 'assets')).not_to be_symlink
168
- expect(deploy_dir.join('current', 'public', 'assets', 'custom_compiled_asset')).to exist
169
- expect(read_output).to include("Skipping asset precompilation. ('public/assets' directory already exists.)")
170
- end
171
- end
172
- end
@@ -1,43 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class TestRestartDeploy < FullTestDeploy
4
- attr_reader :call_order
5
- def initialize(*a)
6
- super
7
- @call_order = []
8
- end
9
-
10
- def require_custom_tasks() @call_order << 'require_custom_tasks' end
11
- def restart() @call_order << 'restart' end
12
- def enable_maintenance_page() @call_order << 'enable_maintenance_page' end
13
- def disable_maintenance_page() @call_order << 'disable_maintenance_page' end
14
- end
15
-
16
- describe "EY::Serverside::Deploy#restart_with_maintenance_page" do
17
-
18
- class TestRestartWithMaintenancePage < TestRestartDeploy
19
- def conditionally_enable_maintenance_page() @call_order << 'conditionally_enable_maintenance_page' end
20
- end
21
-
22
- it "puts up the maintenance page if necessary, restarts, and takes down the maintenance page" do
23
- config = EY::Serverside::Deploy::Configuration.new('deploy_to' => deploy_dir, 'app' => 'app_name')
24
- deployer = TestRestartWithMaintenancePage.realnew(test_servers, config, test_shell)
25
- deployer.restart_with_maintenance_page
26
- expect(deployer.call_order).to eq(%w(
27
- require_custom_tasks
28
- enable_maintenance_page
29
- restart
30
- disable_maintenance_page
31
- ))
32
- end
33
- end
34
-
35
- describe "glassfish stack" do
36
-
37
- it "requires a maintenance page" do
38
- config = EY::Serverside::Deploy::Configuration.new('deploy_to' => deploy_dir, 'app' => 'app_name', 'stack' => 'glassfish')
39
- deployer = TestRestartDeploy.realnew(test_servers, config, test_shell)
40
- deployer.restart_with_maintenance_page
41
- expect(deployer.call_order).to include('enable_maintenance_page')
42
- end
43
- end
@@ -1,87 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Rolling back" do
4
- def setup_good_and_bad_deploy(repo)
5
- deploy_test_application(repo, 'migrate' => nil)
6
- @good_revision = deploy_dir.join('current', 'REVISION').read.strip
7
- expect(deploy_dir.join('current', 'REVISION')).to exist
8
- deploy_dir.join('current', 'restart').delete
9
- deploy_test_application(repo, 'migrate' => nil)
10
- expect(deploy_dir.join('current', 'REVISION')).to exist
11
- deploy_dir.join('current', 'restart').delete
12
-
13
- releases = @deployer.config.paths.all_releases
14
- expect(releases.size).to eq(2)
15
- @good_release = releases.first
16
- @bad_release = releases.last
17
- end
18
-
19
- def rollback
20
- argv = @adapter.rollback.commands.last.to_argv[2..-1]
21
- with_mocked_commands do
22
- capture do
23
- EY::Serverside::CLI::App.start(argv)
24
- end
25
- end
26
- end
27
-
28
- context "without bundler" do
29
- before(:all) do
30
- setup_good_and_bad_deploy('not_bundled')
31
- rollback
32
- end
33
-
34
- it "rolls back to the older deploy" do
35
- out = read_output
36
- expect(out).to match(/Rolling back to previous release.*#{@good_revision}/)
37
- expect(out).to match(/Restarting with previous release./)
38
- expect(out).to match(/Finished rollback/)
39
-
40
- expect(deploy_dir.join('current', 'restart')).to exist
41
- expect(@bad_release).not_to exist
42
- expect(@good_release.join('restart')).to exist
43
- end
44
- end
45
-
46
- context "with a problematic file in the releases dir" do
47
- before(:all) do
48
- setup_good_and_bad_deploy('not_bundled')
49
- @deployer.config.paths.releases.join('tmp').mkpath
50
- expect { rollback }.to raise_error
51
- end
52
-
53
- it "rolls back to the older deploy" do
54
- out = read_output
55
- expect(out).to include("Bad paths found in #{@deployer.config.paths.releases}:")
56
- expect(out).to include(@deployer.config.paths.releases.join('tmp').to_s)
57
- expect(out).to include("Storing files in this directory will disrupt latest_release, diff detection, rollback, and possibly other features.")
58
- expect(out).to_not include("Restarting with previous release.")
59
-
60
- expect(deploy_dir.join('current', 'restart')).not_to exist
61
- expect(@bad_release).to exist
62
- expect(@good_release).to exist
63
- end
64
- end
65
-
66
- context "with complex config" do
67
- before(:all) do
68
- setup_good_and_bad_deploy('ey_yml')
69
- rollback
70
- end
71
-
72
- it "rolls back to the older deploy" do
73
- out = read_output
74
- expect(out).to match(/Rolling back to previous release.*#{@good_revision}/)
75
- expect(out).to match(/Restarting with previous release./)
76
- expect(out).to match(/Finished rollback/)
77
-
78
- expect(deploy_dir.join('current', 'restart')).to exist
79
- expect(@bad_release).not_to exist
80
- expect(@good_release.join('restart')).to exist
81
- end
82
-
83
- it "loads and uses ey.yml during rollback" do
84
- expect(read_output).to match(/--without only test/)
85
- end
86
- end
87
- end
@@ -1,70 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EY::Serverside::Server do
4
- it "starts off empty" do
5
- expect(EY::Serverside::Servers.new([], test_shell)).to be_empty
6
- end
7
-
8
- it "loads from hashes" do
9
- servers = EY::Serverside::Servers.from_hashes([{:hostname => 'otherhost', :roles => %w[fire water]}], test_shell)
10
- expect(servers.size).to eq(1)
11
- end
12
-
13
- it "rejects duplicates" do
14
- expect do
15
- EY::Serverside::Servers.from_hashes([
16
- {:hostname => 'otherhost', :roles => [:fire]},
17
- {:hostname => 'otherhost', :roles => [:water]},
18
- ], test_shell)
19
- end.to raise_error(EY::Serverside::Servers::DuplicateHostname)
20
- end
21
-
22
- it "makes sure your roles are symbols at creation time" do
23
- servers = EY::Serverside::Servers.from_hashes([{:hostname => 'otherhost', :roles => %w[fire water]}], test_shell)
24
- servers.each { |server| expect(server.roles).to eq(Set[:fire, :water]) }
25
- end
26
-
27
- context "filtering" do
28
- before(:each) do
29
- @servers = EY::Serverside::Servers.from_hashes([
30
- {:hostname => 'localhost', :roles => [:ice, :cold]},
31
- {:hostname => 'firewater', :roles => [:fire, :water]},
32
- {:hostname => 'icewater', :roles => [:ice, :water]},
33
- ], test_shell)
34
- end
35
-
36
- it "#roles works with strings or symbols" do
37
- expect(@servers.roles(:fire ).map{|s| s.hostname}).to eq(['firewater'])
38
- expect(@servers.roles('fire').map{|s| s.hostname}).to eq(['firewater']) # hits the cache the second time
39
- end
40
-
41
- it "#roles finds all servers with the specified role" do
42
- expect(@servers.roles(:ice).size).to eq(2)
43
- expect(@servers.roles(:ice).map{|s| s.hostname}.sort).to eq(['icewater','localhost'])
44
- end
45
-
46
- it "#roles finds all servers with any of the specified roles" do
47
- expect(@servers.roles(:ice, :water)).to eq(@servers)
48
- end
49
-
50
- it "#roles returns everything when asked for :all" do
51
- expect(@servers.roles(:all)).to eq(@servers)
52
- end
53
-
54
- it "#roles also yields filtered server set" do
55
- @servers.roles(:ice) do |servers|
56
- expect(servers.size).to eq(2)
57
- expect(servers.map{|s| s.hostname}.sort).to eq(['icewater','localhost'])
58
- end
59
- end
60
-
61
- it "#localhost returns the localhost server" do
62
- expect(@servers.localhost.hostname).to eq('localhost')
63
- end
64
-
65
- it "#remote returns non-localhost servers" do
66
- expect(@servers.remote.size).to eq(2)
67
- expect(@servers.remote.map {|s| s.hostname}.sort).to eq(['firewater','icewater'])
68
- end
69
- end
70
- end
@@ -1,165 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an application with services" do
4
- let(:shared_services_file) { deploy_dir.join('shared', 'config', 'ey_services_config_deploy.yml') }
5
- let(:symlinked_services_file) { deploy_dir.join('current', 'config', 'ey_services_config_deploy.yml') }
6
- let(:services_yml) { {"servicio" => {"foo" => "bar"}}.to_yaml }
7
-
8
- describe "without ey_config" do
9
- describe "with services and disabled ey_config warnings" do
10
- before do
11
- deploy_test_application('no_ey_config_no_warning', 'config' => {
12
- 'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
13
- })
14
- end
15
-
16
- it "no warns about missing ey_config" do
17
- expect(read_stderr).not_to include("WARNING: Gemfile.lock does not contain ey_config")
18
- end
19
- end
20
-
21
- describe "with services" do
22
- before do
23
- deploy_test_application('no_ey_config', 'config' => {
24
- 'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
25
- })
26
- end
27
-
28
- it "warns about missing ey_config" do
29
- expect(read_stderr).to include("WARNING: Gemfile.lock does not contain ey_config")
30
- end
31
- end
32
-
33
- describe "without services" do
34
- before do
35
- deploy_test_application('no_ey_config')
36
- end
37
-
38
- it "works without warnings" do
39
- expect(read_output).not_to match(/WARNING/)
40
- end
41
- end
42
- end
43
-
44
- describe "deploy with invalid yaml ey_services_config_deploy" do
45
- before do
46
- @invalid_services_yml = "42"
47
- deploy_test_application('default', 'config' => {
48
- 'services_setup_command' => "echo '#{@invalid_services_yml}' > #{shared_services_file}"
49
- })
50
- end
51
-
52
- it "works without warning" do
53
- expect(shared_services_file).to exist
54
- expect(shared_services_file).not_to be_symlink
55
- expect(shared_services_file.read).to eq("#{@invalid_services_yml}\n")
56
-
57
- expect(symlinked_services_file).to exist
58
- expect(symlinked_services_file).to be_symlink
59
- expect(shared_services_file.read).to eq("#{@invalid_services_yml}\n")
60
-
61
- expect(read_output).not_to match(/WARNING/)
62
- end
63
- end
64
-
65
- describe "a succesful deploy" do
66
- before do
67
- deploy_test_application('default', 'config' => {
68
- 'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
69
- })
70
- end
71
-
72
- it "creates and symlinks ey_services_config_deploy.yml" do
73
- expect(shared_services_file).to exist
74
- expect(shared_services_file).not_to be_symlink
75
- expect(shared_services_file.read).to eq("#{services_yml}\n")
76
-
77
- expect(symlinked_services_file).to exist
78
- expect(symlinked_services_file).to be_symlink
79
- expect(shared_services_file.read).to eq("#{services_yml}\n")
80
-
81
- expect(read_output).not_to match(/WARNING/)
82
- end
83
- end
84
-
85
- describe "a successful deploy followed by a deploy that can't find the command" do
86
- before do
87
- deploy_test_application('default', 'config' => {
88
- 'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
89
- })
90
- redeploy_test_application('config' => {
91
- 'services_check_command' => 'false'
92
- })
93
- end
94
-
95
- it "silently fails" do
96
- expect(shared_services_file).to exist
97
- expect(shared_services_file).not_to be_symlink
98
- expect(shared_services_file.read).to eq("#{services_yml}\n")
99
-
100
- expect(symlinked_services_file).to exist
101
- expect(symlinked_services_file).to be_symlink
102
- expect(shared_services_file.read).to eq("#{services_yml}\n")
103
-
104
- expect(read_output).not_to match(/WARNING/)
105
- end
106
-
107
- end
108
-
109
- describe "a successful followed by a deploy that fails to fetch services" do
110
- it "logs a warning and symlinks the existing config file when there is existing services file" do
111
- deploy_test_application('default', 'config' => {
112
- 'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
113
- })
114
- redeploy_test_application('config' => {'services_setup_command' => 'false'})
115
-
116
- expect(shared_services_file).to exist
117
- expect(shared_services_file).not_to be_symlink
118
- expect(shared_services_file.read).to eq("#{services_yml}\n")
119
-
120
- expect(symlinked_services_file).to exist
121
- expect(symlinked_services_file).to be_symlink
122
- expect(shared_services_file.read).to eq("#{services_yml}\n")
123
-
124
- expect(read_output).to include('WARNING: External services configuration not updated')
125
- end
126
-
127
- it "does not log a warning or symlink a config file when there is no existing services file" do
128
- deploy_test_application('default', 'config' => {
129
- 'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
130
- })
131
- shared_services_file.delete
132
- redeploy_test_application('config' => {'services_setup_command' => 'false'})
133
-
134
- expect(shared_services_file).not_to exist
135
- expect(symlinked_services_file).not_to exist
136
-
137
- expect(read_output).not_to match(/WARNING/)
138
- end
139
- end
140
-
141
- describe "a successful deploy followed by another successfull deploy" do
142
- before do
143
- deploy_test_application('default', 'config' => {
144
- 'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
145
- })
146
- @new_services_yml = {"servicio" => {"foo" => "bar2"}}.to_yaml
147
- redeploy_test_application('config' => {
148
- 'services_setup_command' => "echo '#{@new_services_yml}' > #{shared_services_file}"
149
- })
150
- end
151
-
152
- it "replaces the config with the new one (and symlinks)" do
153
- expect(shared_services_file).to exist
154
- expect(shared_services_file).not_to be_symlink
155
- expect(shared_services_file.read).to eq("#{@new_services_yml}\n")
156
-
157
- expect(symlinked_services_file).to exist
158
- expect(symlinked_services_file).to be_symlink
159
- expect(shared_services_file.read).to eq("#{@new_services_yml}\n")
160
-
161
- expect(read_output).not_to match(/WARNING/)
162
- end
163
- end
164
-
165
- end