engineyard-serverside 2.8.0.pre → 3.0.3

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 (312) hide show
  1. checksums.yaml +7 -0
  2. data/bin/engineyard-serverside-execute-service-hook +1 -1
  3. data/features/hook/running-a-deploy-hook.feature +277 -0
  4. data/features/hook/step_definitions/running-a-deploy-hook-steps.rb +200 -0
  5. data/features/step_definitions/command_steps.rb +8 -0
  6. data/features/step_definitions/version_steps.rb +5 -0
  7. data/features/support/env.rb +63 -0
  8. data/features/support/error_codes.rb +17 -0
  9. data/features/support/fs_helpers.rb +82 -0
  10. data/features/support/output_helpers.rb +7 -0
  11. data/features/support/runner.rb +41 -0
  12. data/features/version.feature +7 -0
  13. data/lib/engineyard-serverside.rb +2 -5
  14. data/lib/engineyard-serverside/callbacks/collection/base.rb +12 -5
  15. data/lib/engineyard-serverside/callbacks/distributor.rb +2 -7
  16. data/lib/engineyard-serverside/callbacks/executor/executable.rb +2 -0
  17. data/lib/engineyard-serverside/cli/app.rb +6 -0
  18. data/lib/engineyard-serverside/cli/workflows/calling_deploy_hooks.rb +1 -2
  19. data/lib/engineyard-serverside/configuration.rb +3 -3
  20. data/lib/engineyard-serverside/deploy.rb +4 -8
  21. data/lib/engineyard-serverside/shell.rb +38 -10
  22. data/lib/engineyard-serverside/version.rb +1 -1
  23. data/spec/engineyard-serverside/callbacks/collection/combined_spec.rb +232 -0
  24. data/spec/engineyard-serverside/callbacks/collection/deploy_hooks_spec.rb +170 -0
  25. data/spec/engineyard-serverside/callbacks/collection/service_hooks/collection_spec.rb +171 -0
  26. data/spec/engineyard-serverside/callbacks/collection/service_hooks/combined_spec.rb +174 -0
  27. data/spec/engineyard-serverside/callbacks/collection/service_hooks_spec.rb +31 -0
  28. data/spec/engineyard-serverside/callbacks/collection_spec.rb +49 -0
  29. data/spec/engineyard-serverside/callbacks/distributor/remote_spec.rb +135 -0
  30. data/spec/engineyard-serverside/callbacks/distributor/viability_filter_spec.rb +208 -0
  31. data/spec/engineyard-serverside/callbacks/distributor_spec.rb +43 -0
  32. data/spec/engineyard-serverside/callbacks/executor/executable_spec.rb +386 -0
  33. data/spec/engineyard-serverside/callbacks/executor/ruby/context_spec.rb +538 -0
  34. data/spec/engineyard-serverside/callbacks/executor/ruby/executor_spec.rb +313 -0
  35. data/spec/engineyard-serverside/callbacks/executor/ruby_spec.rb +35 -0
  36. data/spec/engineyard-serverside/callbacks/executor_spec.rb +45 -0
  37. data/spec/engineyard-serverside/callbacks_spec.rb +31 -0
  38. data/spec/engineyard-serverside/cli/workflows/base_spec.rb +237 -0
  39. data/spec/engineyard-serverside/cli/workflows/calling_deploy_hooks_spec.rb +65 -0
  40. data/spec/engineyard-serverside/cli/workflows/deploying_applications_spec.rb +61 -0
  41. data/spec/engineyard-serverside/cli/workflows/disabling_maintenance_spec.rb +61 -0
  42. data/spec/engineyard-serverside/cli/workflows/enabling_maintenance_spec.rb +61 -0
  43. data/spec/engineyard-serverside/cli/workflows/helpers_spec.rb +64 -0
  44. data/spec/engineyard-serverside/cli/workflows/rolling_back_applications_spec.rb +61 -0
  45. data/spec/engineyard-serverside/cli/workflows/showing_maintenance_status_spec.rb +60 -0
  46. data/spec/engineyard-serverside/cli/workflows_spec.rb +87 -0
  47. data/spec/engineyard-serverside/dependency_manager/base_spec.rb +139 -0
  48. data/spec/engineyard-serverside/paths_spec.rb +820 -0
  49. data/spec/engineyard-serverside/propagator_spec.rb +56 -0
  50. data/spec/engineyard-serverside/server_spec.rb +390 -0
  51. data/spec/engineyard-serverside/shell/helpers_spec.rb +98 -0
  52. data/spec/engineyard-serverside/shell/yieldio_spec.rb +33 -0
  53. data/spec/engineyard-serverside/shell_spec.rb +543 -0
  54. data/spec/engineyard-serverside/slug/distributor_spec.rb +199 -0
  55. data/spec/engineyard-serverside/slug/enabler_spec.rb +191 -0
  56. data/spec/engineyard-serverside/slug/failure_handler_spec.rb +114 -0
  57. data/spec/engineyard-serverside/slug/finalizer_spec.rb +191 -0
  58. data/spec/engineyard-serverside/slug/generator_spec.rb +82 -0
  59. data/spec/engineyard-serverside/slug/migrator_spec.rb +137 -0
  60. data/spec/engineyard-serverside/slug/restarter_spec.rb +226 -0
  61. data/spec/engineyard-serverside/slug/source/updater_spec.rb +710 -0
  62. data/spec/engineyard-serverside/slug/source_spec.rb +40 -0
  63. data/spec/engineyard-serverside/source_spec.rb +171 -0
  64. data/spec/railway_spec.rb +130 -0
  65. data/spec/result/failure_spec.rb +113 -0
  66. data/spec/result/success_spec.rb +109 -0
  67. data/spec/result_spec.rb +23 -0
  68. data/spec/spec_helper.rb +3 -349
  69. metadata +327 -602
  70. data/lib/vendor/json_pure/COPYING +0 -57
  71. data/lib/vendor/json_pure/GPL +0 -340
  72. data/lib/vendor/json_pure/README.rdoc +0 -358
  73. data/lib/vendor/json_pure/VERSION +0 -1
  74. data/lib/vendor/json_pure/lib/json.rb +0 -62
  75. data/lib/vendor/json_pure/lib/json/add/bigdecimal.rb +0 -28
  76. data/lib/vendor/json_pure/lib/json/add/complex.rb +0 -22
  77. data/lib/vendor/json_pure/lib/json/add/core.rb +0 -11
  78. data/lib/vendor/json_pure/lib/json/add/date.rb +0 -34
  79. data/lib/vendor/json_pure/lib/json/add/date_time.rb +0 -48
  80. data/lib/vendor/json_pure/lib/json/add/exception.rb +0 -31
  81. data/lib/vendor/json_pure/lib/json/add/ostruct.rb +0 -31
  82. data/lib/vendor/json_pure/lib/json/add/range.rb +0 -29
  83. data/lib/vendor/json_pure/lib/json/add/rational.rb +0 -22
  84. data/lib/vendor/json_pure/lib/json/add/regexp.rb +0 -30
  85. data/lib/vendor/json_pure/lib/json/add/struct.rb +0 -30
  86. data/lib/vendor/json_pure/lib/json/add/symbol.rb +0 -25
  87. data/lib/vendor/json_pure/lib/json/add/time.rb +0 -38
  88. data/lib/vendor/json_pure/lib/json/common.rb +0 -484
  89. data/lib/vendor/json_pure/lib/json/ext.rb +0 -21
  90. data/lib/vendor/json_pure/lib/json/generic_object.rb +0 -70
  91. data/lib/vendor/json_pure/lib/json/pure.rb +0 -21
  92. data/lib/vendor/json_pure/lib/json/pure/generator.rb +0 -522
  93. data/lib/vendor/json_pure/lib/json/pure/parser.rb +0 -359
  94. data/lib/vendor/json_pure/lib/json/version.rb +0 -8
  95. data/lib/vendor/multi_json/CHANGELOG.md +0 -121
  96. data/lib/vendor/multi_json/CONTRIBUTING.md +0 -46
  97. data/lib/vendor/multi_json/Gemfile +0 -31
  98. data/lib/vendor/multi_json/LICENSE.md +0 -20
  99. data/lib/vendor/multi_json/README.md +0 -105
  100. data/lib/vendor/multi_json/Rakefile +0 -12
  101. data/lib/vendor/multi_json/lib/multi_json.rb +0 -137
  102. data/lib/vendor/multi_json/lib/multi_json/adapters/gson.rb +0 -20
  103. data/lib/vendor/multi_json/lib/multi_json/adapters/json_common.rb +0 -35
  104. data/lib/vendor/multi_json/lib/multi_json/adapters/json_gem.rb +0 -12
  105. data/lib/vendor/multi_json/lib/multi_json/adapters/json_pure.rb +0 -12
  106. data/lib/vendor/multi_json/lib/multi_json/adapters/nsjsonserialization.rb +0 -35
  107. data/lib/vendor/multi_json/lib/multi_json/adapters/oj.rb +0 -29
  108. data/lib/vendor/multi_json/lib/multi_json/adapters/ok_json.rb +0 -58
  109. data/lib/vendor/multi_json/lib/multi_json/adapters/yajl.rb +0 -20
  110. data/lib/vendor/multi_json/lib/multi_json/vendor/okjson.rb +0 -602
  111. data/lib/vendor/multi_json/lib/multi_json/version.rb +0 -3
  112. data/lib/vendor/multi_json/spec/adapter_shared_example.rb +0 -162
  113. data/lib/vendor/multi_json/spec/helper.rb +0 -45
  114. data/lib/vendor/multi_json/spec/json_common_shared_example.rb +0 -36
  115. data/lib/vendor/multi_json/spec/multi_json_spec.rb +0 -151
  116. data/spec/archive_deploy_spec.rb +0 -53
  117. data/spec/basic_deploy_spec.rb +0 -26
  118. data/spec/bundler_deploy_spec.rb +0 -160
  119. data/spec/configuration_spec.rb +0 -206
  120. data/spec/custom_deploy_spec.rb +0 -128
  121. data/spec/deploy_hook_spec.rb +0 -378
  122. data/spec/deprecation_spec.rb +0 -23
  123. data/spec/ey_yml_customized_deploy_spec.rb +0 -99
  124. data/spec/fixtures/gitrepo.tar.gz +0 -0
  125. data/spec/fixtures/invalid_hook.rb +0 -1
  126. data/spec/fixtures/lockfiles/0.9-no-bundler +0 -111
  127. data/spec/fixtures/lockfiles/0.9-with-bundler +0 -117
  128. data/spec/fixtures/lockfiles/1.0-no-bundler +0 -54
  129. data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +0 -162
  130. data/spec/fixtures/lockfiles/1.0.18-do_mysql +0 -88
  131. data/spec/fixtures/lockfiles/1.0.18-do_postgres +0 -79
  132. data/spec/fixtures/lockfiles/1.0.18-mysql +0 -43
  133. data/spec/fixtures/lockfiles/1.0.18-mysql2 +0 -43
  134. data/spec/fixtures/lockfiles/1.0.18-pg +0 -43
  135. data/spec/fixtures/lockfiles/1.0.6-no-bundler +0 -51
  136. data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +0 -52
  137. data/spec/fixtures/lockfiles/1.0.6-with-bundler +0 -52
  138. data/spec/fixtures/lockfiles/1.15.1-no-bundler +0 -51
  139. data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +0 -112
  140. data/spec/fixtures/lockfiles/not-a-lockfile +0 -1
  141. data/spec/fixtures/repos/assets_detected/Gemfile +0 -5
  142. data/spec/fixtures/repos/assets_detected/Gemfile.lock +0 -88
  143. data/spec/fixtures/repos/assets_detected/README +0 -1
  144. data/spec/fixtures/repos/assets_detected/Rakefile +0 -5
  145. data/spec/fixtures/repos/assets_detected/app/assets/empty +0 -0
  146. data/spec/fixtures/repos/assets_detected/config/application.rb +0 -5
  147. data/spec/fixtures/repos/assets_detected/config/ey.yml +0 -3
  148. data/spec/fixtures/repos/assets_disabled/Gemfile +0 -5
  149. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +0 -88
  150. data/spec/fixtures/repos/assets_disabled/README +0 -1
  151. data/spec/fixtures/repos/assets_disabled/Rakefile +0 -6
  152. data/spec/fixtures/repos/assets_disabled/app/assets/empty +0 -0
  153. data/spec/fixtures/repos/assets_disabled/config/application.rb +0 -5
  154. data/spec/fixtures/repos/assets_disabled/config/ey.yml +0 -3
  155. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +0 -5
  156. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +0 -88
  157. data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +0 -1
  158. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +0 -6
  159. data/spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty +0 -0
  160. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +0 -5
  161. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +0 -5
  162. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile +0 -5
  163. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile.lock +0 -88
  164. data/spec/fixtures/repos/assets_disabled_utf8/README +0 -3
  165. data/spec/fixtures/repos/assets_disabled_utf8/Rakefile +0 -5
  166. data/spec/fixtures/repos/assets_disabled_utf8/app/assets/empty +0 -0
  167. data/spec/fixtures/repos/assets_disabled_utf8/config/application.rb +0 -7
  168. data/spec/fixtures/repos/assets_disabled_utf8/config/ey.yml +0 -3
  169. data/spec/fixtures/repos/assets_enabled_all/Gemfile +0 -5
  170. data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +0 -88
  171. data/spec/fixtures/repos/assets_enabled_all/README +0 -1
  172. data/spec/fixtures/repos/assets_enabled_all/app/assets/empty +0 -0
  173. data/spec/fixtures/repos/assets_enabled_all/config/application.rb +0 -5
  174. data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +0 -6
  175. data/spec/fixtures/repos/assets_enabled_all/script/assets +0 -5
  176. data/spec/fixtures/repos/assets_enabled_all/tmp/obstruction +0 -1
  177. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +0 -3
  178. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +0 -10
  179. data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +0 -1
  180. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +0 -8
  181. data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +0 -4
  182. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +0 -5
  183. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +0 -88
  184. data/spec/fixtures/repos/assets_enabled_util_only/README +0 -1
  185. data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +0 -6
  186. data/spec/fixtures/repos/assets_enabled_util_only/app/assets/empty +0 -0
  187. data/spec/fixtures/repos/assets_enabled_util_only/config/application.rb +0 -5
  188. data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +0 -6
  189. data/spec/fixtures/repos/assets_error/Gemfile +0 -5
  190. data/spec/fixtures/repos/assets_error/Gemfile.lock +0 -88
  191. data/spec/fixtures/repos/assets_error/README +0 -1
  192. data/spec/fixtures/repos/assets_error/Rakefile +0 -4
  193. data/spec/fixtures/repos/assets_error/app/assets/empty +0 -0
  194. data/spec/fixtures/repos/assets_error/config/application.rb +0 -5
  195. data/spec/fixtures/repos/assets_error/config/ey.yml +0 -4
  196. data/spec/fixtures/repos/assets_in_hook/Gemfile +0 -5
  197. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +0 -88
  198. data/spec/fixtures/repos/assets_in_hook/README +0 -2
  199. data/spec/fixtures/repos/assets_in_hook/Rakefile +0 -5
  200. data/spec/fixtures/repos/assets_in_hook/app/assets/empty +0 -0
  201. data/spec/fixtures/repos/assets_in_hook/config/application.rb +0 -5
  202. data/spec/fixtures/repos/assets_in_hook/config/ey.yml +0 -3
  203. data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +0 -2
  204. data/spec/fixtures/repos/bundle_fails/Gemfile +0 -1
  205. data/spec/fixtures/repos/bundle_fails/README +0 -1
  206. data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +0 -1
  207. data/spec/fixtures/repos/bundler_disabled/Gemfile +0 -4
  208. data/spec/fixtures/repos/bundler_disabled/Gemfile.lock +0 -12
  209. data/spec/fixtures/repos/bundler_disabled/README +0 -1
  210. data/spec/fixtures/repos/bundler_disabled/config/ey.yml +0 -2
  211. data/spec/fixtures/repos/bundler_disabled/deploy/after_bundle.rb +0 -1
  212. data/spec/fixtures/repos/bundler_disabled/deploy/before_bundle.rb +0 -1
  213. data/spec/fixtures/repos/bundler_old/Gemfile +0 -5
  214. data/spec/fixtures/repos/bundler_old/Gemfile.lock +0 -15
  215. data/spec/fixtures/repos/bundler_old/README +0 -1
  216. data/spec/fixtures/repos/default/Gemfile +0 -4
  217. data/spec/fixtures/repos/default/Gemfile.lock +0 -12
  218. data/spec/fixtures/repos/default/README +0 -5
  219. data/spec/fixtures/repos/default/ey.yml +0 -3
  220. data/spec/fixtures/repos/executable_hooks/README +0 -1
  221. data/spec/fixtures/repos/executable_hooks/deploy/before_restart +0 -72
  222. data/spec/fixtures/repos/executable_hooks_not_executable/README +0 -3
  223. data/spec/fixtures/repos/executable_hooks_not_executable/deploy/before_restart +0 -3
  224. data/spec/fixtures/repos/ey_yml/Gemfile +0 -4
  225. data/spec/fixtures/repos/ey_yml/Gemfile.lock +0 -12
  226. data/spec/fixtures/repos/ey_yml/README +0 -1
  227. data/spec/fixtures/repos/ey_yml/config/ey.yml +0 -18
  228. data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +0 -6
  229. data/spec/fixtures/repos/ey_yml_alt/Gemfile +0 -4
  230. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +0 -12
  231. data/spec/fixtures/repos/ey_yml_alt/README +0 -1
  232. data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +0 -6
  233. data/spec/fixtures/repos/ey_yml_alt/ey.yml +0 -12
  234. data/spec/fixtures/repos/hook_fails/README +0 -1
  235. data/spec/fixtures/repos/hook_fails/deploy/before_deploy.rb +0 -1
  236. data/spec/fixtures/repos/hooks/README +0 -1
  237. data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +0 -1
  238. data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +0 -1
  239. data/spec/fixtures/repos/hooks/deploy/after_deploy.rb +0 -1
  240. data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +0 -1
  241. data/spec/fixtures/repos/hooks/deploy/after_restart.rb +0 -1
  242. data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +0 -1
  243. data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +0 -1
  244. data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +0 -1
  245. data/spec/fixtures/repos/hooks/deploy/before_deploy.rb +0 -1
  246. data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +0 -1
  247. data/spec/fixtures/repos/hooks/deploy/before_restart.rb +0 -1
  248. data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +0 -1
  249. data/spec/fixtures/repos/multi_dep_manager/README +0 -1
  250. data/spec/fixtures/repos/multi_dep_manager/composer.json +0 -5
  251. data/spec/fixtures/repos/multi_dep_manager/composer.lock +0 -462
  252. data/spec/fixtures/repos/multi_dep_manager/package.json +0 -7
  253. data/spec/fixtures/repos/multi_dep_manager/public/index.php +0 -4
  254. data/spec/fixtures/repos/no_ey_config/Gemfile +0 -3
  255. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +0 -10
  256. data/spec/fixtures/repos/no_ey_config/README +0 -1
  257. data/spec/fixtures/repos/no_ey_config/ey.yml +0 -3
  258. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile +0 -3
  259. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile.lock +0 -10
  260. data/spec/fixtures/repos/no_ey_config_no_warning/README +0 -1
  261. data/spec/fixtures/repos/no_ey_config_no_warning/ey.yml +0 -5
  262. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +0 -4
  263. data/spec/fixtures/repos/no_gemfile_lock/README +0 -1
  264. data/spec/fixtures/repos/no_gemfile_lock/ey.yml +0 -3
  265. data/spec/fixtures/repos/nodejs/README +0 -1
  266. data/spec/fixtures/repos/nodejs/package.json +0 -7
  267. data/spec/fixtures/repos/not_bundled/README +0 -1
  268. data/spec/fixtures/repos/npm_disabled/README +0 -1
  269. data/spec/fixtures/repos/npm_disabled/config/ey.yml +0 -2
  270. data/spec/fixtures/repos/npm_disabled/package.json +0 -7
  271. data/spec/fixtures/repos/php_composer_disabled/README +0 -1
  272. data/spec/fixtures/repos/php_composer_disabled/composer.json +0 -5
  273. data/spec/fixtures/repos/php_composer_disabled/composer.lock +0 -462
  274. data/spec/fixtures/repos/php_composer_disabled/config/ey.yml +0 -2
  275. data/spec/fixtures/repos/php_composer_disabled/public/index.php +0 -4
  276. data/spec/fixtures/repos/php_composer_lock/README +0 -1
  277. data/spec/fixtures/repos/php_composer_lock/composer.json +0 -5
  278. data/spec/fixtures/repos/php_composer_lock/composer.lock +0 -462
  279. data/spec/fixtures/repos/php_composer_lock/public/index.php +0 -4
  280. data/spec/fixtures/repos/php_no_composer_lock/README +0 -1
  281. data/spec/fixtures/repos/php_no_composer_lock/composer.json +0 -21
  282. data/spec/fixtures/repos/php_no_composer_lock/public/index.php +0 -4
  283. data/spec/fixtures/repos/public_system/Gemfile +0 -4
  284. data/spec/fixtures/repos/public_system/Gemfile.lock +0 -12
  285. data/spec/fixtures/repos/public_system/README +0 -5
  286. data/spec/fixtures/repos/public_system/ey.yml +0 -3
  287. data/spec/fixtures/repos/public_system/public/system/cant_touch_this.txt +0 -3
  288. data/spec/fixtures/repos/sqlite3/Gemfile +0 -4
  289. data/spec/fixtures/repos/sqlite3/Gemfile.lock +0 -89
  290. data/spec/fixtures/repos/sqlite3/README +0 -1
  291. data/spec/fixtures/retwisj.war +0 -0
  292. data/spec/fixtures/valid_hook.rb +0 -1
  293. data/spec/git_strategy_spec.rb +0 -34
  294. data/spec/lockfile_parser_spec.rb +0 -126
  295. data/spec/maintenance_spec.rb +0 -44
  296. data/spec/multi_dependency_manager_spec.rb +0 -25
  297. data/spec/nodejs_deploy_spec.rb +0 -30
  298. data/spec/php_deploy_spec.rb +0 -81
  299. data/spec/platform_configure_spec.rb +0 -61
  300. data/spec/rails31_deploy_spec.rb +0 -172
  301. data/spec/restart_spec.rb +0 -43
  302. data/spec/rollback_spec.rb +0 -87
  303. data/spec/server_spec.rb +0 -70
  304. data/spec/services_deploy_spec.rb +0 -165
  305. data/spec/shell_spec.rb +0 -57
  306. data/spec/source/archive_spec.rb +0 -33
  307. data/spec/source/git_spec.rb +0 -44
  308. data/spec/sqlite3_deploy_spec.rb +0 -38
  309. data/spec/support/integration.rb +0 -103
  310. data/spec/support/source_doubles.rb +0 -28
  311. data/spec/support/timecop.rb +0 -5
  312. data/spec/symlink_spec.rb +0 -15
@@ -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