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,40 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/slug/source'
4
+
5
+ module EY
6
+ module Serverside
7
+ module Slug
8
+ describe Source do
9
+ let(:servers) {[]}
10
+ let(:config) {Object.new}
11
+ let(:shell) {Object.new}
12
+
13
+ describe '.update' do
14
+ let(:input) {
15
+ {:servers => servers, :config => config, :shell => shell}
16
+ }
17
+
18
+ let(:update) {described_class.update(input)}
19
+
20
+ it 'updates with a new updater' do
21
+ result = Result.Success(nil)
22
+ updater = Object.new
23
+
24
+ expect(updater).
25
+ to receive(:update).
26
+ and_return(result)
27
+
28
+ expect(described_class::Updater).
29
+ to receive(:new).
30
+ with(input).
31
+ and_return(updater)
32
+
33
+ expect(update).to eql(result)
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,171 @@
1
+ require 'spec_helper'
2
+
3
+ require 'engineyard-serverside/source'
4
+
5
+ module EY
6
+ module Serverside
7
+
8
+ describe Source do
9
+ let(:source) {described_class.new(opts)}
10
+
11
+ before(:each) do
12
+ described_class.instance_eval do
13
+ @required_opts = nil
14
+ end
15
+ end
16
+
17
+ after(:each) do
18
+ described_class.instance_eval do
19
+ @required_opts = nil
20
+ end
21
+ end
22
+
23
+ describe '.new' do
24
+ let(:shell) {Object.new}
25
+
26
+ let(:result) {described_class.new(shell)}
27
+
28
+ it 'sets the shell to that provided' do
29
+ expect(result.shell).to eql(shell)
30
+ end
31
+
32
+ context 'when no options are provided' do
33
+ it 'sets the options to an empty hash' do
34
+ expect(result.opts).to eql({})
35
+ end
36
+ end
37
+
38
+ context 'when there are required options' do
39
+ let(:opts) {{}}
40
+ let(:result) {described_class.new(shell, opts)}
41
+
42
+ before(:each) do
43
+ described_class.instance_eval do
44
+ @required_opts = [:foo, :bar]
45
+ end
46
+ end
47
+
48
+ context 'that are missing' do
49
+ it 'raises an argument error' do
50
+ expect {result}.to raise_error(ArgumentError)
51
+ end
52
+ end
53
+
54
+ context 'that are satisfied' do
55
+ let(:opts) {{:foo => 'foo', :bar => 'bar'}}
56
+
57
+ it 'does not raise an error' do
58
+ expect {result}.not_to raise_error
59
+ end
60
+ end
61
+ end
62
+
63
+ context 'when options are provided' do
64
+ let(:opts) {{}}
65
+ let(:result) {described_class.new(shell, opts)}
66
+
67
+ context 'and a ref is provided' do
68
+ let(:ref) {1234}
69
+ let(:opts) {{:ref => ref}}
70
+
71
+ it 'stringifies the provided ref and saves it' do
72
+ expect(result.ref).to eql(ref.to_s)
73
+ end
74
+ end
75
+
76
+ context 'and no ref is provided' do
77
+ it 'saves a blank string' do
78
+ expect(result.ref).to eql('')
79
+ end
80
+ end
81
+
82
+ context 'and a uri is provided' do
83
+ let(:uri) {'http://example.com'}
84
+ let(:opts) {{:uri => uri}}
85
+
86
+ it 'saves the provided uri' do
87
+ expect(result.uri).to eql(uri)
88
+ end
89
+ end
90
+
91
+ context 'and no uri is provided' do
92
+ it 'saves a nil uri' do
93
+ expect(result.uri).to be_nil
94
+ end
95
+ end
96
+
97
+ context 'and a repository cache is provided' do
98
+ let(:repository_cache) {'/path/to/repo/cache'}
99
+ let(:opts) {{:repository_cache => repository_cache}}
100
+
101
+ it 'saves the provided repository_cache as a source_cache path' do
102
+ expect(result.source_cache).to eql(Pathname.new(repository_cache))
103
+ end
104
+ end
105
+
106
+ context 'and no repository cache is provided' do
107
+ it 'saves a nil source_cache' do
108
+ expect(result.source_cache).to be_nil
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ describe '.required_opts' do
115
+ context 'without arguments' do
116
+ let(:result) {described_class.required_opts}
117
+
118
+ context 'when there are required options' do
119
+ before(:each) do
120
+ described_class.instance_eval do
121
+ @required_opts = [:foo, :bar]
122
+ end
123
+ end
124
+
125
+ it 'is the required option array' do
126
+ expect(result).to eql([:foo, :bar])
127
+ end
128
+ end
129
+
130
+ context 'when there are no required options' do
131
+ it 'is nil' do
132
+ expect(result).to be_nil
133
+ end
134
+ end
135
+ end
136
+ end
137
+
138
+ describe '.require_opts' do
139
+ let(:result) {described_class.require_opts(:foo, :bar)}
140
+
141
+ context 'when there are no required options' do
142
+ it 'sets the required opts to those provided' do
143
+ expect(described_class.required_opts).to be_nil
144
+
145
+ result
146
+
147
+ expect(described_class.required_opts).to eql([:foo, :bar])
148
+ end
149
+ end
150
+
151
+ context 'when there are already required options' do
152
+ before(:each) do
153
+ described_class.instance_eval do
154
+ @required_opts = [:bob]
155
+ end
156
+ end
157
+
158
+ it 'adds the provided names to the required opts' do
159
+ expect(described_class.required_opts).to eql([:bob])
160
+
161
+ result
162
+
163
+ expect(described_class.required_opts).to eql([:bob, :foo, :bar])
164
+ end
165
+ end
166
+ end
167
+
168
+ end
169
+
170
+ end
171
+ end
@@ -0,0 +1,130 @@
1
+ require 'spec_helper'
2
+
3
+ require 'railway'
4
+
5
+ class ComplicatedProcess
6
+ include Railway
7
+
8
+ step :step_1
9
+ step :step_2
10
+ step :step_3
11
+ end
12
+
13
+ class EmptyProcess
14
+ include Railway
15
+ end
16
+
17
+ describe Railway do
18
+ let(:steps) {[:step_1, :step_2, :step_3]}
19
+ let(:dummy) {ComplicatedProcess.new}
20
+
21
+ before(:each) do
22
+ steps.each do |step|
23
+ allow(dummy).to receive(step).and_return(Result.Success(nil))
24
+ end
25
+ end
26
+
27
+ describe '#call' do
28
+ let(:input) {nil}
29
+ let(:result) {dummy.call(input)}
30
+
31
+ it 'has a default argument' do
32
+ expect {dummy.call}.not_to raise_error
33
+ end
34
+
35
+ it 'passes the output of one step to the next step as input' do
36
+ allow(dummy).to receive(:step_1).and_return('step 1')
37
+ expect(dummy).to receive(:step_2).with('step 1').and_return('step 2')
38
+ expect(dummy).to receive(:step_3).with('step 2').and_return('step 3')
39
+
40
+ result
41
+ end
42
+
43
+ context 'when all steps are successful' do
44
+ it 'executes all steps' do
45
+ steps.each do |step|
46
+ expect(dummy).to receive(step).and_return(Result.Success(nil))
47
+ end
48
+
49
+ result
50
+ end
51
+
52
+ it 'returns a success' do
53
+ expect(result).to be_a(Result::Success)
54
+ end
55
+ end
56
+
57
+ context 'when a step fails' do
58
+ let(:failing_step) {:step_1}
59
+ let(:failure) {Result.Failure(nil)}
60
+
61
+ before(:each) do
62
+ allow(dummy).to receive(:step_1).and_return(failure)
63
+ end
64
+
65
+ it 'executes all steps up to that step' do
66
+ expect(dummy).to receive(:step_1).and_return(failure)
67
+
68
+ result
69
+ end
70
+
71
+ it 'does not execute steps after the failing step' do
72
+ (steps - [failing_step]).each do |step|
73
+ expect(dummy).not_to receive(step)
74
+ end
75
+
76
+ result
77
+ end
78
+
79
+ it 'returns the failure' do
80
+ expect(result).to eql(failure)
81
+ end
82
+ end
83
+
84
+ context 'when a step returns something other than a result' do
85
+ before(:each) do
86
+ steps.each do |step|
87
+ allow(dummy).to receive(step).and_return(step.to_s)
88
+ end
89
+ end
90
+
91
+ it 'treats the return value as a Success' do
92
+ expect(dummy).to receive(:step_2).with('step_1').and_return('step_2')
93
+ expect(dummy).to receive(:step_3).with('step_2').and_return('step_3')
94
+
95
+ expect(result).to be_a(Result::Success)
96
+ expect(result.value).to eql('step_3')
97
+ end
98
+ end
99
+
100
+ context 'when a step raises an error' do
101
+ let(:failing_step) {:step_1}
102
+ let(:error) {RuntimeError.new('a big nasty error')}
103
+
104
+ before(:each) do
105
+ allow(dummy).to receive(:step_1).and_raise(error)
106
+ end
107
+
108
+ it 'treats the step as a failure' do
109
+ (steps - [failing_step]).each do |step|
110
+ expect(dummy).not_to receive(step)
111
+ end
112
+
113
+ expect(result).to be_a(Result::Failure)
114
+ expect(result.error).to eql(error)
115
+ end
116
+ end
117
+
118
+ context 'when there are no steps' do
119
+ let(:dummy) {EmptyProcess.new}
120
+
121
+ it 'is a failure' do
122
+ expect(result).to be_a(Result::Failure)
123
+ end
124
+
125
+ it 'has an error regarding the lack of steps' do
126
+ expect(result.error).to eql('No steps')
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ require 'result/failure'
4
+
5
+ module Result
6
+ describe Failure do
7
+ let(:dummy) {Object.new}
8
+ let(:wrapped) {3}
9
+ let(:result) {described_class.new(wrapped)}
10
+
11
+ before(:each) do
12
+ allow(dummy).to receive(:process)
13
+ end
14
+
15
+ it 'is a result' do
16
+ expect(result).to be_a(Result::Base)
17
+ end
18
+
19
+ it 'is frozen' do
20
+ expect(result).to be_frozen
21
+ end
22
+
23
+ describe '#success?' do
24
+ let(:success) {result.success?}
25
+
26
+ it 'is false' do
27
+ expect(success).to eql(false)
28
+ end
29
+ end
30
+
31
+ describe '#failure?' do
32
+ let(:failure) {result.failure?}
33
+
34
+ it 'is true' do
35
+ expect(failure).to eql(true)
36
+ end
37
+ end
38
+
39
+ describe '#value' do
40
+ let(:value) {result.value}
41
+
42
+ it 'raises an exception' do
43
+ expect {value}.to raise_exception
44
+ end
45
+ end
46
+
47
+ describe '#error' do
48
+ let(:error) {result.error}
49
+
50
+ it 'is the wrapped error' do
51
+ expect(error).to eql(wrapped)
52
+ end
53
+ end
54
+
55
+ describe '#and_then' do
56
+ it 'does not execute the given block' do
57
+ expect(dummy).not_to receive(:process)
58
+
59
+ result.and_then {|v| dummy.process(v)}
60
+ end
61
+
62
+ it 'is the failure itself' do
63
+ actual = result.and_then {|v| v}
64
+
65
+ expect(actual).to eql(result)
66
+ end
67
+ end
68
+
69
+ describe '#or_else' do
70
+
71
+ it 'yields the wrapped value to the block' do
72
+ expect(dummy).to receive(:process).with(wrapped)
73
+
74
+ result.or_else {|v| dummy.process(v)}
75
+ end
76
+
77
+ it 'is the result of the block' do
78
+ actual = result.or_else {|v| v + 1}
79
+
80
+ expect(actual).to eql(wrapped + 1)
81
+ end
82
+ end
83
+
84
+ describe '#on_success' do
85
+ it 'does not call the block' do
86
+ expect(dummy).not_to receive(:process)
87
+
88
+ result.on_success {|v| dummy.process(v)}
89
+ end
90
+
91
+ it 'is the failure itself' do
92
+ actual = result.on_success {|v| v}
93
+
94
+ expect(actual).to eql(result)
95
+ end
96
+ end
97
+
98
+ describe '#on_failure' do
99
+ it 'yields the wrapped value to the block' do
100
+ expect(dummy).to receive(:process).with(wrapped)
101
+
102
+ result.on_failure {|v| dummy.process(v)}
103
+ end
104
+
105
+ it 'is the failure itself' do
106
+ actual = result.on_failure {|v| v}
107
+
108
+ expect(actual).to eql(result)
109
+ end
110
+ end
111
+
112
+ end
113
+ end
@@ -0,0 +1,109 @@
1
+ require 'spec_helper'
2
+
3
+ require 'result/success'
4
+
5
+ module Result
6
+ describe Success do
7
+ let(:dummy) {Object.new}
8
+ let(:wrapped) {3}
9
+ let(:result) {described_class.new(wrapped)}
10
+
11
+ before(:each) do
12
+ allow(dummy).to receive(:process)
13
+ end
14
+
15
+ it 'is a result' do
16
+ expect(result).to be_a(Result::Base)
17
+ end
18
+
19
+ describe '#success?' do
20
+ let(:success) {result.success?}
21
+
22
+ it 'is true' do
23
+ expect(success).to eql(true)
24
+ end
25
+ end
26
+
27
+ describe '#failure?' do
28
+ let(:failure) {result.failure?}
29
+
30
+ it 'is false' do
31
+ expect(failure).to eql(false)
32
+ end
33
+ end
34
+
35
+ describe '#value' do
36
+ let(:value) {result.value}
37
+
38
+ it 'is the wrapped value' do
39
+ expect(value).to eql(wrapped)
40
+ end
41
+ end
42
+
43
+ describe '#error' do
44
+ let(:error) {result.error}
45
+
46
+ it 'raises an exception' do
47
+ expect {error}.to raise_exception
48
+ end
49
+ end
50
+
51
+ describe '#and_then' do
52
+ it 'yields the wrapped value to the block' do
53
+ expect(dummy).to receive(:process).with(wrapped)
54
+
55
+ result.and_then {|v| dummy.process(v)}
56
+ end
57
+
58
+ it 'is the result of yielding the wrapped value to the block' do
59
+ actual = result.and_then {|v| v + 1}
60
+
61
+ expect(actual).to eql(wrapped + 1)
62
+ end
63
+ end
64
+
65
+ describe '#or_else' do
66
+ it 'does not call the block' do
67
+ expect(dummy).not_to receive(:process)
68
+
69
+ result.or_else {|v| dummy.process(v)}
70
+ end
71
+
72
+ it 'is the success itself' do
73
+ actual = result.or_else {|v| v}
74
+
75
+ expect(actual).to eql(result)
76
+ end
77
+ end
78
+
79
+ describe '#on_success' do
80
+ it 'yields the wrapped value to the block' do
81
+ expect(dummy).to receive(:process).with(wrapped)
82
+
83
+ result.on_success {|v| dummy.process(v)}
84
+ end
85
+
86
+ it 'is the success itself' do
87
+ actual = result.on_success {|v| v}
88
+
89
+ expect(actual).to eql(result)
90
+ end
91
+ end
92
+
93
+ describe '#on_failure' do
94
+ it 'does not call the block' do
95
+ expect(dummy).not_to receive(:process)
96
+
97
+ result.on_failure {|v| dummy.process(v)}
98
+ end
99
+
100
+ it 'is the success itself' do
101
+ actual = result.on_failure {|v| v}
102
+
103
+ expect(actual).to eql(result)
104
+ end
105
+ end
106
+
107
+
108
+ end
109
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ require 'result'
4
+
5
+ describe Result do
6
+ let(:value) {3}
7
+
8
+ describe '.Success' do
9
+ let(:result) {described_class.Success(value)}
10
+
11
+ it 'is a success' do
12
+ expect(result).to be_a(described_class::Success)
13
+ end
14
+ end
15
+
16
+ describe '.Failure' do
17
+ let(:result) {described_class.Failure(value)}
18
+
19
+ it 'is a failure' do
20
+ expect(result).to be_a(described_class::Failure)
21
+ end
22
+ end
23
+ end