engineyard-serverside 2.8.0.pre4 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
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