engineyard-serverside 2.8.0.pre4 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. checksums.yaml +13 -5
  2. data/features/hook/running-a-deploy-hook.feature +277 -0
  3. data/features/hook/step_definitions/running-a-deploy-hook-steps.rb +200 -0
  4. data/features/step_definitions/command_steps.rb +8 -0
  5. data/features/step_definitions/version_steps.rb +5 -0
  6. data/features/support/env.rb +63 -0
  7. data/features/support/error_codes.rb +17 -0
  8. data/features/support/fs_helpers.rb +82 -0
  9. data/features/support/output_helpers.rb +7 -0
  10. data/features/support/runner.rb +41 -0
  11. data/features/version.feature +7 -0
  12. data/lib/engineyard-serverside/cli/app.rb +6 -0
  13. data/lib/engineyard-serverside/configuration.rb +3 -3
  14. data/lib/engineyard-serverside/deploy.rb +2 -1
  15. data/lib/engineyard-serverside/propagator.rb +1 -1
  16. data/lib/engineyard-serverside/shell.rb +38 -10
  17. data/lib/engineyard-serverside/version.rb +1 -1
  18. data/lib/engineyard-serverside.rb +2 -5
  19. data/spec/engineyard-serverside/callbacks/collection/combined_spec.rb +232 -0
  20. data/spec/engineyard-serverside/callbacks/collection/deploy_hooks_spec.rb +170 -0
  21. data/spec/engineyard-serverside/callbacks/collection/service_hooks/collection_spec.rb +171 -0
  22. data/spec/engineyard-serverside/callbacks/collection/service_hooks/combined_spec.rb +174 -0
  23. data/spec/engineyard-serverside/callbacks/collection/service_hooks_spec.rb +31 -0
  24. data/spec/engineyard-serverside/callbacks/collection_spec.rb +49 -0
  25. data/spec/engineyard-serverside/callbacks/distributor/remote_spec.rb +135 -0
  26. data/spec/engineyard-serverside/callbacks/distributor/viability_filter_spec.rb +208 -0
  27. data/spec/engineyard-serverside/callbacks/distributor_spec.rb +43 -0
  28. data/spec/engineyard-serverside/callbacks/executor/executable_spec.rb +386 -0
  29. data/spec/engineyard-serverside/callbacks/executor/ruby/context_spec.rb +538 -0
  30. data/spec/engineyard-serverside/callbacks/executor/ruby/executor_spec.rb +313 -0
  31. data/spec/engineyard-serverside/callbacks/executor/ruby_spec.rb +35 -0
  32. data/spec/engineyard-serverside/callbacks/executor_spec.rb +45 -0
  33. data/spec/engineyard-serverside/callbacks_spec.rb +31 -0
  34. data/spec/engineyard-serverside/cli/workflows/base_spec.rb +237 -0
  35. data/spec/engineyard-serverside/cli/workflows/calling_deploy_hooks_spec.rb +65 -0
  36. data/spec/engineyard-serverside/cli/workflows/deploying_applications_spec.rb +61 -0
  37. data/spec/engineyard-serverside/cli/workflows/disabling_maintenance_spec.rb +61 -0
  38. data/spec/engineyard-serverside/cli/workflows/enabling_maintenance_spec.rb +61 -0
  39. data/spec/engineyard-serverside/cli/workflows/helpers_spec.rb +64 -0
  40. data/spec/engineyard-serverside/cli/workflows/rolling_back_applications_spec.rb +61 -0
  41. data/spec/engineyard-serverside/cli/workflows/showing_maintenance_status_spec.rb +60 -0
  42. data/spec/engineyard-serverside/cli/workflows_spec.rb +87 -0
  43. data/spec/engineyard-serverside/dependency_manager/base_spec.rb +139 -0
  44. data/spec/engineyard-serverside/paths_spec.rb +820 -0
  45. data/spec/engineyard-serverside/propagator_spec.rb +56 -0
  46. data/spec/engineyard-serverside/server_spec.rb +390 -0
  47. data/spec/engineyard-serverside/shell/helpers_spec.rb +98 -0
  48. data/spec/engineyard-serverside/shell/yieldio_spec.rb +33 -0
  49. data/spec/engineyard-serverside/shell_spec.rb +543 -0
  50. data/spec/engineyard-serverside/slug/distributor_spec.rb +199 -0
  51. data/spec/engineyard-serverside/slug/enabler_spec.rb +191 -0
  52. data/spec/engineyard-serverside/slug/failure_handler_spec.rb +114 -0
  53. data/spec/engineyard-serverside/slug/finalizer_spec.rb +191 -0
  54. data/spec/engineyard-serverside/slug/generator_spec.rb +82 -0
  55. data/spec/engineyard-serverside/slug/migrator_spec.rb +137 -0
  56. data/spec/engineyard-serverside/slug/restarter_spec.rb +226 -0
  57. data/spec/engineyard-serverside/slug/source/updater_spec.rb +710 -0
  58. data/spec/engineyard-serverside/slug/source_spec.rb +40 -0
  59. data/spec/engineyard-serverside/source_spec.rb +171 -0
  60. data/spec/railway_spec.rb +130 -0
  61. data/spec/result/failure_spec.rb +113 -0
  62. data/spec/result/success_spec.rb +109 -0
  63. data/spec/result_spec.rb +23 -0
  64. data/spec/spec_helper.rb +3 -349
  65. metadata +189 -490
  66. data/lib/vendor/json_pure/COPYING +0 -57
  67. data/lib/vendor/json_pure/GPL +0 -340
  68. data/lib/vendor/json_pure/README.rdoc +0 -358
  69. data/lib/vendor/json_pure/VERSION +0 -1
  70. data/lib/vendor/json_pure/lib/json/add/bigdecimal.rb +0 -28
  71. data/lib/vendor/json_pure/lib/json/add/complex.rb +0 -22
  72. data/lib/vendor/json_pure/lib/json/add/core.rb +0 -11
  73. data/lib/vendor/json_pure/lib/json/add/date.rb +0 -34
  74. data/lib/vendor/json_pure/lib/json/add/date_time.rb +0 -48
  75. data/lib/vendor/json_pure/lib/json/add/exception.rb +0 -31
  76. data/lib/vendor/json_pure/lib/json/add/ostruct.rb +0 -31
  77. data/lib/vendor/json_pure/lib/json/add/range.rb +0 -29
  78. data/lib/vendor/json_pure/lib/json/add/rational.rb +0 -22
  79. data/lib/vendor/json_pure/lib/json/add/regexp.rb +0 -30
  80. data/lib/vendor/json_pure/lib/json/add/struct.rb +0 -30
  81. data/lib/vendor/json_pure/lib/json/add/symbol.rb +0 -25
  82. data/lib/vendor/json_pure/lib/json/add/time.rb +0 -38
  83. data/lib/vendor/json_pure/lib/json/common.rb +0 -484
  84. data/lib/vendor/json_pure/lib/json/ext.rb +0 -21
  85. data/lib/vendor/json_pure/lib/json/generic_object.rb +0 -70
  86. data/lib/vendor/json_pure/lib/json/pure/generator.rb +0 -522
  87. data/lib/vendor/json_pure/lib/json/pure/parser.rb +0 -359
  88. data/lib/vendor/json_pure/lib/json/pure.rb +0 -21
  89. data/lib/vendor/json_pure/lib/json/version.rb +0 -8
  90. data/lib/vendor/json_pure/lib/json.rb +0 -62
  91. data/lib/vendor/multi_json/CHANGELOG.md +0 -121
  92. data/lib/vendor/multi_json/CONTRIBUTING.md +0 -46
  93. data/lib/vendor/multi_json/Gemfile +0 -31
  94. data/lib/vendor/multi_json/LICENSE.md +0 -20
  95. data/lib/vendor/multi_json/README.md +0 -105
  96. data/lib/vendor/multi_json/Rakefile +0 -12
  97. data/lib/vendor/multi_json/lib/multi_json/adapters/gson.rb +0 -20
  98. data/lib/vendor/multi_json/lib/multi_json/adapters/json_common.rb +0 -35
  99. data/lib/vendor/multi_json/lib/multi_json/adapters/json_gem.rb +0 -12
  100. data/lib/vendor/multi_json/lib/multi_json/adapters/json_pure.rb +0 -12
  101. data/lib/vendor/multi_json/lib/multi_json/adapters/nsjsonserialization.rb +0 -35
  102. data/lib/vendor/multi_json/lib/multi_json/adapters/oj.rb +0 -29
  103. data/lib/vendor/multi_json/lib/multi_json/adapters/ok_json.rb +0 -58
  104. data/lib/vendor/multi_json/lib/multi_json/adapters/yajl.rb +0 -20
  105. data/lib/vendor/multi_json/lib/multi_json/vendor/okjson.rb +0 -602
  106. data/lib/vendor/multi_json/lib/multi_json/version.rb +0 -3
  107. data/lib/vendor/multi_json/lib/multi_json.rb +0 -137
  108. data/lib/vendor/multi_json/spec/adapter_shared_example.rb +0 -162
  109. data/lib/vendor/multi_json/spec/helper.rb +0 -45
  110. data/lib/vendor/multi_json/spec/json_common_shared_example.rb +0 -36
  111. data/lib/vendor/multi_json/spec/multi_json_spec.rb +0 -151
  112. data/spec/archive_deploy_spec.rb +0 -53
  113. data/spec/basic_deploy_spec.rb +0 -26
  114. data/spec/bundler_deploy_spec.rb +0 -160
  115. data/spec/configuration_spec.rb +0 -206
  116. data/spec/custom_deploy_spec.rb +0 -128
  117. data/spec/deploy_hook_spec.rb +0 -378
  118. data/spec/deprecation_spec.rb +0 -23
  119. data/spec/ey_yml_customized_deploy_spec.rb +0 -99
  120. data/spec/fixtures/gitrepo.tar.gz +0 -0
  121. data/spec/fixtures/invalid_hook.rb +0 -1
  122. data/spec/fixtures/lockfiles/0.9-no-bundler +0 -111
  123. data/spec/fixtures/lockfiles/0.9-with-bundler +0 -117
  124. data/spec/fixtures/lockfiles/1.0-no-bundler +0 -54
  125. data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +0 -162
  126. data/spec/fixtures/lockfiles/1.0.18-do_mysql +0 -88
  127. data/spec/fixtures/lockfiles/1.0.18-do_postgres +0 -79
  128. data/spec/fixtures/lockfiles/1.0.18-mysql +0 -43
  129. data/spec/fixtures/lockfiles/1.0.18-mysql2 +0 -43
  130. data/spec/fixtures/lockfiles/1.0.18-pg +0 -43
  131. data/spec/fixtures/lockfiles/1.0.6-no-bundler +0 -51
  132. data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +0 -52
  133. data/spec/fixtures/lockfiles/1.0.6-with-bundler +0 -52
  134. data/spec/fixtures/lockfiles/1.15.1-no-bundler +0 -51
  135. data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +0 -112
  136. data/spec/fixtures/lockfiles/not-a-lockfile +0 -1
  137. data/spec/fixtures/repos/assets_detected/Gemfile +0 -5
  138. data/spec/fixtures/repos/assets_detected/Gemfile.lock +0 -88
  139. data/spec/fixtures/repos/assets_detected/README +0 -1
  140. data/spec/fixtures/repos/assets_detected/Rakefile +0 -5
  141. data/spec/fixtures/repos/assets_detected/app/assets/empty +0 -0
  142. data/spec/fixtures/repos/assets_detected/config/application.rb +0 -5
  143. data/spec/fixtures/repos/assets_detected/config/ey.yml +0 -3
  144. data/spec/fixtures/repos/assets_disabled/Gemfile +0 -5
  145. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +0 -88
  146. data/spec/fixtures/repos/assets_disabled/README +0 -1
  147. data/spec/fixtures/repos/assets_disabled/Rakefile +0 -6
  148. data/spec/fixtures/repos/assets_disabled/app/assets/empty +0 -0
  149. data/spec/fixtures/repos/assets_disabled/config/application.rb +0 -5
  150. data/spec/fixtures/repos/assets_disabled/config/ey.yml +0 -3
  151. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +0 -5
  152. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +0 -88
  153. data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +0 -1
  154. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +0 -6
  155. data/spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty +0 -0
  156. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +0 -5
  157. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +0 -5
  158. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile +0 -5
  159. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile.lock +0 -88
  160. data/spec/fixtures/repos/assets_disabled_utf8/README +0 -3
  161. data/spec/fixtures/repos/assets_disabled_utf8/Rakefile +0 -5
  162. data/spec/fixtures/repos/assets_disabled_utf8/app/assets/empty +0 -0
  163. data/spec/fixtures/repos/assets_disabled_utf8/config/application.rb +0 -7
  164. data/spec/fixtures/repos/assets_disabled_utf8/config/ey.yml +0 -3
  165. data/spec/fixtures/repos/assets_enabled_all/Gemfile +0 -5
  166. data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +0 -88
  167. data/spec/fixtures/repos/assets_enabled_all/README +0 -1
  168. data/spec/fixtures/repos/assets_enabled_all/app/assets/empty +0 -0
  169. data/spec/fixtures/repos/assets_enabled_all/config/application.rb +0 -5
  170. data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +0 -6
  171. data/spec/fixtures/repos/assets_enabled_all/script/assets +0 -5
  172. data/spec/fixtures/repos/assets_enabled_all/tmp/obstruction +0 -1
  173. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +0 -3
  174. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +0 -10
  175. data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +0 -1
  176. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +0 -8
  177. data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +0 -4
  178. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +0 -5
  179. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +0 -88
  180. data/spec/fixtures/repos/assets_enabled_util_only/README +0 -1
  181. data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +0 -6
  182. data/spec/fixtures/repos/assets_enabled_util_only/app/assets/empty +0 -0
  183. data/spec/fixtures/repos/assets_enabled_util_only/config/application.rb +0 -5
  184. data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +0 -6
  185. data/spec/fixtures/repos/assets_error/Gemfile +0 -5
  186. data/spec/fixtures/repos/assets_error/Gemfile.lock +0 -88
  187. data/spec/fixtures/repos/assets_error/README +0 -1
  188. data/spec/fixtures/repos/assets_error/Rakefile +0 -4
  189. data/spec/fixtures/repos/assets_error/app/assets/empty +0 -0
  190. data/spec/fixtures/repos/assets_error/config/application.rb +0 -5
  191. data/spec/fixtures/repos/assets_error/config/ey.yml +0 -4
  192. data/spec/fixtures/repos/assets_in_hook/Gemfile +0 -5
  193. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +0 -88
  194. data/spec/fixtures/repos/assets_in_hook/README +0 -2
  195. data/spec/fixtures/repos/assets_in_hook/Rakefile +0 -5
  196. data/spec/fixtures/repos/assets_in_hook/app/assets/empty +0 -0
  197. data/spec/fixtures/repos/assets_in_hook/config/application.rb +0 -5
  198. data/spec/fixtures/repos/assets_in_hook/config/ey.yml +0 -3
  199. data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +0 -2
  200. data/spec/fixtures/repos/bundle_fails/Gemfile +0 -1
  201. data/spec/fixtures/repos/bundle_fails/README +0 -1
  202. data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +0 -1
  203. data/spec/fixtures/repos/bundler_disabled/Gemfile +0 -4
  204. data/spec/fixtures/repos/bundler_disabled/Gemfile.lock +0 -12
  205. data/spec/fixtures/repos/bundler_disabled/README +0 -1
  206. data/spec/fixtures/repos/bundler_disabled/config/ey.yml +0 -2
  207. data/spec/fixtures/repos/bundler_disabled/deploy/after_bundle.rb +0 -1
  208. data/spec/fixtures/repos/bundler_disabled/deploy/before_bundle.rb +0 -1
  209. data/spec/fixtures/repos/bundler_old/Gemfile +0 -5
  210. data/spec/fixtures/repos/bundler_old/Gemfile.lock +0 -15
  211. data/spec/fixtures/repos/bundler_old/README +0 -1
  212. data/spec/fixtures/repos/default/Gemfile +0 -4
  213. data/spec/fixtures/repos/default/Gemfile.lock +0 -12
  214. data/spec/fixtures/repos/default/README +0 -5
  215. data/spec/fixtures/repos/default/ey.yml +0 -3
  216. data/spec/fixtures/repos/executable_hooks/README +0 -1
  217. data/spec/fixtures/repos/executable_hooks/deploy/before_restart +0 -72
  218. data/spec/fixtures/repos/executable_hooks_not_executable/README +0 -3
  219. data/spec/fixtures/repos/executable_hooks_not_executable/deploy/before_restart +0 -3
  220. data/spec/fixtures/repos/ey_yml/Gemfile +0 -4
  221. data/spec/fixtures/repos/ey_yml/Gemfile.lock +0 -12
  222. data/spec/fixtures/repos/ey_yml/README +0 -1
  223. data/spec/fixtures/repos/ey_yml/config/ey.yml +0 -18
  224. data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +0 -6
  225. data/spec/fixtures/repos/ey_yml_alt/Gemfile +0 -4
  226. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +0 -12
  227. data/spec/fixtures/repos/ey_yml_alt/README +0 -1
  228. data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +0 -6
  229. data/spec/fixtures/repos/ey_yml_alt/ey.yml +0 -12
  230. data/spec/fixtures/repos/hook_fails/README +0 -1
  231. data/spec/fixtures/repos/hook_fails/deploy/before_deploy.rb +0 -1
  232. data/spec/fixtures/repos/hooks/README +0 -1
  233. data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +0 -1
  234. data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +0 -1
  235. data/spec/fixtures/repos/hooks/deploy/after_deploy.rb +0 -1
  236. data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +0 -1
  237. data/spec/fixtures/repos/hooks/deploy/after_restart.rb +0 -1
  238. data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +0 -1
  239. data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +0 -1
  240. data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +0 -1
  241. data/spec/fixtures/repos/hooks/deploy/before_deploy.rb +0 -1
  242. data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +0 -1
  243. data/spec/fixtures/repos/hooks/deploy/before_restart.rb +0 -1
  244. data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +0 -1
  245. data/spec/fixtures/repos/multi_dep_manager/README +0 -1
  246. data/spec/fixtures/repos/multi_dep_manager/composer.json +0 -5
  247. data/spec/fixtures/repos/multi_dep_manager/composer.lock +0 -462
  248. data/spec/fixtures/repos/multi_dep_manager/package.json +0 -7
  249. data/spec/fixtures/repos/multi_dep_manager/public/index.php +0 -4
  250. data/spec/fixtures/repos/no_ey_config/Gemfile +0 -3
  251. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +0 -10
  252. data/spec/fixtures/repos/no_ey_config/README +0 -1
  253. data/spec/fixtures/repos/no_ey_config/ey.yml +0 -3
  254. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile +0 -3
  255. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile.lock +0 -10
  256. data/spec/fixtures/repos/no_ey_config_no_warning/README +0 -1
  257. data/spec/fixtures/repos/no_ey_config_no_warning/ey.yml +0 -5
  258. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +0 -4
  259. data/spec/fixtures/repos/no_gemfile_lock/README +0 -1
  260. data/spec/fixtures/repos/no_gemfile_lock/ey.yml +0 -3
  261. data/spec/fixtures/repos/nodejs/README +0 -1
  262. data/spec/fixtures/repos/nodejs/package.json +0 -7
  263. data/spec/fixtures/repos/not_bundled/README +0 -1
  264. data/spec/fixtures/repos/npm_disabled/README +0 -1
  265. data/spec/fixtures/repos/npm_disabled/config/ey.yml +0 -2
  266. data/spec/fixtures/repos/npm_disabled/package.json +0 -7
  267. data/spec/fixtures/repos/php_composer_disabled/README +0 -1
  268. data/spec/fixtures/repos/php_composer_disabled/composer.json +0 -5
  269. data/spec/fixtures/repos/php_composer_disabled/composer.lock +0 -462
  270. data/spec/fixtures/repos/php_composer_disabled/config/ey.yml +0 -2
  271. data/spec/fixtures/repos/php_composer_disabled/public/index.php +0 -4
  272. data/spec/fixtures/repos/php_composer_lock/README +0 -1
  273. data/spec/fixtures/repos/php_composer_lock/composer.json +0 -5
  274. data/spec/fixtures/repos/php_composer_lock/composer.lock +0 -462
  275. data/spec/fixtures/repos/php_composer_lock/public/index.php +0 -4
  276. data/spec/fixtures/repos/php_no_composer_lock/README +0 -1
  277. data/spec/fixtures/repos/php_no_composer_lock/composer.json +0 -21
  278. data/spec/fixtures/repos/php_no_composer_lock/public/index.php +0 -4
  279. data/spec/fixtures/repos/public_system/Gemfile +0 -4
  280. data/spec/fixtures/repos/public_system/Gemfile.lock +0 -12
  281. data/spec/fixtures/repos/public_system/README +0 -5
  282. data/spec/fixtures/repos/public_system/ey.yml +0 -3
  283. data/spec/fixtures/repos/public_system/public/system/cant_touch_this.txt +0 -3
  284. data/spec/fixtures/repos/sqlite3/Gemfile +0 -4
  285. data/spec/fixtures/repos/sqlite3/Gemfile.lock +0 -89
  286. data/spec/fixtures/repos/sqlite3/README +0 -1
  287. data/spec/fixtures/retwisj.war +0 -0
  288. data/spec/fixtures/valid_hook.rb +0 -1
  289. data/spec/git_strategy_spec.rb +0 -34
  290. data/spec/lockfile_parser_spec.rb +0 -126
  291. data/spec/maintenance_spec.rb +0 -44
  292. data/spec/multi_dependency_manager_spec.rb +0 -25
  293. data/spec/nodejs_deploy_spec.rb +0 -30
  294. data/spec/php_deploy_spec.rb +0 -81
  295. data/spec/platform_configure_spec.rb +0 -61
  296. data/spec/rails31_deploy_spec.rb +0 -172
  297. data/spec/restart_spec.rb +0 -43
  298. data/spec/rollback_spec.rb +0 -87
  299. data/spec/server_spec.rb +0 -70
  300. data/spec/services_deploy_spec.rb +0 -165
  301. data/spec/shell_spec.rb +0 -57
  302. data/spec/source/archive_spec.rb +0 -33
  303. data/spec/source/git_spec.rb +0 -44
  304. data/spec/sqlite3_deploy_spec.rb +0 -38
  305. data/spec/support/integration.rb +0 -103
  306. data/spec/support/source_doubles.rb +0 -28
  307. data/spec/support/timecop.rb +0 -5
  308. data/spec/symlink_spec.rb +0 -15
@@ -1,137 +0,0 @@
1
- module MultiJson
2
- extend self
3
-
4
- class LoadError < StandardError
5
- attr_reader :data
6
- def initialize(message='', backtrace=[], data='')
7
- super(message)
8
- self.set_backtrace(backtrace)
9
- @data = data
10
- end
11
- end
12
- DecodeError = LoadError # Legacy support
13
-
14
-
15
- @default_options = {}
16
- attr_accessor :default_options
17
-
18
- REQUIREMENT_MAP = [
19
- ['oj', :oj],
20
- ['yajl', :yajl],
21
- ['json', :json_gem],
22
- ['gson', :gson],
23
- ['json/pure', :json_pure]
24
- ]
25
-
26
- # The default adapter based on what you currently
27
- # have loaded and installed. First checks to see
28
- # if any adapters are already loaded, then checks
29
- # to see which are installed if none are loaded.
30
- def default_adapter
31
- return :oj if defined?(::Oj)
32
- return :yajl if defined?(::Yajl)
33
- return :json_gem if defined?(::JSON)
34
- return :gson if defined?(::Gson)
35
-
36
- REQUIREMENT_MAP.each do |(library, adapter)|
37
- begin
38
- require library
39
- return adapter
40
- rescue ::LoadError
41
- next
42
- end
43
- end
44
-
45
- Kernel.warn '[WARNING] MultiJson is using the default adapter (ok_json). We recommend loading a different JSON library to improve performance.'
46
- :ok_json
47
- end
48
- # :nodoc:
49
- alias :default_engine :default_adapter
50
-
51
- # Get the current adapter class.
52
- def adapter
53
- return @adapter if defined?(@adapter) && @adapter
54
-
55
- self.use nil # load default adapter
56
-
57
- @adapter
58
- end
59
- # :nodoc:
60
- alias :engine :adapter
61
-
62
- # Set the JSON parser utilizing a symbol, string, or class.
63
- # Supported by default are:
64
- #
65
- # * <tt>:oj</tt>
66
- # * <tt>:json_gem</tt>
67
- # * <tt>:json_pure</tt>
68
- # * <tt>:ok_json</tt>
69
- # * <tt>:yajl</tt>
70
- # * <tt>:nsjsonserialization</tt> (MacRuby only)
71
- # * <tt>:gson</tt> (JRuby only)
72
- def use(new_adapter)
73
- @adapter = load_adapter(new_adapter)
74
- end
75
- alias :adapter= :use
76
- # :nodoc:
77
- alias :engine= :use
78
-
79
- def load_adapter(new_adapter)
80
- case new_adapter
81
- when String, Symbol
82
- require "multi_json/adapters/#{new_adapter}"
83
- MultiJson::Adapters.const_get(:"#{new_adapter.to_s.split('_').map{|s| s.capitalize}.join('')}")
84
- when NilClass, FalseClass
85
- load_adapter default_adapter
86
- when Class, Module
87
- new_adapter
88
- else
89
- raise "Did not recognize your adapter specification. Please specify either a symbol or a class."
90
- end
91
- end
92
-
93
- # Decode a JSON string into Ruby.
94
- #
95
- # <b>Options</b>
96
- #
97
- # <tt>:symbolize_keys</tt> :: If true, will use symbols instead of strings for the keys.
98
- # <tt>:adapter</tt> :: If set, the selected engine will be used just for the call.
99
- def load(string, options={})
100
- adapter = current_adapter(options)
101
- begin
102
- adapter.load(string, options)
103
- rescue adapter::ParseError => exception
104
- raise LoadError.new(exception.message, exception.backtrace, string)
105
- end
106
- end
107
- # :nodoc:
108
- alias :decode :load
109
-
110
- def current_adapter(options)
111
- if new_adapter = (options || {}).delete(:adapter)
112
- load_adapter(new_adapter)
113
- else
114
- adapter
115
- end
116
- end
117
-
118
- # Encodes a Ruby object as JSON.
119
- def dump(object, options={})
120
- options = default_options.merge(options)
121
- adapter = current_adapter(options)
122
- adapter.dump(object, options)
123
- end
124
- # :nodoc:
125
- alias :encode :dump
126
-
127
- # Executes passed block using specified adapter.
128
- def with_adapter(new_adapter)
129
- old_adapter, self.adapter = adapter, new_adapter
130
- yield
131
- ensure
132
- self.adapter = old_adapter
133
- end
134
- # :nodoc:
135
- alias :with_engine :with_adapter
136
-
137
- end
@@ -1,162 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- shared_examples_for 'an adapter' do |adapter|
4
-
5
- before do
6
- begin
7
- MultiJson.use adapter
8
- rescue LoadError
9
- pending "Adapter #{adapter} couldn't be loaded (not installed?)"
10
- end
11
- end
12
-
13
- describe '.dump' do
14
- it 'writes decodable JSON' do
15
- [
16
- {'abc' => 'def'},
17
- [1, 2, 3, '4', true, false, nil]
18
- ].each do |example|
19
- expect(MultiJson.load(MultiJson.dump(example))).to eq example
20
- end
21
- end
22
-
23
- unless 'json_pure' == adapter || 'json_gem' == adapter
24
- it 'dumps time in correct format' do
25
- time = Time.at(1355218745).utc
26
-
27
- # time does not respond to to_json method
28
- class << time
29
- undef_method :to_json
30
- end
31
-
32
- dumped_json = MultiJson.dump(time)
33
- expected = if RUBY_VERSION > '1.9'
34
- '2012-12-11 09:39:05 UTC'
35
- else
36
- 'Tue Dec 11 09:39:05 UTC 2012'
37
- end
38
- expect(MultiJson.load(dumped_json)).to eq expected
39
- end
40
- end
41
-
42
- it 'dumps symbol and fixnum keys as strings' do
43
- [
44
- [
45
- {:foo => {:bar => 'baz'}},
46
- {'foo' => {'bar' => 'baz'}},
47
- ],
48
- [
49
- [{:foo => {:bar => 'baz'}}],
50
- [{'foo' => {'bar' => 'baz'}}],
51
- ],
52
- [
53
- {:foo => [{:bar => 'baz'}]},
54
- {'foo' => [{'bar' => 'baz'}]},
55
- ],
56
- [
57
- {1 => {2 => {3 => 'bar'}}},
58
- {'1' => {'2' => {'3' => 'bar'}}}
59
- ]
60
- ].each do |example, expected|
61
- dumped_json = MultiJson.dump(example)
62
- expect(MultiJson.load(dumped_json)).to eq expected
63
- end
64
- end
65
-
66
- it 'dumps rootless JSON' do
67
- expect(MultiJson.dump('random rootless string')).to eq '"random rootless string"'
68
- expect(MultiJson.dump(123)).to eq '123'
69
- end
70
-
71
- it 'passes options to the adapter' do
72
- MultiJson.adapter.should_receive(:dump).with('foo', {:bar => :baz})
73
- MultiJson.dump('foo', :bar => :baz)
74
- end
75
-
76
- # This behavior is currently not supported by gson.rb
77
- # See discussion at https://github.com/intridea/multi_json/pull/71
78
- unless adapter == 'gson'
79
- it 'dumps custom objects that implement to_json' do
80
- klass = Class.new do
81
- def to_json(*)
82
- '"foobar"'
83
- end
84
- end
85
- expect(MultiJson.dump(klass.new)).to eq '"foobar"'
86
- end
87
- end
88
-
89
- it 'allows to dump JSON values' do
90
- expect(MultiJson.dump(42)).to eq '42'
91
- end
92
-
93
- it 'allows to dump JSON with UTF-8 characters' do
94
- expect(MultiJson.dump({'color' => 'żółć'})).to eq('{"color":"żółć"}')
95
- end
96
- end
97
-
98
- describe '.load' do
99
- it 'properly loads valid JSON' do
100
- expect(MultiJson.load('{"abc":"def"}')).to eq({'abc' => 'def'})
101
- end
102
-
103
- it 'raises MultiJson::LoadError on invalid JSON' do
104
- expect{MultiJson.load('{"abc"}')}.to raise_error(MultiJson::LoadError)
105
- end
106
-
107
- it 'raises MultiJson::LoadError with data on invalid JSON' do
108
- data = '{invalid}'
109
- begin
110
- MultiJson.load(data)
111
- rescue MultiJson::LoadError => le
112
- expect(le.data).to eq data
113
- end
114
- end
115
-
116
- it 'catches MultiJson::DecodeError for legacy support' do
117
- data = '{invalid}'
118
- begin
119
- MultiJson.load(data)
120
- rescue MultiJson::DecodeError => de
121
- expect(de.data).to eq data
122
- end
123
- end
124
-
125
- it 'stringifys symbol keys when encoding' do
126
- dumped_json = MultiJson.dump(:a => 1, :b => {:c => 2})
127
- expect(MultiJson.load(dumped_json)).to eq({'a' => 1, 'b' => {'c' => 2}})
128
- end
129
-
130
- it 'properly loads valid JSON in StringIOs' do
131
- json = StringIO.new('{"abc":"def"}')
132
- expect(MultiJson.load(json)).to eq({'abc' => 'def'})
133
- end
134
-
135
- it 'allows for symbolization of keys' do
136
- [
137
- [
138
- '{"abc":{"def":"hgi"}}',
139
- {:abc => {:def => 'hgi'}},
140
- ],
141
- [
142
- '[{"abc":{"def":"hgi"}}]',
143
- [{:abc => {:def => 'hgi'}}],
144
- ],
145
- [
146
- '{"abc":[{"def":"hgi"}]}',
147
- {:abc => [{:def => 'hgi'}]},
148
- ],
149
- ].each do |example, expected|
150
- expect(MultiJson.load(example, :symbolize_keys => true)).to eq expected
151
- end
152
- end
153
-
154
- it 'allows to load JSON values' do
155
- expect(MultiJson.load('42')).to eq 42
156
- end
157
-
158
- it 'allows to load JSON with UTF-8 characters' do
159
- expect(MultiJson.load('{"color":"żółć"}')).to eq({'color' => 'żółć'})
160
- end
161
- end
162
- end
@@ -1,45 +0,0 @@
1
- if !ENV['CI'] && defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ruby'
2
- require 'simplecov'
3
- SimpleCov.start do
4
- add_filter 'vendor'
5
- end
6
- end
7
-
8
- require 'multi_json'
9
- require 'rspec'
10
-
11
- RSpec.configure do |config|
12
- config.expect_with :rspec do |c|
13
- c.syntax = :expect
14
- end
15
- end
16
-
17
- def macruby?
18
- defined?(RUBY_ENGINE) && RUBY_ENGINE == 'macruby'
19
- end
20
-
21
- def jruby?
22
- defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
23
- end
24
-
25
- class MockDecoder
26
- def self.load(string, options={})
27
- {'abc' => 'def'}
28
- end
29
-
30
- def self.dump(string)
31
- '{"abc":"def"}'
32
- end
33
- end
34
-
35
- module MockModuleDecoder
36
- extend self
37
-
38
- def load(string, options={})
39
- {'abc' => 'def'}
40
- end
41
-
42
- def dump(string)
43
- '{"abc":"def"}'
44
- end
45
- end
@@ -1,36 +0,0 @@
1
- shared_examples_for 'JSON-like adapter' do |adapter|
2
- before do
3
- begin
4
- MultiJson.use adapter
5
- rescue LoadError
6
- pending "Adapter #{adapter} couldn't be loaded (not installed?)"
7
- end
8
- end
9
-
10
- describe '.dump' do
11
- describe 'with :pretty option set to true' do
12
- it 'passes default pretty options' do
13
- object = 'foo'
14
- object.should_receive(:to_json).with(JSON::PRETTY_STATE_PROTOTYPE.to_h).and_return('["foo"]')
15
- MultiJson.dump(object, :pretty => true)
16
- end
17
- end
18
-
19
- describe 'with :indent option' do
20
- it 'passes it on dump' do
21
- object = 'foo'
22
- object.should_receive(:to_json).with(:indent => "\t").and_return('["foo"]')
23
- MultiJson.dump(object, :indent => "\t")
24
- end
25
- end
26
- end
27
-
28
- describe '.load' do
29
- describe 'with :quirks_mode option' do
30
- it 'passes it on load' do
31
- ::JSON.should_receive(:parse).with('["foo"]', {:quirks_mode => true, :create_additions => false}).and_return(['foo'])
32
- MultiJson.load('"foo"', :quirks_mode => true)
33
- end
34
- end
35
- end
36
- end
@@ -1,151 +0,0 @@
1
- require 'helper'
2
- require 'adapter_shared_example'
3
- require 'json_common_shared_example'
4
- require 'stringio'
5
-
6
- describe 'MultiJson' do
7
- context 'adapters' do
8
- before{ MultiJson.use nil }
9
-
10
- context 'when no other json implementations are available' do
11
- before do
12
- @old_map = MultiJson::REQUIREMENT_MAP
13
- @old_json = Object.const_get :JSON if Object.const_defined?(:JSON)
14
- @old_oj = Object.const_get :Oj if Object.const_defined?(:Oj)
15
- @old_yajl = Object.const_get :Yajl if Object.const_defined?(:Yajl)
16
- @old_gson = Object.const_get :Gson if Object.const_defined?(:Gson)
17
- MultiJson::REQUIREMENT_MAP.each_with_index do |(library, adapter), index|
18
- MultiJson::REQUIREMENT_MAP[index] = ["foo/#{library}", adapter]
19
- end
20
- Object.send :remove_const, :JSON if @old_json
21
- Object.send :remove_const, :Oj if @old_oj
22
- Object.send :remove_const, :Yajl if @old_yajl
23
- Object.send :remove_const, :Gson if @old_gson
24
- end
25
-
26
- after do
27
- @old_map.each_with_index do |(library, adapter), index|
28
- MultiJson::REQUIREMENT_MAP[index] = [library, adapter]
29
- end
30
- Object.const_set :JSON, @old_json if @old_json
31
- Object.const_set :Oj, @old_oj if @old_oj
32
- Object.const_set :Yajl, @old_yajl if @old_yajl
33
- Object.const_set :Gson, @old_gson if @old_gson
34
- end
35
-
36
- it 'defaults to ok_json if no other json implementions are available' do
37
- Kernel.stub(:warn)
38
- expect(MultiJson.default_adapter).to eq :ok_json
39
- end
40
-
41
- it 'prints a warning' do
42
- Kernel.should_receive(:warn).with(/warning/i)
43
- MultiJson.default_adapter
44
- end
45
- end
46
-
47
- it 'defaults to the best available gem' do
48
- # Clear cache variable already set by previous tests
49
- MultiJson.send(:remove_instance_variable, :@adapter)
50
- unless jruby?
51
- require 'oj'
52
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::Oj'
53
- else
54
- require 'json'
55
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::JsonGem'
56
- end
57
- end
58
-
59
- it 'looks for adapter even if @adapter variable is nil' do
60
- MultiJson.send(:instance_variable_set, :@adapter, nil)
61
- MultiJson.should_receive(:default_adapter).and_return(:ok_json)
62
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::OkJson'
63
- end
64
-
65
- it 'is settable via a symbol' do
66
- MultiJson.use :json_gem
67
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::JsonGem'
68
- end
69
-
70
- it 'is settable via a class' do
71
- MultiJson.use MockDecoder
72
- expect(MultiJson.adapter.name).to eq 'MockDecoder'
73
- end
74
-
75
- it 'is settable via a module' do
76
- MultiJson.use MockModuleDecoder
77
- expect(MultiJson.adapter.name).to eq 'MockModuleDecoder'
78
- end
79
-
80
- context 'using one-shot parser' do
81
- before do
82
- require 'multi_json/adapters/json_pure'
83
- MultiJson::Adapters::JsonPure.should_receive(:dump).exactly(1).times.and_return('dump_something')
84
- MultiJson::Adapters::JsonPure.should_receive(:load).exactly(1).times.and_return('load_something')
85
- end
86
-
87
- it 'should use the defined parser just for the call' do
88
- MultiJson.use :json_gem
89
- expect(MultiJson.dump('', :adapter => :json_pure)).to eq 'dump_something'
90
- expect(MultiJson.load('', :adapter => :json_pure)).to eq 'load_something'
91
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::JsonGem'
92
- end
93
- end
94
- end
95
-
96
- it 'can set adapter for a block' do
97
- MultiJson.use :ok_json
98
- MultiJson.with_adapter(:json_pure) do
99
- MultiJson.with_engine(:json_gem) do
100
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::JsonGem'
101
- end
102
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::JsonPure'
103
- end
104
- expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::OkJson'
105
- end
106
-
107
- it 'JSON gem does not create symbols on parse' do
108
- MultiJson.with_engine(:json_gem) do
109
- MultiJson.load('{"json_class":"ZOMG"}') rescue nil
110
-
111
- expect{
112
- MultiJson.load('{"json_class":"OMG"}') rescue nil
113
- }.to_not change{Symbol.all_symbols.count}
114
- end
115
- end
116
-
117
- unless jruby?
118
- it 'Oj does not create symbols on parse' do
119
- MultiJson.with_engine(:oj) do
120
- MultiJson.load('{"json_class":"ZOMG"}') rescue nil
121
-
122
- expect{
123
- MultiJson.load('{"json_class":"OMG"}') rescue nil
124
- }.to_not change{Symbol.all_symbols.count}
125
- end
126
- end
127
- end
128
-
129
- it 'has default_options setter' do
130
- MultiJson.use MockDecoder
131
- MockDecoder.should_receive(:dump).with('123', :foo => 'lol', :bar => 'bar', :fizz => 'buzz')
132
- MultiJson.default_options = { :foo => 'foo', :bar => 'bar' }
133
- MultiJson.dump('123', :fizz => 'buzz', :foo => 'lol')
134
- MultiJson.default_options = {}
135
- end
136
-
137
- %w(gson json_gem json_pure nsjsonserialization oj ok_json yajl).each do |adapter|
138
- next if adapter == 'gson' && !jruby?
139
- next if adapter == 'nsjsonserialization' && !macruby?
140
- next if jruby? && (adapter == 'oj' || adapter == 'yajl')
141
- context adapter do
142
- it_behaves_like 'an adapter', adapter
143
- end
144
- end
145
-
146
- %w(json_gem json_pure).each do |adapter|
147
- context adapter do
148
- it_behaves_like 'JSON-like adapter', adapter
149
- end
150
- end
151
- end
@@ -1,53 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class EY::Serverside::Source::Archive
4
- def fetch_command
5
- "cp #{uri} #{source_cache}"
6
- end
7
- end
8
-
9
- describe "Deploying a simple application" do
10
-
11
- before(:all) do
12
- adapter = EY::Serverside::Adapter.new do |args|
13
- args.account_name = "account"
14
- args.app = "application_name"
15
- args.stack = "nginx_unicorn"
16
- args.environment_name = "environment_name"
17
- args.framework_env = "production"
18
- args.archive = FIXTURES_DIR.join('retwisj.war')
19
- args.verbose = true
20
- args.instances = [{ :hostname => "localhost", :roles => ["solo"], :name => "single" }]
21
- args.serverside_version = Gem::Version.create(EY::Serverside::VERSION.dup).release
22
- args.config = {
23
- "deploy_to" => deploy_dir.to_s,
24
- "group" => GROUP
25
- }
26
- end
27
- argv = adapter.deploy.commands.last.to_argv[2..-1]
28
- with_mocked_commands do
29
- capture do
30
- EY::Serverside::CLI::App.start(argv)
31
- end
32
- end
33
- end
34
-
35
- it "exploded the war" do
36
- %w(META-INF WEB-INF).each {|dir|
37
- File.exists?(deploy_dir.join('current', dir))
38
- }
39
- end
40
-
41
- it "creates a REVISION file" do
42
- path = deploy_dir.join('current', 'REVISION')
43
- expect(path).to exist
44
- checksum = File.read(path).strip
45
- expect(checksum).to match(/7400dc058376745c11a98f768b799c6651428857\s+.*retwisj.war$/)
46
- end
47
-
48
- it "restarts the app servers" do
49
- restart = deploy_dir.join('current', 'restart')
50
- expect(restart).to exist
51
- expect(restart.read.chomp).to eq(%|LANG="en_US.UTF-8" /engineyard/bin/app_application_name deploy|)
52
- end
53
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying a simple application" do
4
- before(:all) do
5
- deploy_test_application('not_bundled')
6
- end
7
-
8
- it "creates a REVISION file" do
9
- expect(deploy_dir.join('current', 'REVISION')).to exist
10
- end
11
-
12
- it "restarts the app servers" do
13
- restart = deploy_dir.join('current', 'restart')
14
- expect(restart).to exist
15
- expect(restart.read.chomp).to eq(%|LANG="en_US.UTF-8" /engineyard/bin/app_rails31 deploy|)
16
- end
17
-
18
- it "reuses the same active_release directory if a release_path is specified (such as in integrate)" do
19
- path = @config.paths.active_release
20
- expect(path.parent.children.size).to eq(1)
21
-
22
- redeploy_test_application('config' => {'release_path' => path.to_s})
23
-
24
- expect(path.parent.children.size).to eq(1)
25
- end
26
- end