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
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows/calling_deploy_hooks'
4
+
5
+ module EY
6
+ module Serverside
7
+ module CLI
8
+ module Workflows
9
+ describe CallingDeployHooks do
10
+ let(:config) {Object.new}
11
+ let(:shell) {Object.new}
12
+ let(:paths) {Object.new}
13
+ let(:callbacks) {Object.new}
14
+ let(:hook_name) {'joe'}
15
+ let(:options) {{:hook_name => hook_name}}
16
+ let(:workflow) {described_class.new(options)}
17
+
18
+ before(:each) do
19
+ allow(shell).to receive(:fatal)
20
+ allow(shell).to receive(:debug)
21
+
22
+ allow(config).to receive(:verbose)
23
+ allow(config).to receive(:app)
24
+ allow(config).to receive(:paths).and_return(paths)
25
+
26
+ allow(workflow).to receive(:shell).and_return(shell)
27
+ allow(workflow).to receive(:config).and_return(config)
28
+
29
+ allow(Callbacks).to receive(:load).and_return(callbacks)
30
+ allow(callbacks).to receive(:execute)
31
+ allow(callbacks).to receive(:empty?).and_return(false)
32
+ end
33
+
34
+ it 'is a CLI Workflow' do
35
+ expect(workflow).to be_a(EY::Serverside::CLI::Workflows::Base)
36
+ end
37
+
38
+ it 'has a task name' do
39
+ expect(workflow.instance_eval {task_name}).
40
+ to eql("hook-#{hook_name}")
41
+ end
42
+
43
+ describe '#perform' do
44
+ let(:deploy_hook) {Object.new}
45
+
46
+ let(:perform) {workflow.perform}
47
+
48
+ it 'does not propagates serverside' do
49
+ expect(workflow).not_to receive(:propagate_serverside)
50
+
51
+ perform
52
+ end
53
+
54
+ it 'calls the requested deploy hook via the Callbacks system' do
55
+ expect(Callbacks).to receive(:load).with(paths).and_return(callbacks)
56
+ expect(callbacks).to receive(:execute).with(config, shell, hook_name)
57
+
58
+ perform
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows/deploying_applications'
4
+
5
+ module EY
6
+ module Serverside
7
+ module CLI
8
+ module Workflows
9
+ describe DeployingApplications do
10
+ let(:config) {Object.new}
11
+ let(:shell) {Object.new}
12
+ let(:options) {{}}
13
+ let(:deployer) {Object.new}
14
+ let(:workflow) {described_class.new(options)}
15
+
16
+ before(:each) do
17
+ allow(shell).to receive(:fatal)
18
+ allow(shell).to receive(:debug)
19
+
20
+ allow(config).to receive(:verbose)
21
+ allow(config).to receive(:app)
22
+
23
+ allow(workflow).to receive(:shell).and_return(shell)
24
+ allow(workflow).to receive(:config).and_return(config)
25
+ end
26
+
27
+ it 'is a CLI Workflow' do
28
+ expect(workflow).to be_a(EY::Serverside::CLI::Workflows::Base)
29
+ end
30
+
31
+ it 'has a task name' do
32
+ expect(workflow.instance_eval {task_name}).
33
+ to eql('deploy')
34
+ end
35
+
36
+ describe '#perform' do
37
+ let(:perform) {workflow.perform}
38
+
39
+ before(:each) do
40
+ allow(workflow).to receive(:propagate_serverside)
41
+ allow(workflow).to receive(:deployer).and_return(deployer)
42
+ allow(deployer).to receive(:deploy)
43
+ end
44
+
45
+ it 'propagates serverside' do
46
+ expect(workflow).to receive(:propagate_serverside)
47
+
48
+ perform
49
+ end
50
+
51
+ it 'disables maintenance mode for the app' do
52
+ expect(workflow).to receive(:deployer).and_return(deployer)
53
+ expect(deployer).to receive(:deploy)
54
+ perform
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows/disabling_maintenance'
4
+
5
+ module EY
6
+ module Serverside
7
+ module CLI
8
+ module Workflows
9
+ describe DisablingMaintenance do
10
+ let(:config) {Object.new}
11
+ let(:shell) {Object.new}
12
+ let(:options) {{}}
13
+ let(:maintenance) {Object.new}
14
+ let(:workflow) {described_class.new(options)}
15
+
16
+ before(:each) do
17
+ allow(shell).to receive(:fatal)
18
+ allow(shell).to receive(:debug)
19
+
20
+ allow(config).to receive(:verbose)
21
+ allow(config).to receive(:app)
22
+
23
+ allow(workflow).to receive(:shell).and_return(shell)
24
+ allow(workflow).to receive(:config).and_return(config)
25
+ end
26
+
27
+ it 'is a CLI Workflow' do
28
+ expect(workflow).to be_a(EY::Serverside::CLI::Workflows::Base)
29
+ end
30
+
31
+ it 'has a task name' do
32
+ expect(workflow.instance_eval {task_name}).
33
+ to eql('disable_maintenance')
34
+ end
35
+
36
+ describe '#perform' do
37
+ let(:perform) {workflow.perform}
38
+
39
+ before(:each) do
40
+ allow(workflow).to receive(:propagate_serverside)
41
+ allow(workflow).to receive(:maintenance).and_return(maintenance)
42
+ allow(maintenance).to receive(:manually_disable)
43
+ end
44
+
45
+ it 'propagates serverside' do
46
+ expect(workflow).to receive(:propagate_serverside)
47
+
48
+ perform
49
+ end
50
+
51
+ it 'disables maintenance mode for the app' do
52
+ expect(workflow).to receive(:maintenance).and_return(maintenance)
53
+ expect(maintenance).to receive(:manually_disable)
54
+ perform
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows/enabling_maintenance'
4
+
5
+ module EY
6
+ module Serverside
7
+ module CLI
8
+ module Workflows
9
+ describe EnablingMaintenance do
10
+ let(:config) {Object.new}
11
+ let(:shell) {Object.new}
12
+ let(:options) {{}}
13
+ let(:maintenance) {Object.new}
14
+ let(:workflow) {described_class.new(options)}
15
+
16
+ before(:each) do
17
+ allow(shell).to receive(:fatal)
18
+ allow(shell).to receive(:debug)
19
+
20
+ allow(config).to receive(:verbose)
21
+ allow(config).to receive(:app)
22
+
23
+ allow(workflow).to receive(:shell).and_return(shell)
24
+ allow(workflow).to receive(:config).and_return(config)
25
+ end
26
+
27
+ it 'is a CLI Workflow' do
28
+ expect(workflow).to be_a(EY::Serverside::CLI::Workflows::Base)
29
+ end
30
+
31
+ it 'has a task name' do
32
+ expect(workflow.instance_eval {task_name}).
33
+ to eql('enable_maintenance')
34
+ end
35
+
36
+ describe '#perform' do
37
+ let(:perform) {workflow.perform}
38
+
39
+ before(:each) do
40
+ allow(workflow).to receive(:propagate_serverside)
41
+ allow(workflow).to receive(:maintenance).and_return(maintenance)
42
+ allow(maintenance).to receive(:manually_enable)
43
+ end
44
+
45
+ it 'propagates serverside' do
46
+ expect(workflow).to receive(:propagate_serverside)
47
+
48
+ perform
49
+ end
50
+
51
+ it 'enables maintenance mode for the app' do
52
+ expect(workflow).to receive(:maintenance).and_return(maintenance)
53
+ expect(maintenance).to receive(:manually_enable)
54
+ perform
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows/helpers'
4
+
5
+ class Helpful
6
+ include EY::Serverside::CLI::Workflows::Helpers
7
+ end
8
+
9
+ module EY
10
+ module Serverside
11
+ module CLI
12
+ module Workflows
13
+ describe Helpers do
14
+ let(:config) {Object.new}
15
+ let(:shell) {Object.new}
16
+ let(:servers) {Object.new}
17
+ let(:workflow) {Helpful.new}
18
+
19
+ before(:each) do
20
+ allow(shell).to receive(:fatal)
21
+ allow(shell).to receive(:debug)
22
+
23
+ allow(config).to receive(:verbose)
24
+ allow(config).to receive(:app)
25
+
26
+ allow(workflow).to receive(:shell).and_return(shell)
27
+ allow(workflow).to receive(:config).and_return(config)
28
+ allow(workflow).to receive(:servers).and_return(servers)
29
+ end
30
+
31
+ describe '#deployer' do
32
+ let(:result) {Object.new}
33
+ let(:deployer) {workflow.deployer}
34
+
35
+ it 'is a Deploy for our workflow' do
36
+ expect(EY::Serverside::Deploy).
37
+ to receive(:new).
38
+ with(servers, config, shell).
39
+ and_return(result)
40
+
41
+ expect(deployer).to eql(result)
42
+ end
43
+ end
44
+
45
+ describe '#maintenance' do
46
+ let(:result) {Object.new}
47
+ let(:maintenance) {workflow.maintenance}
48
+
49
+ it 'is a Maintenance for our workflow' do
50
+ expect(EY::Serverside::Maintenance).
51
+ to receive(:new).
52
+ with(servers, config, shell).
53
+ and_return(result)
54
+
55
+ expect(maintenance).to eql(result)
56
+ end
57
+ end
58
+
59
+
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows/rolling_back_applications'
4
+
5
+ module EY
6
+ module Serverside
7
+ module CLI
8
+ module Workflows
9
+ describe RollingBackApplications do
10
+ let(:config) {Object.new}
11
+ let(:shell) {Object.new}
12
+ let(:options) {{}}
13
+ let(:deployer) {Object.new}
14
+ let(:workflow) {described_class.new(options)}
15
+
16
+ before(:each) do
17
+ allow(shell).to receive(:fatal)
18
+ allow(shell).to receive(:debug)
19
+
20
+ allow(config).to receive(:verbose)
21
+ allow(config).to receive(:app)
22
+
23
+ allow(workflow).to receive(:shell).and_return(shell)
24
+ allow(workflow).to receive(:config).and_return(config)
25
+ end
26
+
27
+ it 'is a CLI Workflow' do
28
+ expect(workflow).to be_a(EY::Serverside::CLI::Workflows::Base)
29
+ end
30
+
31
+ it 'has a task name' do
32
+ expect(workflow.instance_eval {task_name}).
33
+ to eql('rollback')
34
+ end
35
+
36
+ describe '#perform' do
37
+ let(:perform) {workflow.perform}
38
+
39
+ before(:each) do
40
+ allow(workflow).to receive(:propagate_serverside)
41
+ allow(workflow).to receive(:deployer).and_return(deployer)
42
+ allow(deployer).to receive(:rollback)
43
+ end
44
+
45
+ it 'propagates serverside' do
46
+ expect(workflow).to receive(:propagate_serverside)
47
+
48
+ perform
49
+ end
50
+
51
+ it 'disables maintenance mode for the app' do
52
+ expect(workflow).to receive(:deployer).and_return(deployer)
53
+ expect(deployer).to receive(:rollback)
54
+ perform
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows/showing_maintenance_status'
4
+
5
+ module EY
6
+ module Serverside
7
+ module CLI
8
+ module Workflows
9
+ describe ShowingMaintenanceStatus do
10
+ let(:config) {Object.new}
11
+ let(:shell) {Object.new}
12
+ let(:options) {{}}
13
+ let(:maintenance) {Object.new}
14
+ let(:workflow) {described_class.new(options)}
15
+
16
+ before(:each) do
17
+ allow(shell).to receive(:fatal)
18
+ allow(shell).to receive(:debug)
19
+
20
+ allow(config).to receive(:verbose)
21
+ allow(config).to receive(:app)
22
+
23
+ allow(workflow).to receive(:shell).and_return(shell)
24
+ allow(workflow).to receive(:config).and_return(config)
25
+ end
26
+
27
+ it 'is a CLI Workflow' do
28
+ expect(workflow).to be_a(EY::Serverside::CLI::Workflows::Base)
29
+ end
30
+
31
+ it 'has a task name' do
32
+ expect(workflow.instance_eval {task_name}).
33
+ to eql('maintenance-status')
34
+ end
35
+
36
+ describe '#perform' do
37
+ let(:perform) {workflow.perform}
38
+
39
+ before(:each) do
40
+ allow(workflow).to receive(:maintenance).and_return(maintenance)
41
+ allow(maintenance).to receive(:status)
42
+ end
43
+
44
+ it 'does not propagate serverside' do
45
+ expect(workflow).not_to receive(:propagate_serverside)
46
+
47
+ perform
48
+ end
49
+
50
+ it 'calls status on the maintenance object for the workflow' do
51
+ expect(workflow).to receive(:maintenance).and_return(maintenance)
52
+ expect(maintenance).to receive(:status)
53
+ perform
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/cli/workflows'
4
+
5
+ module EY
6
+ module Serverside
7
+ module CLI
8
+ describe Workflows do
9
+ describe '.normalized' do
10
+ let(:expected) {:shabutie}
11
+ let(:workflow_name) {expected}
12
+
13
+ let(:normalized) {described_class.normalized(workflow_name)}
14
+
15
+ context 'when given a nil workflow name' do
16
+ let(:workflow_name) {nil}
17
+
18
+ it 'is nil' do
19
+ expect(normalized).to be_nil
20
+ end
21
+ end
22
+
23
+ context 'when given a workflow name string' do
24
+ let(:workflow_name) {'shabutie'}
25
+
26
+ it 'is the symbolized version of the string' do
27
+ expect(normalized).to eql(:shabutie)
28
+ end
29
+ end
30
+
31
+ context 'when given a workflow name symbol' do
32
+ it 'is returned unchanged' do
33
+ expect(normalized).to eql(expected)
34
+ end
35
+ end
36
+ end
37
+
38
+ describe '.resolve' do
39
+ let(:workflow_name) {nil}
40
+ let(:resolve) {described_class.resolve(workflow_name)}
41
+
42
+ context 'when given a nil workflow name' do
43
+ it 'is the base workflow' do
44
+ expect(resolve).to eql(described_class::Base)
45
+ end
46
+ end
47
+
48
+ context 'when given an unknown workflow name' do
49
+ let(:workflow_name) {:john_q_public}
50
+
51
+ it 'is the base workflow' do
52
+ expect(resolve).to eql(described_class::Base)
53
+ end
54
+ end
55
+
56
+ context 'when given a known workflow name' do
57
+ it 'is the requested workflow' do
58
+ described_class::DEFINED.each_pair do |workflow_name, workflow|
59
+ expect(described_class.resolve(workflow_name)).to eql(workflow)
60
+ end
61
+ end
62
+ end
63
+ end
64
+
65
+ describe '.perform' do
66
+ let(:resolved) {Object.new}
67
+ let(:workflow_name) {:gandalf}
68
+ let(:options) {{}}
69
+
70
+ let(:perform) {described_class.perform(workflow_name, options)}
71
+
72
+ it 'performs the requested workflow' do
73
+ expect(described_class).
74
+ to receive(:resolve).
75
+ with(workflow_name).
76
+ and_return(resolved)
77
+
78
+ expect(resolved).to receive(:perform).with(options)
79
+
80
+ perform
81
+ end
82
+ end
83
+
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,139 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/dependency_manager/base'
4
+
5
+ module EY
6
+ module Serverside
7
+ class DependencyManager
8
+
9
+ describe Base do
10
+ let(:servers) {Object.new}
11
+ let(:config) {Object.new}
12
+ let(:shell) {Object.new}
13
+ let(:runner) {Object.new}
14
+
15
+ let(:manager) {described_class.new(servers, config, shell, runner)}
16
+
17
+ describe '.detect' do
18
+ let(:manager) {Object.new}
19
+ let(:detected) {false}
20
+ let(:result) {described_class.detect(servers, config, shell, runner)}
21
+
22
+ before(:each) do
23
+ allow(described_class).to receive(:new).and_return(manager)
24
+ allow(manager).to receive(:detected?).and_return(detected)
25
+ end
26
+
27
+ context 'when the manager can detect its dependency signature' do
28
+ let(:detected) {true}
29
+
30
+ it 'is a new instance of the class' do
31
+ expect(result).to eql(manager)
32
+ end
33
+ end
34
+
35
+ context 'when the manager cannot detect its dependency signature' do
36
+ let(:detected) {false}
37
+
38
+ it 'is nil' do
39
+ expect(result).to eql(nil)
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ describe '#detected?' do
46
+ let(:result) {manager.detected?}
47
+
48
+ it 'is false' do
49
+ expect(result).to eql(false)
50
+ end
51
+ end
52
+
53
+ describe '#check' do
54
+ let(:result) {manager.check}
55
+
56
+ it 'is nil' do
57
+ expect(result).to eql(nil)
58
+ end
59
+ end
60
+
61
+ describe '#install' do
62
+ let(:result) {manager.install}
63
+
64
+ it 'is nil' do
65
+ expect(result).to eql(nil)
66
+ end
67
+ end
68
+
69
+ describe '#uses_sqlite3?' do
70
+ let(:result) {manager.uses_sqlite3?}
71
+
72
+ it 'is nil' do
73
+ expect(result).to eql(nil)
74
+ end
75
+ end
76
+
77
+ describe '#rails_version' do
78
+ let(:result) {manager.rails_version}
79
+
80
+ it 'is nil' do
81
+ expect(result).to eql(nil)
82
+ end
83
+ end
84
+
85
+ describe '#show_ey_config_instructions' do
86
+ let(:result) {manager.show_ey_config_instructions}
87
+
88
+ it 'is nil' do
89
+ expect(result).to eql(nil)
90
+ end
91
+ end
92
+
93
+ describe '#paths' do
94
+ let(:paths) {Object.new}
95
+ let(:result) {manager.instance_eval {paths}}
96
+
97
+ before(:each) do
98
+ allow(config).to receive(:paths).and_return(paths)
99
+ end
100
+
101
+ it 'is the config paths' do
102
+ expect(result).to eql(paths)
103
+ end
104
+ end
105
+
106
+ describe '#on_roles' do
107
+ let(:result) {manager.instance_eval {on_roles}}
108
+
109
+ it 'is an array' do
110
+ expect(result).to be_a(Array)
111
+ end
112
+
113
+ it 'applies to app masters' do
114
+ expect(result).to include(:app_master)
115
+ end
116
+
117
+ it 'applies to app instances' do
118
+ expect(result).to include(:app)
119
+ end
120
+
121
+ it 'applies to solo instances' do
122
+ expect(result).to include(:solo)
123
+ end
124
+
125
+ it 'applies to util instances' do
126
+ expect(result).to include(:util)
127
+ end
128
+
129
+ it 'does not apply to database instances' do
130
+ expect(result).not_to include(:db_master)
131
+ expect(result).not_to include(:db_slave)
132
+ end
133
+ end
134
+
135
+ end
136
+
137
+ end
138
+ end
139
+ end