engineyard-serverside 2.8.0.pre4 → 3.0.4

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 (308) hide show
  1. checksums.yaml +13 -5
  2. data/features/hook/running-a-deploy-hook.feature +277 -0
  3. data/features/hook/step_definitions/running-a-deploy-hook-steps.rb +200 -0
  4. data/features/step_definitions/command_steps.rb +8 -0
  5. data/features/step_definitions/version_steps.rb +5 -0
  6. data/features/support/env.rb +63 -0
  7. data/features/support/error_codes.rb +17 -0
  8. data/features/support/fs_helpers.rb +82 -0
  9. data/features/support/output_helpers.rb +7 -0
  10. data/features/support/runner.rb +41 -0
  11. data/features/version.feature +7 -0
  12. data/lib/engineyard-serverside/cli/app.rb +6 -0
  13. data/lib/engineyard-serverside/configuration.rb +3 -3
  14. data/lib/engineyard-serverside/deploy.rb +2 -1
  15. data/lib/engineyard-serverside/propagator.rb +1 -1
  16. data/lib/engineyard-serverside/shell.rb +38 -10
  17. data/lib/engineyard-serverside/version.rb +1 -1
  18. data/lib/engineyard-serverside.rb +2 -5
  19. data/spec/engineyard-serverside/callbacks/collection/combined_spec.rb +232 -0
  20. data/spec/engineyard-serverside/callbacks/collection/deploy_hooks_spec.rb +170 -0
  21. data/spec/engineyard-serverside/callbacks/collection/service_hooks/collection_spec.rb +171 -0
  22. data/spec/engineyard-serverside/callbacks/collection/service_hooks/combined_spec.rb +174 -0
  23. data/spec/engineyard-serverside/callbacks/collection/service_hooks_spec.rb +31 -0
  24. data/spec/engineyard-serverside/callbacks/collection_spec.rb +49 -0
  25. data/spec/engineyard-serverside/callbacks/distributor/remote_spec.rb +135 -0
  26. data/spec/engineyard-serverside/callbacks/distributor/viability_filter_spec.rb +208 -0
  27. data/spec/engineyard-serverside/callbacks/distributor_spec.rb +43 -0
  28. data/spec/engineyard-serverside/callbacks/executor/executable_spec.rb +386 -0
  29. data/spec/engineyard-serverside/callbacks/executor/ruby/context_spec.rb +538 -0
  30. data/spec/engineyard-serverside/callbacks/executor/ruby/executor_spec.rb +313 -0
  31. data/spec/engineyard-serverside/callbacks/executor/ruby_spec.rb +35 -0
  32. data/spec/engineyard-serverside/callbacks/executor_spec.rb +45 -0
  33. data/spec/engineyard-serverside/callbacks_spec.rb +31 -0
  34. data/spec/engineyard-serverside/cli/workflows/base_spec.rb +237 -0
  35. data/spec/engineyard-serverside/cli/workflows/calling_deploy_hooks_spec.rb +65 -0
  36. data/spec/engineyard-serverside/cli/workflows/deploying_applications_spec.rb +61 -0
  37. data/spec/engineyard-serverside/cli/workflows/disabling_maintenance_spec.rb +61 -0
  38. data/spec/engineyard-serverside/cli/workflows/enabling_maintenance_spec.rb +61 -0
  39. data/spec/engineyard-serverside/cli/workflows/helpers_spec.rb +64 -0
  40. data/spec/engineyard-serverside/cli/workflows/rolling_back_applications_spec.rb +61 -0
  41. data/spec/engineyard-serverside/cli/workflows/showing_maintenance_status_spec.rb +60 -0
  42. data/spec/engineyard-serverside/cli/workflows_spec.rb +87 -0
  43. data/spec/engineyard-serverside/dependency_manager/base_spec.rb +139 -0
  44. data/spec/engineyard-serverside/paths_spec.rb +820 -0
  45. data/spec/engineyard-serverside/propagator_spec.rb +56 -0
  46. data/spec/engineyard-serverside/server_spec.rb +390 -0
  47. data/spec/engineyard-serverside/shell/helpers_spec.rb +98 -0
  48. data/spec/engineyard-serverside/shell/yieldio_spec.rb +33 -0
  49. data/spec/engineyard-serverside/shell_spec.rb +543 -0
  50. data/spec/engineyard-serverside/slug/distributor_spec.rb +199 -0
  51. data/spec/engineyard-serverside/slug/enabler_spec.rb +191 -0
  52. data/spec/engineyard-serverside/slug/failure_handler_spec.rb +114 -0
  53. data/spec/engineyard-serverside/slug/finalizer_spec.rb +191 -0
  54. data/spec/engineyard-serverside/slug/generator_spec.rb +82 -0
  55. data/spec/engineyard-serverside/slug/migrator_spec.rb +137 -0
  56. data/spec/engineyard-serverside/slug/restarter_spec.rb +226 -0
  57. data/spec/engineyard-serverside/slug/source/updater_spec.rb +710 -0
  58. data/spec/engineyard-serverside/slug/source_spec.rb +40 -0
  59. data/spec/engineyard-serverside/source_spec.rb +171 -0
  60. data/spec/railway_spec.rb +130 -0
  61. data/spec/result/failure_spec.rb +113 -0
  62. data/spec/result/success_spec.rb +109 -0
  63. data/spec/result_spec.rb +23 -0
  64. data/spec/spec_helper.rb +3 -349
  65. metadata +189 -490
  66. data/lib/vendor/json_pure/COPYING +0 -57
  67. data/lib/vendor/json_pure/GPL +0 -340
  68. data/lib/vendor/json_pure/README.rdoc +0 -358
  69. data/lib/vendor/json_pure/VERSION +0 -1
  70. data/lib/vendor/json_pure/lib/json/add/bigdecimal.rb +0 -28
  71. data/lib/vendor/json_pure/lib/json/add/complex.rb +0 -22
  72. data/lib/vendor/json_pure/lib/json/add/core.rb +0 -11
  73. data/lib/vendor/json_pure/lib/json/add/date.rb +0 -34
  74. data/lib/vendor/json_pure/lib/json/add/date_time.rb +0 -48
  75. data/lib/vendor/json_pure/lib/json/add/exception.rb +0 -31
  76. data/lib/vendor/json_pure/lib/json/add/ostruct.rb +0 -31
  77. data/lib/vendor/json_pure/lib/json/add/range.rb +0 -29
  78. data/lib/vendor/json_pure/lib/json/add/rational.rb +0 -22
  79. data/lib/vendor/json_pure/lib/json/add/regexp.rb +0 -30
  80. data/lib/vendor/json_pure/lib/json/add/struct.rb +0 -30
  81. data/lib/vendor/json_pure/lib/json/add/symbol.rb +0 -25
  82. data/lib/vendor/json_pure/lib/json/add/time.rb +0 -38
  83. data/lib/vendor/json_pure/lib/json/common.rb +0 -484
  84. data/lib/vendor/json_pure/lib/json/ext.rb +0 -21
  85. data/lib/vendor/json_pure/lib/json/generic_object.rb +0 -70
  86. data/lib/vendor/json_pure/lib/json/pure/generator.rb +0 -522
  87. data/lib/vendor/json_pure/lib/json/pure/parser.rb +0 -359
  88. data/lib/vendor/json_pure/lib/json/pure.rb +0 -21
  89. data/lib/vendor/json_pure/lib/json/version.rb +0 -8
  90. data/lib/vendor/json_pure/lib/json.rb +0 -62
  91. data/lib/vendor/multi_json/CHANGELOG.md +0 -121
  92. data/lib/vendor/multi_json/CONTRIBUTING.md +0 -46
  93. data/lib/vendor/multi_json/Gemfile +0 -31
  94. data/lib/vendor/multi_json/LICENSE.md +0 -20
  95. data/lib/vendor/multi_json/README.md +0 -105
  96. data/lib/vendor/multi_json/Rakefile +0 -12
  97. data/lib/vendor/multi_json/lib/multi_json/adapters/gson.rb +0 -20
  98. data/lib/vendor/multi_json/lib/multi_json/adapters/json_common.rb +0 -35
  99. data/lib/vendor/multi_json/lib/multi_json/adapters/json_gem.rb +0 -12
  100. data/lib/vendor/multi_json/lib/multi_json/adapters/json_pure.rb +0 -12
  101. data/lib/vendor/multi_json/lib/multi_json/adapters/nsjsonserialization.rb +0 -35
  102. data/lib/vendor/multi_json/lib/multi_json/adapters/oj.rb +0 -29
  103. data/lib/vendor/multi_json/lib/multi_json/adapters/ok_json.rb +0 -58
  104. data/lib/vendor/multi_json/lib/multi_json/adapters/yajl.rb +0 -20
  105. data/lib/vendor/multi_json/lib/multi_json/vendor/okjson.rb +0 -602
  106. data/lib/vendor/multi_json/lib/multi_json/version.rb +0 -3
  107. data/lib/vendor/multi_json/lib/multi_json.rb +0 -137
  108. data/lib/vendor/multi_json/spec/adapter_shared_example.rb +0 -162
  109. data/lib/vendor/multi_json/spec/helper.rb +0 -45
  110. data/lib/vendor/multi_json/spec/json_common_shared_example.rb +0 -36
  111. data/lib/vendor/multi_json/spec/multi_json_spec.rb +0 -151
  112. data/spec/archive_deploy_spec.rb +0 -53
  113. data/spec/basic_deploy_spec.rb +0 -26
  114. data/spec/bundler_deploy_spec.rb +0 -160
  115. data/spec/configuration_spec.rb +0 -206
  116. data/spec/custom_deploy_spec.rb +0 -128
  117. data/spec/deploy_hook_spec.rb +0 -378
  118. data/spec/deprecation_spec.rb +0 -23
  119. data/spec/ey_yml_customized_deploy_spec.rb +0 -99
  120. data/spec/fixtures/gitrepo.tar.gz +0 -0
  121. data/spec/fixtures/invalid_hook.rb +0 -1
  122. data/spec/fixtures/lockfiles/0.9-no-bundler +0 -111
  123. data/spec/fixtures/lockfiles/0.9-with-bundler +0 -117
  124. data/spec/fixtures/lockfiles/1.0-no-bundler +0 -54
  125. data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +0 -162
  126. data/spec/fixtures/lockfiles/1.0.18-do_mysql +0 -88
  127. data/spec/fixtures/lockfiles/1.0.18-do_postgres +0 -79
  128. data/spec/fixtures/lockfiles/1.0.18-mysql +0 -43
  129. data/spec/fixtures/lockfiles/1.0.18-mysql2 +0 -43
  130. data/spec/fixtures/lockfiles/1.0.18-pg +0 -43
  131. data/spec/fixtures/lockfiles/1.0.6-no-bundler +0 -51
  132. data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +0 -52
  133. data/spec/fixtures/lockfiles/1.0.6-with-bundler +0 -52
  134. data/spec/fixtures/lockfiles/1.15.1-no-bundler +0 -51
  135. data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +0 -112
  136. data/spec/fixtures/lockfiles/not-a-lockfile +0 -1
  137. data/spec/fixtures/repos/assets_detected/Gemfile +0 -5
  138. data/spec/fixtures/repos/assets_detected/Gemfile.lock +0 -88
  139. data/spec/fixtures/repos/assets_detected/README +0 -1
  140. data/spec/fixtures/repos/assets_detected/Rakefile +0 -5
  141. data/spec/fixtures/repos/assets_detected/app/assets/empty +0 -0
  142. data/spec/fixtures/repos/assets_detected/config/application.rb +0 -5
  143. data/spec/fixtures/repos/assets_detected/config/ey.yml +0 -3
  144. data/spec/fixtures/repos/assets_disabled/Gemfile +0 -5
  145. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +0 -88
  146. data/spec/fixtures/repos/assets_disabled/README +0 -1
  147. data/spec/fixtures/repos/assets_disabled/Rakefile +0 -6
  148. data/spec/fixtures/repos/assets_disabled/app/assets/empty +0 -0
  149. data/spec/fixtures/repos/assets_disabled/config/application.rb +0 -5
  150. data/spec/fixtures/repos/assets_disabled/config/ey.yml +0 -3
  151. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +0 -5
  152. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +0 -88
  153. data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +0 -1
  154. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +0 -6
  155. data/spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty +0 -0
  156. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +0 -5
  157. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +0 -5
  158. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile +0 -5
  159. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile.lock +0 -88
  160. data/spec/fixtures/repos/assets_disabled_utf8/README +0 -3
  161. data/spec/fixtures/repos/assets_disabled_utf8/Rakefile +0 -5
  162. data/spec/fixtures/repos/assets_disabled_utf8/app/assets/empty +0 -0
  163. data/spec/fixtures/repos/assets_disabled_utf8/config/application.rb +0 -7
  164. data/spec/fixtures/repos/assets_disabled_utf8/config/ey.yml +0 -3
  165. data/spec/fixtures/repos/assets_enabled_all/Gemfile +0 -5
  166. data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +0 -88
  167. data/spec/fixtures/repos/assets_enabled_all/README +0 -1
  168. data/spec/fixtures/repos/assets_enabled_all/app/assets/empty +0 -0
  169. data/spec/fixtures/repos/assets_enabled_all/config/application.rb +0 -5
  170. data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +0 -6
  171. data/spec/fixtures/repos/assets_enabled_all/script/assets +0 -5
  172. data/spec/fixtures/repos/assets_enabled_all/tmp/obstruction +0 -1
  173. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +0 -3
  174. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +0 -10
  175. data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +0 -1
  176. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +0 -8
  177. data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +0 -4
  178. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +0 -5
  179. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +0 -88
  180. data/spec/fixtures/repos/assets_enabled_util_only/README +0 -1
  181. data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +0 -6
  182. data/spec/fixtures/repos/assets_enabled_util_only/app/assets/empty +0 -0
  183. data/spec/fixtures/repos/assets_enabled_util_only/config/application.rb +0 -5
  184. data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +0 -6
  185. data/spec/fixtures/repos/assets_error/Gemfile +0 -5
  186. data/spec/fixtures/repos/assets_error/Gemfile.lock +0 -88
  187. data/spec/fixtures/repos/assets_error/README +0 -1
  188. data/spec/fixtures/repos/assets_error/Rakefile +0 -4
  189. data/spec/fixtures/repos/assets_error/app/assets/empty +0 -0
  190. data/spec/fixtures/repos/assets_error/config/application.rb +0 -5
  191. data/spec/fixtures/repos/assets_error/config/ey.yml +0 -4
  192. data/spec/fixtures/repos/assets_in_hook/Gemfile +0 -5
  193. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +0 -88
  194. data/spec/fixtures/repos/assets_in_hook/README +0 -2
  195. data/spec/fixtures/repos/assets_in_hook/Rakefile +0 -5
  196. data/spec/fixtures/repos/assets_in_hook/app/assets/empty +0 -0
  197. data/spec/fixtures/repos/assets_in_hook/config/application.rb +0 -5
  198. data/spec/fixtures/repos/assets_in_hook/config/ey.yml +0 -3
  199. data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +0 -2
  200. data/spec/fixtures/repos/bundle_fails/Gemfile +0 -1
  201. data/spec/fixtures/repos/bundle_fails/README +0 -1
  202. data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +0 -1
  203. data/spec/fixtures/repos/bundler_disabled/Gemfile +0 -4
  204. data/spec/fixtures/repos/bundler_disabled/Gemfile.lock +0 -12
  205. data/spec/fixtures/repos/bundler_disabled/README +0 -1
  206. data/spec/fixtures/repos/bundler_disabled/config/ey.yml +0 -2
  207. data/spec/fixtures/repos/bundler_disabled/deploy/after_bundle.rb +0 -1
  208. data/spec/fixtures/repos/bundler_disabled/deploy/before_bundle.rb +0 -1
  209. data/spec/fixtures/repos/bundler_old/Gemfile +0 -5
  210. data/spec/fixtures/repos/bundler_old/Gemfile.lock +0 -15
  211. data/spec/fixtures/repos/bundler_old/README +0 -1
  212. data/spec/fixtures/repos/default/Gemfile +0 -4
  213. data/spec/fixtures/repos/default/Gemfile.lock +0 -12
  214. data/spec/fixtures/repos/default/README +0 -5
  215. data/spec/fixtures/repos/default/ey.yml +0 -3
  216. data/spec/fixtures/repos/executable_hooks/README +0 -1
  217. data/spec/fixtures/repos/executable_hooks/deploy/before_restart +0 -72
  218. data/spec/fixtures/repos/executable_hooks_not_executable/README +0 -3
  219. data/spec/fixtures/repos/executable_hooks_not_executable/deploy/before_restart +0 -3
  220. data/spec/fixtures/repos/ey_yml/Gemfile +0 -4
  221. data/spec/fixtures/repos/ey_yml/Gemfile.lock +0 -12
  222. data/spec/fixtures/repos/ey_yml/README +0 -1
  223. data/spec/fixtures/repos/ey_yml/config/ey.yml +0 -18
  224. data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +0 -6
  225. data/spec/fixtures/repos/ey_yml_alt/Gemfile +0 -4
  226. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +0 -12
  227. data/spec/fixtures/repos/ey_yml_alt/README +0 -1
  228. data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +0 -6
  229. data/spec/fixtures/repos/ey_yml_alt/ey.yml +0 -12
  230. data/spec/fixtures/repos/hook_fails/README +0 -1
  231. data/spec/fixtures/repos/hook_fails/deploy/before_deploy.rb +0 -1
  232. data/spec/fixtures/repos/hooks/README +0 -1
  233. data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +0 -1
  234. data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +0 -1
  235. data/spec/fixtures/repos/hooks/deploy/after_deploy.rb +0 -1
  236. data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +0 -1
  237. data/spec/fixtures/repos/hooks/deploy/after_restart.rb +0 -1
  238. data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +0 -1
  239. data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +0 -1
  240. data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +0 -1
  241. data/spec/fixtures/repos/hooks/deploy/before_deploy.rb +0 -1
  242. data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +0 -1
  243. data/spec/fixtures/repos/hooks/deploy/before_restart.rb +0 -1
  244. data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +0 -1
  245. data/spec/fixtures/repos/multi_dep_manager/README +0 -1
  246. data/spec/fixtures/repos/multi_dep_manager/composer.json +0 -5
  247. data/spec/fixtures/repos/multi_dep_manager/composer.lock +0 -462
  248. data/spec/fixtures/repos/multi_dep_manager/package.json +0 -7
  249. data/spec/fixtures/repos/multi_dep_manager/public/index.php +0 -4
  250. data/spec/fixtures/repos/no_ey_config/Gemfile +0 -3
  251. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +0 -10
  252. data/spec/fixtures/repos/no_ey_config/README +0 -1
  253. data/spec/fixtures/repos/no_ey_config/ey.yml +0 -3
  254. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile +0 -3
  255. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile.lock +0 -10
  256. data/spec/fixtures/repos/no_ey_config_no_warning/README +0 -1
  257. data/spec/fixtures/repos/no_ey_config_no_warning/ey.yml +0 -5
  258. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +0 -4
  259. data/spec/fixtures/repos/no_gemfile_lock/README +0 -1
  260. data/spec/fixtures/repos/no_gemfile_lock/ey.yml +0 -3
  261. data/spec/fixtures/repos/nodejs/README +0 -1
  262. data/spec/fixtures/repos/nodejs/package.json +0 -7
  263. data/spec/fixtures/repos/not_bundled/README +0 -1
  264. data/spec/fixtures/repos/npm_disabled/README +0 -1
  265. data/spec/fixtures/repos/npm_disabled/config/ey.yml +0 -2
  266. data/spec/fixtures/repos/npm_disabled/package.json +0 -7
  267. data/spec/fixtures/repos/php_composer_disabled/README +0 -1
  268. data/spec/fixtures/repos/php_composer_disabled/composer.json +0 -5
  269. data/spec/fixtures/repos/php_composer_disabled/composer.lock +0 -462
  270. data/spec/fixtures/repos/php_composer_disabled/config/ey.yml +0 -2
  271. data/spec/fixtures/repos/php_composer_disabled/public/index.php +0 -4
  272. data/spec/fixtures/repos/php_composer_lock/README +0 -1
  273. data/spec/fixtures/repos/php_composer_lock/composer.json +0 -5
  274. data/spec/fixtures/repos/php_composer_lock/composer.lock +0 -462
  275. data/spec/fixtures/repos/php_composer_lock/public/index.php +0 -4
  276. data/spec/fixtures/repos/php_no_composer_lock/README +0 -1
  277. data/spec/fixtures/repos/php_no_composer_lock/composer.json +0 -21
  278. data/spec/fixtures/repos/php_no_composer_lock/public/index.php +0 -4
  279. data/spec/fixtures/repos/public_system/Gemfile +0 -4
  280. data/spec/fixtures/repos/public_system/Gemfile.lock +0 -12
  281. data/spec/fixtures/repos/public_system/README +0 -5
  282. data/spec/fixtures/repos/public_system/ey.yml +0 -3
  283. data/spec/fixtures/repos/public_system/public/system/cant_touch_this.txt +0 -3
  284. data/spec/fixtures/repos/sqlite3/Gemfile +0 -4
  285. data/spec/fixtures/repos/sqlite3/Gemfile.lock +0 -89
  286. data/spec/fixtures/repos/sqlite3/README +0 -1
  287. data/spec/fixtures/retwisj.war +0 -0
  288. data/spec/fixtures/valid_hook.rb +0 -1
  289. data/spec/git_strategy_spec.rb +0 -34
  290. data/spec/lockfile_parser_spec.rb +0 -126
  291. data/spec/maintenance_spec.rb +0 -44
  292. data/spec/multi_dependency_manager_spec.rb +0 -25
  293. data/spec/nodejs_deploy_spec.rb +0 -30
  294. data/spec/php_deploy_spec.rb +0 -81
  295. data/spec/platform_configure_spec.rb +0 -61
  296. data/spec/rails31_deploy_spec.rb +0 -172
  297. data/spec/restart_spec.rb +0 -43
  298. data/spec/rollback_spec.rb +0 -87
  299. data/spec/server_spec.rb +0 -70
  300. data/spec/services_deploy_spec.rb +0 -165
  301. data/spec/shell_spec.rb +0 -57
  302. data/spec/source/archive_spec.rb +0 -33
  303. data/spec/source/git_spec.rb +0 -44
  304. data/spec/sqlite3_deploy_spec.rb +0 -38
  305. data/spec/support/integration.rb +0 -103
  306. data/spec/support/source_doubles.rb +0 -28
  307. data/spec/support/timecop.rb +0 -5
  308. data/spec/symlink_spec.rb +0 -15
@@ -1,126 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "the bundler version retrieved from the lockfile" do
4
- def load_lockfile(file)
5
- File.read(File.expand_path("../fixtures/lockfiles/#{file}", __FILE__))
6
- end
7
-
8
- def get_parser(file)
9
- EY::Serverside::DependencyManager::Bundler::Lockfile.new(load_lockfile(file))
10
- end
11
-
12
- def get_version(file)
13
- get_parser(file).bundler_version
14
- end
15
-
16
- it "raises an error with pre 0.9 bundler lockfiles" do
17
- expect { get_version('0.9-no-bundler') }.to raise_error(RuntimeError, /Malformed or pre bundler-1.0.0 Gemfile.lock/)
18
- expect { get_version('0.9-with-bundler') }.to raise_error(RuntimeError, /Malformed or pre bundler-1.0.0 Gemfile.lock/)
19
- end
20
-
21
- it "has a default version" do
22
- expect(EY::Serverside::DependencyManager::Bundler.default_version).not_to be_nil
23
- expect(EY::Serverside::DependencyManager::Bundler::DEFAULT_VERSION).not_to be_nil
24
- end
25
-
26
- it "returns the default version for a 1.0 lockfile without a bundler dependency" do
27
- expect(get_version('1.0-no-bundler')).to eq(EY::Serverside::DependencyManager::Bundler.default_version)
28
- end
29
-
30
- it "gets the version from a 1.0.0.rc.1 lockfile w/dependency on 1.0.0.rc.1" do
31
- expect(get_version('1.0.0.rc.1-with-bundler')).to eq('1.0.0.rc.1')
32
- end
33
-
34
- it "gets the version from a 1.0.6 lockfile w/dependency on 1.0.6" do
35
- expect(get_version('1.0.6-with-bundler')).to eq('1.0.6')
36
- end
37
-
38
- it "gets the version from a 1.0.6 lockfile w/dependency on 1.0.6 (bundled ~> 1.0.0)" do
39
- expect(get_version('1.0.6-with-any-bundler')).to eq('1.0.6')
40
- end
41
-
42
- it "gets the version from a 1.0.6 lockfile w/o dependency" do
43
- expect(get_version('1.0.6-no-bundler')).to eq('1.0.6')
44
- end
45
-
46
- it "gets the version from a 1.15.1 lockfile w/o dependency" do
47
- expect(get_version('1.15.1-no-bundler')).to eq('1.15.1')
48
- end
49
-
50
- it "raises an error if it can't parse the file" do
51
- expect { get_version('not-a-lockfile') }.to raise_error(RuntimeError, /Malformed or pre bundler-1.0.0 Gemfile.lock/)
52
- end
53
-
54
- context "rails version" do
55
- it "retrieves rails version" do
56
- expect(get_parser('1.3.1-rails-3.2.13').rails_version).to eq("3.2.13")
57
- end
58
-
59
- it "finds no rails version" do
60
- expect(get_parser('1.0.18-mysql2').rails_version).to eq(nil)
61
- end
62
- end
63
-
64
- context "checking for gems in the dependencies" do
65
- it "does not have any database adapters in a gemfile lock without them" do
66
- expect(get_parser('1.0.6-no-bundler').any_database_adapter?).to be_falsey
67
- end
68
-
69
- it "has a database adapter in a Gemfile.lock with do_mysql" do
70
- expect(get_parser('1.0.18-do_mysql').any_database_adapter?).to be_truthy
71
- end
72
-
73
- it "has a database adapter in a Gemfile.lock with mysql" do
74
- expect(get_parser('1.0.18-mysql').any_database_adapter?).to be_truthy
75
- end
76
-
77
- it "has a database adapter in a Gemfile.lock with mysql2" do
78
- expect(get_parser('1.0.18-mysql2').any_database_adapter?).to be_truthy
79
- end
80
-
81
- it "has a database adapter in a Gemfile.lock with pg" do
82
- expect(get_parser('1.0.18-pg').any_database_adapter?).to be_truthy
83
- end
84
-
85
- it "has a database adapter in a Gemfile.lock with do_postgres" do
86
- expect(get_parser('1.0.18-do_postgres').any_database_adapter?).to be_truthy
87
- end
88
- end
89
-
90
- context "fetching the right version number" do
91
- subject { get_parser('1.0.6-no-bundler') }
92
-
93
- it "uses the default version when there is no bundler version" do
94
- expect(subject.fetch_version(nil, nil)).to eq(EY::Serverside::DependencyManager::Bundler.default_version)
95
- end
96
-
97
- it "uses the given version when there is no operator" do
98
- expect(subject.fetch_version(nil, '1.0.1')).to eq('1.0.1')
99
- end
100
-
101
- it "uses the given version when the qualifier is `='" do
102
- expect(subject.fetch_version('=', '1.0.1')).to eq('1.0.1')
103
- end
104
-
105
- it "uses the default version when we get a pessimistic qualifier and is lower than the default version" do
106
- expect(subject.fetch_version('~>', '1.14.1')).to eq(EY::Serverside::DependencyManager::Bundler.default_version)
107
- end
108
-
109
- it "uses the given version when we get a pessimistic qualifier that doesn't match the default version" do
110
- expect(subject.fetch_version('~>', '1.0.0')).to eq('1.0.0')
111
- end
112
-
113
- it "uses the given version when it's geater of equal than the default version" do
114
- expect(subject.fetch_version('>=', '1.100.0')).to eq('1.100.0')
115
- end
116
-
117
- it "uses the default version when the given version is lower" do
118
- expect(subject.fetch_version('>=', '1.0.1')).to eq(EY::Serverside::DependencyManager::Bundler.default_version)
119
- end
120
-
121
- it "selects only the first version expression" do
122
- scan = subject.scan_gem('bundler', 'bundler (>=1.0.1, <2.0.0)')
123
- expect(scan.last).to eq('1.0.1')
124
- end
125
- end
126
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EY::Serverside::Maintenance do
4
- let(:maintenance_path) { deploy_dir.join('shared', 'system', 'maintenance.html') }
5
-
6
- context "deployed application" do
7
- before do
8
- deploy_test_application
9
- end
10
-
11
- it "enables the maintenance page" do
12
- enable_maintenance
13
- expect(maintenance_path).to exist
14
- end
15
-
16
- it "disables an enabled maintenance page" do
17
- enable_maintenance
18
- expect(maintenance_path).to exist
19
- disable_maintenance
20
- expect(maintenance_path).to_not exist
21
- end
22
-
23
- it "lets you know if the app is in maintenance mode" do
24
- maintenance_status
25
- maintenance_output = read_output.split("\n").select{|l| l.match("Maintenance")}
26
- expect(maintenance_output.count).to eq(1)
27
- expect(maintenance_output.first).to match(/Maintenance page: down$/)
28
-
29
- enable_maintenance
30
-
31
- maintenance_status
32
- maintenance_output = read_output.split("\n").select{|l| l.match("Maintenance")}
33
- expect(maintenance_output.count).to eq(1)
34
- expect(maintenance_output.first).to match(/Maintenance page: up$/)
35
-
36
- disable_maintenance
37
-
38
- maintenance_status
39
- maintenance_output = read_output.split("\n").select{|l| l.match("Maintenance")}
40
- expect(maintenance_output.count).to eq(1)
41
- expect(maintenance_output.first).to match(/Maintenance page: down$/)
42
- end
43
- end
44
- end
@@ -1,25 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an application that uses Node.js and NPM" do
4
- with_composer_mocked do |composer_mocked|
5
- with_npm_mocked do |npm_mocked|
6
-
7
- before(:all) do
8
- mock_composer if composer_mocked
9
- mock_npm if npm_mocked
10
- deploy_test_application('multi_dep_manager')
11
- end
12
-
13
- it "runs 'npm install' and 'composer install'" do
14
- npm_cmd = @deployer.commands.grep(/npm install/).first
15
- expect(npm_cmd).not_to be_nil
16
-
17
- update_cmd = @deployer.commands.grep(/composer.*self-update/).first
18
- expect(update_cmd).not_to be_nil
19
-
20
- composer_cmd = @deployer.commands.grep(/composer install/).first
21
- expect(composer_cmd).not_to be_nil
22
- end
23
- end
24
- end
25
- end
@@ -1,30 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an application that uses Node.js and NPM" do
4
- with_npm_mocked do |mocked|
5
- before(:all) do
6
- mock_npm if mocked
7
- end
8
-
9
- context "npm in detect mode" do
10
- before do
11
- deploy_test_application('nodejs')
12
- end
13
-
14
- it "runs 'npm install'" do
15
- install_cmd = @deployer.commands.grep(/npm install/).first
16
- expect(install_cmd).not_to be_nil
17
- end
18
- end
19
-
20
- context "npm disabled" do
21
- before do
22
- deploy_test_application('npm_disabled')
23
- end
24
-
25
- it "does not run 'npm install'" do
26
- expect(@deployer.commands.grep(/npm/)).to be_empty
27
- end
28
- end
29
- end
30
- end
@@ -1,81 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an application that uses PHP and Composer" do
4
-
5
- with_composer_mocked do |mocked|
6
- context "with composer available" do
7
- before(:all) { mock_composer if mocked }
8
-
9
- context "with a composer.lock" do
10
- before(:all) do
11
- deploy_test_application('php_composer_lock')
12
- end
13
-
14
- it "runs 'composer install'" do
15
- install_cmd = @deployer.commands.grep(/composer install/).first
16
- expect(install_cmd).not_to be_nil
17
- end
18
-
19
- it "attempts to run 'composer self-update' before 'composer install'" do
20
- update_cmd = nil
21
- @deployer.commands.each do |cmd|
22
- update_cmd ||= /composer.*self-update/.match(cmd)
23
- if /composer install/.match(cmd)
24
- expect(update_cmd).not_to be nil
25
- end
26
- end
27
- end
28
- end
29
-
30
- context "with composer disabled in ey.yml" do
31
- before(:all) do
32
- deploy_test_application('php_composer_disabled')
33
- end
34
-
35
- it "does not run composer" do
36
- expect(@deployer.commands.grep(/composer/)).to be_empty
37
- end
38
- end
39
-
40
- context "WITHOUT a composer.lock but with composer.json" do
41
- before(:all) do
42
- deploy_test_application('php_no_composer_lock')
43
- end
44
-
45
- it "outputs a warning about deploying without a .lock" do
46
- warning_out = expect(read_output).to include("WARNING: composer.json found but composer.lock missing!")
47
- expect(warning_out).not_to be_nil
48
- end
49
-
50
- it "runs 'composer install'" do
51
- install_cmd = @deployer.commands.grep(/composer install/).first
52
- expect(install_cmd).not_to be_nil
53
- end
54
-
55
- it "attempts to run 'composer self-update' before 'composer install'" do
56
- update_cmd = nil
57
- @deployer.commands.each do |cmd|
58
- update_cmd ||= /composer.*self-update/.match(cmd)
59
- if /composer install/.match(cmd)
60
- expect(update_cmd).not_to be nil
61
- end
62
- end
63
- end
64
-
65
- end
66
-
67
- end
68
-
69
- unless $COMPOSER_INSTALLED
70
- context "without composer available" do
71
-
72
- it "fails to deploy" do
73
- expect {deploy_test_application('php_composer_lock')}.to raise_error EY::Serverside::RemoteFailure
74
- expect {deploy_test_application('php_no_composer_lock')}.to raise_error EY::Serverside::RemoteFailure
75
- end
76
-
77
- end
78
- end
79
- end
80
- end
81
-
@@ -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
data/spec/restart_spec.rb DELETED
@@ -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