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,5 +1,5 @@
1
1
  module EY
2
2
  module Serverside
3
- VERSION = '2.8.0.pre'
3
+ VERSION = '3.0.3'
4
4
  end
5
5
  end
@@ -0,0 +1,232 @@
1
+ require 'spec_helper'
2
+
3
+ require 'pathname'
4
+
5
+ require 'engineyard-serverside/callbacks/collection/combined'
6
+
7
+ module EY
8
+ module Serverside
9
+ module Callbacks
10
+ module Collection
11
+
12
+ describe Combined do
13
+ let(:paths) {Object.new}
14
+ let(:deploy_hook_1) {Object.new}
15
+ let(:deploy_hook_2) {Object.new}
16
+ let(:service_hook_1) {Object.new}
17
+ let(:service_hook_2) {Object.new}
18
+ let(:deploy_hooks) {Object.new}
19
+ let(:service_hooks) {Object.new}
20
+
21
+ let(:collection) {described_class.load(paths)}
22
+
23
+ before(:each) do
24
+ # Stub out the DeployHooks collection upon which we depend
25
+ allow(DeployHooks).
26
+ to receive(:load).
27
+ with(paths).
28
+ and_return(deploy_hooks)
29
+
30
+ allow(deploy_hooks).
31
+ to receive(:all).
32
+ and_return([deploy_hook_1, deploy_hook_2])
33
+
34
+ allow(deploy_hooks).
35
+ to receive(:matching).
36
+ and_return([deploy_hook_1])
37
+
38
+ # Stub out the ServiceHooks collection upon which we depend
39
+ allow(ServiceHooks).
40
+ to receive(:load).
41
+ with(paths).
42
+ and_return(service_hooks)
43
+
44
+ allow(service_hooks).
45
+ to receive(:all).
46
+ and_return([service_hook_1, service_hook_2])
47
+
48
+ allow(service_hooks).
49
+ to receive(:matching).
50
+ and_return([service_hook_2])
51
+
52
+ # Make all of our "hooks" of the executable flavor by default
53
+ [
54
+ deploy_hook_1, deploy_hook_2, service_hook_1, service_hook_2
55
+ ].each do |hook|
56
+ allow(hook).to receive(:flavor).and_return(:executable)
57
+ end
58
+
59
+ end
60
+
61
+ describe '.load' do
62
+ let(:deploy_hooks) {Object.new}
63
+ let(:service_hooks) {Object.new}
64
+ let(:result) {described_class.load(paths)}
65
+
66
+
67
+ it 'loads deploy hooks' do
68
+ expect(DeployHooks).to receive(:load).with(paths)
69
+
70
+ result
71
+ end
72
+
73
+ it 'loads service hooks' do
74
+ expect(ServiceHooks).to receive(:load).with(paths)
75
+
76
+ result
77
+ end
78
+
79
+ it 'is a callbacks collection' do
80
+ expect(result).to be_a(Collection::Base)
81
+ end
82
+ end
83
+
84
+ describe '#all' do
85
+ let(:result) {collection.all}
86
+
87
+ it 'is an Array' do
88
+ expect(result).to be_a(Array)
89
+ end
90
+
91
+ it 'contains the deploy hooks' do
92
+ [deploy_hook_1, deploy_hook_2].each do |hook|
93
+ expect(result).to include(hook)
94
+ end
95
+ end
96
+
97
+ it 'contains the service hooks' do
98
+ [service_hook_1, service_hook_2].each do |hook|
99
+ expect(result).to include(hook)
100
+ end
101
+ end
102
+
103
+ it 'gives more priority to service hooks' do
104
+ expect(result).to eql(
105
+ [service_hook_1, service_hook_2, deploy_hook_1, deploy_hook_2]
106
+ )
107
+ end
108
+ end
109
+
110
+ describe '#matching' do
111
+ let(:name) {:hook_2}
112
+ let(:result) {collection.matching(name)}
113
+
114
+ it 'is an Array' do
115
+ expect(result).to be_a(Array)
116
+ end
117
+
118
+ it 'contains hooks with the desired name' do
119
+ [service_hook_2, deploy_hook_1].each do |hook|
120
+ expect(result).to include(hook)
121
+ end
122
+ end
123
+
124
+ it 'omits hooks without the desired name' do
125
+ [service_hook_1, deploy_hook_2].each do |hook|
126
+ expect(result).not_to include(hook)
127
+ end
128
+ end
129
+ end
130
+
131
+ describe '#execute' do
132
+ let(:config) {Object.new}
133
+ let(:shell) {Object.new}
134
+ let(:callback) {Object.new}
135
+ let(:matches) {[]}
136
+
137
+ let(:result) {collection.execute(config, shell, callback)}
138
+
139
+ before(:each) do
140
+ allow(Executor).to receive(:execute)
141
+ allow(shell).to receive(:info)
142
+ allow(collection).
143
+ to receive(:matching).
144
+ with(callback).
145
+ and_return(matches)
146
+ end
147
+
148
+ context 'when there are matching hooks' do
149
+ let(:matches) {[Object.new]}
150
+
151
+ it 'executes those matching hooks' do
152
+ expect(Executor).to receive(:execute).with(config, shell, matches)
153
+
154
+ result
155
+ end
156
+ end
157
+
158
+ context 'when there are not matching hooks' do
159
+ let(:matches) {[]}
160
+
161
+ it 'logs a message about the lack of matching hooks' do
162
+ expect(shell).
163
+ to receive(:info).
164
+ with("No hooks detected for #{callback}. Skipping.")
165
+
166
+ result
167
+ end
168
+
169
+ it 'does not execute any hooks' do
170
+ expect(Executor).not_to receive(:execute)
171
+
172
+ result
173
+ end
174
+ end
175
+ end
176
+
177
+ describe '#distribute' do
178
+ let(:runner) {Object.new}
179
+ let(:name) {:hook_2}
180
+ let(:distributor) {Callbacks::Distributor}
181
+ let(:distribution_result) {Object.new}
182
+ let(:matched) {[service_hook_2, deploy_hook_1]}
183
+ let(:result) {collection.distribute(runner, name)}
184
+
185
+ before(:each) do
186
+ allow(distributor).to receive(:distribute)
187
+ end
188
+
189
+ it 'distributes matching hooks via an distributor' do
190
+ expect(distributor).
191
+ to receive(:distribute).
192
+ with(runner, matched).
193
+ and_return(distribution_result)
194
+
195
+ expect(result).to eql(distribution_result)
196
+ end
197
+
198
+ it 'skips non-matching hooks' do
199
+ expect(distributor).not_to receive(:distribute).with(runner, :hook_1)
200
+
201
+ result
202
+ end
203
+
204
+ context 'when there are multiple matching ruby hooks' do
205
+ before(:each) do
206
+ allow(service_hook_2).to receive(:flavor).and_return(:ruby)
207
+ allow(deploy_hook_1).to receive(:flavor).and_return(:ruby)
208
+ end
209
+
210
+ it 'distributes the first ruby hook' do
211
+ expect(distributor).
212
+ to receive(:distribute).
213
+ with(runner, [service_hook_2])
214
+
215
+ result
216
+ end
217
+
218
+ it 'does not distribute any other ruby hook' do
219
+ expect(distributor).
220
+ not_to receive(:distribute).
221
+ with(runner, [service_hook_2, deploy_hook_1])
222
+
223
+ result
224
+ end
225
+ end
226
+ end
227
+ end
228
+
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,170 @@
1
+ require 'spec_helper'
2
+
3
+ require 'pathname'
4
+
5
+ require 'engineyard-serverside/callbacks/collection'
6
+
7
+ module EY
8
+ module Serverside
9
+ module Callbacks
10
+ module Collection
11
+
12
+ describe DeployHooks do
13
+
14
+ let(:paths) {Object.new}
15
+ let(:app_base_path) {Pathname.new('/data/some_app')}
16
+ let(:deploy_hooks_path) {
17
+ app_base_path.join('releases', 'TIMESTAMP', 'deploy')
18
+ }
19
+
20
+ let(:hook_1_path) {deploy_hooks_path.join('hook_1.rb')}
21
+ let(:hook_2_path) {deploy_hooks_path.join('hook_2.rb')}
22
+ let(:hook_paths) {[hook_1_path.to_s, hook_2_path.to_s]}
23
+
24
+ let(:collection) {described_class.load(paths)}
25
+
26
+ before(:each) do
27
+ allow(paths).to receive(:deploy_hooks).and_return(deploy_hooks_path)
28
+ allow(Dir).to receive(:[]).and_return([])
29
+ end
30
+
31
+ describe '.load' do
32
+ let(:result) {described_class.load(paths)}
33
+
34
+ context 'with application hooks present' do
35
+ before(:each) do
36
+ allow(Dir).
37
+ to receive(:[]).
38
+ with("#{deploy_hooks_path}/*").
39
+ and_return(hook_paths)
40
+ end
41
+
42
+ it 'loads those application hooks' do
43
+ expect(Hooks::App).to receive(:new).with(hook_1_path.to_s)
44
+ expect(Hooks::App).to receive(:new).with(hook_2_path.to_s)
45
+
46
+ result
47
+ end
48
+ end
49
+
50
+ it 'is a callbacks collection' do
51
+ expect(result).to be_a(Collection::Base)
52
+ end
53
+ end
54
+
55
+ describe '#all' do
56
+ let(:result) {collection.all}
57
+
58
+ before(:each) do
59
+ allow(Dir).
60
+ to receive(:[]).
61
+ with("#{deploy_hooks_path}/*").
62
+ and_return(hook_paths)
63
+ end
64
+
65
+ it 'is an Array' do
66
+ expect(result).to be_a(Array)
67
+ end
68
+
69
+ it 'contains all of the hooks detected at load time' do
70
+ hook_paths.each do |path|
71
+ expect(
72
+ result.select {|h| h.path == Pathname(path)}.length
73
+ ).to eql(1)
74
+ end
75
+ end
76
+ end
77
+
78
+ describe '#matching' do
79
+ let(:name) {:hook_2}
80
+ let(:result) {collection.matching(name)}
81
+
82
+ before(:each) do
83
+ allow(Dir).
84
+ to receive(:[]).
85
+ with("#{deploy_hooks_path}/*").
86
+ and_return(hook_paths)
87
+ end
88
+
89
+ it 'is an Array' do
90
+ expect(result).to be_a(Array)
91
+ end
92
+
93
+ it 'contains hooks with the desired name' do
94
+ expect(
95
+ result.select {|h| h.path == Pathname(hook_2_path)}.length
96
+ ).to eql(1)
97
+ end
98
+
99
+ it 'omits hooks without the desired name' do
100
+ expect(
101
+ result.select {|h| h.path == Pathname(hook_1_path)}.length
102
+ ).to eql(0)
103
+ end
104
+
105
+ context "when a hook is represented by more than one format" do
106
+ let(:hook_1_path) {deploy_hooks_path.join('hook_2')}
107
+ let(:hook_2_path) {deploy_hooks_path.join('hook_2.rb')}
108
+
109
+ it 'contains the ruby hook' do
110
+ expect(
111
+ result.select {|h| h.path == Pathname(hook_2_path)}.length
112
+ ).to eql(1)
113
+ end
114
+
115
+ it 'omits the other hooks' do
116
+ expect(
117
+ result.select {|h| h.path == Pathname(hook_1_path)}.length
118
+ ).to eql(0)
119
+ end
120
+ end
121
+ end
122
+
123
+ describe '#distribute' do
124
+ let(:runner) {Object.new}
125
+ let(:name) {:hook_2}
126
+ let(:distributor) {Callbacks::Distributor}
127
+ let(:distribution_result) {Object.new}
128
+ let(:matched) {Object.new}
129
+ let(:result) {collection.distribute(runner, name)}
130
+
131
+ before(:each) do
132
+ allow(Dir).
133
+ to receive(:[]).
134
+ with("#{deploy_hooks_path}/*").
135
+ and_return(hook_paths)
136
+
137
+ allow(collection).
138
+ to receive(:matching).
139
+ with(name).
140
+ and_return(matched)
141
+
142
+ # Bypass Base#minimize_ruby
143
+ allow(collection).to receive(:minimize_ruby) {|matches|
144
+ matches
145
+ }
146
+
147
+ allow(distributor).to receive(:distribute)
148
+ end
149
+
150
+ it 'distributes matching hooks via an distributor' do
151
+ expect(distributor).
152
+ to receive(:distribute).
153
+ with(runner, matched).
154
+ and_return(distribution_result)
155
+
156
+ expect(result).to eql(distribution_result)
157
+ end
158
+
159
+ it 'skips non-matching hooks' do
160
+ expect(distributor).not_to receive(:distribute).with(runner, :hook_1)
161
+
162
+ result
163
+ end
164
+ end
165
+ end
166
+
167
+ end
168
+ end
169
+ end
170
+ end
@@ -0,0 +1,171 @@
1
+ require 'spec_helper'
2
+
3
+ require 'pathname'
4
+
5
+ require 'engineyard-serverside/callbacks/collection/service_hooks/collection'
6
+
7
+ module EY
8
+ module Serverside
9
+ module Callbacks
10
+ module Collection
11
+ module ServiceHooks
12
+
13
+ describe Collection do
14
+ let(:app_base_path) {Pathname.new('/data/some_app')}
15
+ let(:shared_hooks_path) {
16
+ app_base_path.join('shared', 'hooks')
17
+ }
18
+
19
+ let(:service_1_path) {shared_hooks_path.join('svc1')}
20
+
21
+ let(:hook_1_path) {service_1_path.join('hook_1.rb')}
22
+ let(:hook_2_path) {service_1_path.join('hook_2.rb')}
23
+ let(:hook_paths) {[hook_1_path.to_s, hook_2_path.to_s]}
24
+
25
+ let(:collection) {described_class.load(service_1_path)}
26
+
27
+ before(:each) do
28
+ allow(Dir).to receive(:[]).and_return([])
29
+ end
30
+
31
+ describe '.load' do
32
+ let(:result) {described_class.load(service_1_path)}
33
+
34
+ context 'with service hooks present' do
35
+ before(:each) do
36
+ allow(Dir).
37
+ to receive(:[]).
38
+ with("#{service_1_path}/*").
39
+ and_return(hook_paths)
40
+ end
41
+
42
+ it 'loads those service hooks' do
43
+ expect(Hooks::Service).to receive(:new).with(hook_1_path.to_s)
44
+ expect(Hooks::Service).to receive(:new).with(hook_2_path.to_s)
45
+
46
+ result
47
+ end
48
+ end
49
+
50
+ it 'is a callbacks collection' do
51
+ expect(result).to be_a(Callbacks::Collection::Base)
52
+ end
53
+ end
54
+
55
+ describe '#all' do
56
+ let(:result) {collection.all}
57
+
58
+ before(:each) do
59
+ allow(Dir).
60
+ to receive(:[]).
61
+ with("#{service_1_path}/*").
62
+ and_return(hook_paths)
63
+ end
64
+
65
+ it 'is an Array' do
66
+ expect(result).to be_a(Array)
67
+ end
68
+
69
+ it 'contains all of the hooks detected at load time' do
70
+ hook_paths.each do |path|
71
+ expect(
72
+ result.select {|h| h.path == Pathname(path)}.length
73
+ ).to eql(1)
74
+ end
75
+ end
76
+ end
77
+
78
+ describe '#matching' do
79
+ let(:name) {:hook_2}
80
+ let(:result) {collection.matching(name)}
81
+
82
+ before(:each) do
83
+ allow(Dir).
84
+ to receive(:[]).
85
+ with("#{service_1_path}/*").
86
+ and_return(hook_paths)
87
+ end
88
+
89
+ it 'is an Array' do
90
+ expect(result).to be_a(Array)
91
+ end
92
+
93
+ it 'contains hooks with the desired name' do
94
+ expect(
95
+ result.select {|h| h.path == Pathname(hook_2_path)}.length
96
+ ).to eql(1)
97
+ end
98
+
99
+ it 'omits hooks without the desired name' do
100
+ expect(
101
+ result.select {|h| h.path == Pathname(hook_1_path)}.length
102
+ ).to eql(0)
103
+ end
104
+
105
+ context "when a hook is represented by more than one format" do
106
+ let(:hook_1_path) {service_1_path.join('hook_2')}
107
+ let(:hook_2_path) {service_1_path.join('hook_2.rb')}
108
+
109
+ it 'contains the ruby hook' do
110
+ expect(
111
+ result.select {|h| h.path == Pathname(hook_2_path)}.length
112
+ ).to eql(1)
113
+ end
114
+
115
+ it 'omits the other hooks' do
116
+ expect(
117
+ result.select {|h| h.path == Pathname(hook_1_path)}.length
118
+ ).to eql(0)
119
+ end
120
+ end
121
+ end
122
+
123
+ describe '#distribute' do
124
+ let(:runner) {Object.new}
125
+ let(:name) {:hook_2}
126
+ let(:distributor) {Callbacks::Distributor}
127
+ let(:distribution_result) {Object.new}
128
+ let(:matched) {Object.new}
129
+ let(:result) {collection.distribute(runner, name)}
130
+
131
+ before(:each) do
132
+ allow(Dir).
133
+ to receive(:[]).
134
+ with("#{service_1_path}/*").
135
+ and_return(hook_paths)
136
+
137
+ allow(collection).
138
+ to receive(:matching).
139
+ with(name).
140
+ and_return(matched)
141
+
142
+ # Bypass Base#minimize_ruby
143
+ allow(collection).to receive(:minimize_ruby) {|matches|
144
+ matches
145
+ }
146
+
147
+ allow(distributor).to receive(:distribute)
148
+ end
149
+
150
+ it 'distributes matching hooks via an distributor' do
151
+ expect(distributor).
152
+ to receive(:distribute).
153
+ with(runner, matched).
154
+ and_return(distribution_result)
155
+
156
+ expect(result).to eql(distribution_result)
157
+ end
158
+
159
+ it 'skips non-matching hooks' do
160
+ expect(distributor).not_to receive(:distribute).with(runner, :hook_1)
161
+
162
+ result
163
+ end
164
+ end
165
+ end
166
+
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end