engineyard-serverside 2.8.0.pre4 → 2.8.0

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 (261) hide show
  1. checksums.yaml +4 -4
  2. data/features/enable_maintenance/step_definitions/enable_maintenance_steps.rb +43 -0
  3. data/features/hook/running-a-deploy-hook.feature +277 -0
  4. data/features/hook/step_definitions/running-a-deploy-hook-steps.rb +200 -0
  5. data/features/step_definitions/app_steps.rb +10 -0
  6. data/features/step_definitions/command_steps.rb +8 -0
  7. data/features/step_definitions/server_steps.rb +14 -0
  8. data/features/step_definitions/version_steps.rb +5 -0
  9. data/features/support/env.rb +63 -0
  10. data/features/support/error_codes.rb +17 -0
  11. data/features/support/fs_helpers.rb +82 -0
  12. data/features/support/output_helpers.rb +7 -0
  13. data/features/support/runner.rb +41 -0
  14. data/features/version.feature +7 -0
  15. data/lib/engineyard-serverside/cli/app.rb +6 -0
  16. data/lib/engineyard-serverside/shell.rb +38 -10
  17. data/lib/engineyard-serverside/version.rb +1 -1
  18. data/spec/engineyard-serverside/callbacks/collection/combined_spec.rb +232 -0
  19. data/spec/engineyard-serverside/callbacks/collection/deploy_hooks_spec.rb +170 -0
  20. data/spec/engineyard-serverside/callbacks/collection/service_hooks/collection_spec.rb +171 -0
  21. data/spec/engineyard-serverside/callbacks/collection/service_hooks/combined_spec.rb +174 -0
  22. data/spec/engineyard-serverside/callbacks/collection/service_hooks_spec.rb +31 -0
  23. data/spec/engineyard-serverside/callbacks/collection_spec.rb +49 -0
  24. data/spec/engineyard-serverside/callbacks/distributor/remote_spec.rb +135 -0
  25. data/spec/engineyard-serverside/callbacks/distributor/viability_filter_spec.rb +208 -0
  26. data/spec/engineyard-serverside/callbacks/distributor_spec.rb +43 -0
  27. data/spec/engineyard-serverside/callbacks/executor/executable_spec.rb +386 -0
  28. data/spec/engineyard-serverside/callbacks/executor/ruby/context_spec.rb +538 -0
  29. data/spec/engineyard-serverside/callbacks/executor/ruby/executor_spec.rb +313 -0
  30. data/spec/engineyard-serverside/callbacks/executor/ruby_spec.rb +35 -0
  31. data/spec/engineyard-serverside/callbacks/executor_spec.rb +45 -0
  32. data/spec/engineyard-serverside/callbacks_spec.rb +31 -0
  33. data/spec/engineyard-serverside/cli/workflows/base_spec.rb +237 -0
  34. data/spec/engineyard-serverside/cli/workflows/calling_deploy_hooks_spec.rb +65 -0
  35. data/spec/engineyard-serverside/cli/workflows/deploying_applications_spec.rb +61 -0
  36. data/spec/engineyard-serverside/cli/workflows/disabling_maintenance_spec.rb +61 -0
  37. data/spec/engineyard-serverside/cli/workflows/enabling_maintenance_spec.rb +61 -0
  38. data/spec/engineyard-serverside/cli/workflows/helpers_spec.rb +64 -0
  39. data/spec/engineyard-serverside/cli/workflows/rolling_back_applications_spec.rb +61 -0
  40. data/spec/engineyard-serverside/cli/workflows/showing_maintenance_status_spec.rb +60 -0
  41. data/spec/engineyard-serverside/cli/workflows_spec.rb +87 -0
  42. data/spec/engineyard-serverside/dependency_manager/base_spec.rb +139 -0
  43. data/spec/engineyard-serverside/paths_spec.rb +820 -0
  44. data/spec/engineyard-serverside/propagator_spec.rb +56 -0
  45. data/spec/engineyard-serverside/server_spec.rb +390 -0
  46. data/spec/engineyard-serverside/shell/helpers_spec.rb +98 -0
  47. data/spec/engineyard-serverside/shell/yieldio_spec.rb +33 -0
  48. data/spec/engineyard-serverside/shell_spec.rb +543 -0
  49. data/spec/engineyard-serverside/slug/distributor_spec.rb +199 -0
  50. data/spec/engineyard-serverside/slug/enabler_spec.rb +191 -0
  51. data/spec/engineyard-serverside/slug/failure_handler_spec.rb +114 -0
  52. data/spec/engineyard-serverside/slug/finalizer_spec.rb +191 -0
  53. data/spec/engineyard-serverside/slug/generator_spec.rb +82 -0
  54. data/spec/engineyard-serverside/slug/migrator_spec.rb +137 -0
  55. data/spec/engineyard-serverside/slug/restarter_spec.rb +226 -0
  56. data/spec/engineyard-serverside/slug/source/updater_spec.rb +710 -0
  57. data/spec/engineyard-serverside/slug/source_spec.rb +40 -0
  58. data/spec/engineyard-serverside/source_spec.rb +171 -0
  59. data/spec/railway_spec.rb +130 -0
  60. data/spec/result/failure_spec.rb +113 -0
  61. data/spec/result/success_spec.rb +109 -0
  62. data/spec/result_spec.rb +23 -0
  63. data/spec/spec_helper.rb +3 -349
  64. metadata +182 -404
  65. data/spec/archive_deploy_spec.rb +0 -53
  66. data/spec/basic_deploy_spec.rb +0 -26
  67. data/spec/bundler_deploy_spec.rb +0 -160
  68. data/spec/configuration_spec.rb +0 -206
  69. data/spec/custom_deploy_spec.rb +0 -128
  70. data/spec/deploy_hook_spec.rb +0 -378
  71. data/spec/deprecation_spec.rb +0 -23
  72. data/spec/ey_yml_customized_deploy_spec.rb +0 -99
  73. data/spec/fixtures/gitrepo.tar.gz +0 -0
  74. data/spec/fixtures/invalid_hook.rb +0 -1
  75. data/spec/fixtures/lockfiles/0.9-no-bundler +0 -111
  76. data/spec/fixtures/lockfiles/0.9-with-bundler +0 -117
  77. data/spec/fixtures/lockfiles/1.0-no-bundler +0 -54
  78. data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +0 -162
  79. data/spec/fixtures/lockfiles/1.0.18-do_mysql +0 -88
  80. data/spec/fixtures/lockfiles/1.0.18-do_postgres +0 -79
  81. data/spec/fixtures/lockfiles/1.0.18-mysql +0 -43
  82. data/spec/fixtures/lockfiles/1.0.18-mysql2 +0 -43
  83. data/spec/fixtures/lockfiles/1.0.18-pg +0 -43
  84. data/spec/fixtures/lockfiles/1.0.6-no-bundler +0 -51
  85. data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +0 -52
  86. data/spec/fixtures/lockfiles/1.0.6-with-bundler +0 -52
  87. data/spec/fixtures/lockfiles/1.15.1-no-bundler +0 -51
  88. data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +0 -112
  89. data/spec/fixtures/lockfiles/not-a-lockfile +0 -1
  90. data/spec/fixtures/repos/assets_detected/Gemfile +0 -5
  91. data/spec/fixtures/repos/assets_detected/Gemfile.lock +0 -88
  92. data/spec/fixtures/repos/assets_detected/README +0 -1
  93. data/spec/fixtures/repos/assets_detected/Rakefile +0 -5
  94. data/spec/fixtures/repos/assets_detected/app/assets/empty +0 -0
  95. data/spec/fixtures/repos/assets_detected/config/application.rb +0 -5
  96. data/spec/fixtures/repos/assets_detected/config/ey.yml +0 -3
  97. data/spec/fixtures/repos/assets_disabled/Gemfile +0 -5
  98. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +0 -88
  99. data/spec/fixtures/repos/assets_disabled/README +0 -1
  100. data/spec/fixtures/repos/assets_disabled/Rakefile +0 -6
  101. data/spec/fixtures/repos/assets_disabled/app/assets/empty +0 -0
  102. data/spec/fixtures/repos/assets_disabled/config/application.rb +0 -5
  103. data/spec/fixtures/repos/assets_disabled/config/ey.yml +0 -3
  104. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +0 -5
  105. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +0 -88
  106. data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +0 -1
  107. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +0 -6
  108. data/spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty +0 -0
  109. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +0 -5
  110. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +0 -5
  111. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile +0 -5
  112. data/spec/fixtures/repos/assets_disabled_utf8/Gemfile.lock +0 -88
  113. data/spec/fixtures/repos/assets_disabled_utf8/README +0 -3
  114. data/spec/fixtures/repos/assets_disabled_utf8/Rakefile +0 -5
  115. data/spec/fixtures/repos/assets_disabled_utf8/app/assets/empty +0 -0
  116. data/spec/fixtures/repos/assets_disabled_utf8/config/application.rb +0 -7
  117. data/spec/fixtures/repos/assets_disabled_utf8/config/ey.yml +0 -3
  118. data/spec/fixtures/repos/assets_enabled_all/Gemfile +0 -5
  119. data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +0 -88
  120. data/spec/fixtures/repos/assets_enabled_all/README +0 -1
  121. data/spec/fixtures/repos/assets_enabled_all/app/assets/empty +0 -0
  122. data/spec/fixtures/repos/assets_enabled_all/config/application.rb +0 -5
  123. data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +0 -6
  124. data/spec/fixtures/repos/assets_enabled_all/script/assets +0 -5
  125. data/spec/fixtures/repos/assets_enabled_all/tmp/obstruction +0 -1
  126. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +0 -3
  127. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +0 -10
  128. data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +0 -1
  129. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +0 -8
  130. data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +0 -4
  131. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +0 -5
  132. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +0 -88
  133. data/spec/fixtures/repos/assets_enabled_util_only/README +0 -1
  134. data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +0 -6
  135. data/spec/fixtures/repos/assets_enabled_util_only/app/assets/empty +0 -0
  136. data/spec/fixtures/repos/assets_enabled_util_only/config/application.rb +0 -5
  137. data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +0 -6
  138. data/spec/fixtures/repos/assets_error/Gemfile +0 -5
  139. data/spec/fixtures/repos/assets_error/Gemfile.lock +0 -88
  140. data/spec/fixtures/repos/assets_error/README +0 -1
  141. data/spec/fixtures/repos/assets_error/Rakefile +0 -4
  142. data/spec/fixtures/repos/assets_error/app/assets/empty +0 -0
  143. data/spec/fixtures/repos/assets_error/config/application.rb +0 -5
  144. data/spec/fixtures/repos/assets_error/config/ey.yml +0 -4
  145. data/spec/fixtures/repos/assets_in_hook/Gemfile +0 -5
  146. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +0 -88
  147. data/spec/fixtures/repos/assets_in_hook/README +0 -2
  148. data/spec/fixtures/repos/assets_in_hook/Rakefile +0 -5
  149. data/spec/fixtures/repos/assets_in_hook/app/assets/empty +0 -0
  150. data/spec/fixtures/repos/assets_in_hook/config/application.rb +0 -5
  151. data/spec/fixtures/repos/assets_in_hook/config/ey.yml +0 -3
  152. data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +0 -2
  153. data/spec/fixtures/repos/bundle_fails/Gemfile +0 -1
  154. data/spec/fixtures/repos/bundle_fails/README +0 -1
  155. data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +0 -1
  156. data/spec/fixtures/repos/bundler_disabled/Gemfile +0 -4
  157. data/spec/fixtures/repos/bundler_disabled/Gemfile.lock +0 -12
  158. data/spec/fixtures/repos/bundler_disabled/README +0 -1
  159. data/spec/fixtures/repos/bundler_disabled/config/ey.yml +0 -2
  160. data/spec/fixtures/repos/bundler_disabled/deploy/after_bundle.rb +0 -1
  161. data/spec/fixtures/repos/bundler_disabled/deploy/before_bundle.rb +0 -1
  162. data/spec/fixtures/repos/bundler_old/Gemfile +0 -5
  163. data/spec/fixtures/repos/bundler_old/Gemfile.lock +0 -15
  164. data/spec/fixtures/repos/bundler_old/README +0 -1
  165. data/spec/fixtures/repos/default/Gemfile +0 -4
  166. data/spec/fixtures/repos/default/Gemfile.lock +0 -12
  167. data/spec/fixtures/repos/default/README +0 -5
  168. data/spec/fixtures/repos/default/ey.yml +0 -3
  169. data/spec/fixtures/repos/executable_hooks/README +0 -1
  170. data/spec/fixtures/repos/executable_hooks/deploy/before_restart +0 -72
  171. data/spec/fixtures/repos/executable_hooks_not_executable/README +0 -3
  172. data/spec/fixtures/repos/executable_hooks_not_executable/deploy/before_restart +0 -3
  173. data/spec/fixtures/repos/ey_yml/Gemfile +0 -4
  174. data/spec/fixtures/repos/ey_yml/Gemfile.lock +0 -12
  175. data/spec/fixtures/repos/ey_yml/README +0 -1
  176. data/spec/fixtures/repos/ey_yml/config/ey.yml +0 -18
  177. data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +0 -6
  178. data/spec/fixtures/repos/ey_yml_alt/Gemfile +0 -4
  179. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +0 -12
  180. data/spec/fixtures/repos/ey_yml_alt/README +0 -1
  181. data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +0 -6
  182. data/spec/fixtures/repos/ey_yml_alt/ey.yml +0 -12
  183. data/spec/fixtures/repos/hook_fails/README +0 -1
  184. data/spec/fixtures/repos/hook_fails/deploy/before_deploy.rb +0 -1
  185. data/spec/fixtures/repos/hooks/README +0 -1
  186. data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +0 -1
  187. data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +0 -1
  188. data/spec/fixtures/repos/hooks/deploy/after_deploy.rb +0 -1
  189. data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +0 -1
  190. data/spec/fixtures/repos/hooks/deploy/after_restart.rb +0 -1
  191. data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +0 -1
  192. data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +0 -1
  193. data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +0 -1
  194. data/spec/fixtures/repos/hooks/deploy/before_deploy.rb +0 -1
  195. data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +0 -1
  196. data/spec/fixtures/repos/hooks/deploy/before_restart.rb +0 -1
  197. data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +0 -1
  198. data/spec/fixtures/repos/multi_dep_manager/README +0 -1
  199. data/spec/fixtures/repos/multi_dep_manager/composer.json +0 -5
  200. data/spec/fixtures/repos/multi_dep_manager/composer.lock +0 -462
  201. data/spec/fixtures/repos/multi_dep_manager/package.json +0 -7
  202. data/spec/fixtures/repos/multi_dep_manager/public/index.php +0 -4
  203. data/spec/fixtures/repos/no_ey_config/Gemfile +0 -3
  204. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +0 -10
  205. data/spec/fixtures/repos/no_ey_config/README +0 -1
  206. data/spec/fixtures/repos/no_ey_config/ey.yml +0 -3
  207. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile +0 -3
  208. data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile.lock +0 -10
  209. data/spec/fixtures/repos/no_ey_config_no_warning/README +0 -1
  210. data/spec/fixtures/repos/no_ey_config_no_warning/ey.yml +0 -5
  211. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +0 -4
  212. data/spec/fixtures/repos/no_gemfile_lock/README +0 -1
  213. data/spec/fixtures/repos/no_gemfile_lock/ey.yml +0 -3
  214. data/spec/fixtures/repos/nodejs/README +0 -1
  215. data/spec/fixtures/repos/nodejs/package.json +0 -7
  216. data/spec/fixtures/repos/not_bundled/README +0 -1
  217. data/spec/fixtures/repos/npm_disabled/README +0 -1
  218. data/spec/fixtures/repos/npm_disabled/config/ey.yml +0 -2
  219. data/spec/fixtures/repos/npm_disabled/package.json +0 -7
  220. data/spec/fixtures/repos/php_composer_disabled/README +0 -1
  221. data/spec/fixtures/repos/php_composer_disabled/composer.json +0 -5
  222. data/spec/fixtures/repos/php_composer_disabled/composer.lock +0 -462
  223. data/spec/fixtures/repos/php_composer_disabled/config/ey.yml +0 -2
  224. data/spec/fixtures/repos/php_composer_disabled/public/index.php +0 -4
  225. data/spec/fixtures/repos/php_composer_lock/README +0 -1
  226. data/spec/fixtures/repos/php_composer_lock/composer.json +0 -5
  227. data/spec/fixtures/repos/php_composer_lock/composer.lock +0 -462
  228. data/spec/fixtures/repos/php_composer_lock/public/index.php +0 -4
  229. data/spec/fixtures/repos/php_no_composer_lock/README +0 -1
  230. data/spec/fixtures/repos/php_no_composer_lock/composer.json +0 -21
  231. data/spec/fixtures/repos/php_no_composer_lock/public/index.php +0 -4
  232. data/spec/fixtures/repos/public_system/Gemfile +0 -4
  233. data/spec/fixtures/repos/public_system/Gemfile.lock +0 -12
  234. data/spec/fixtures/repos/public_system/README +0 -5
  235. data/spec/fixtures/repos/public_system/ey.yml +0 -3
  236. data/spec/fixtures/repos/public_system/public/system/cant_touch_this.txt +0 -3
  237. data/spec/fixtures/repos/sqlite3/Gemfile +0 -4
  238. data/spec/fixtures/repos/sqlite3/Gemfile.lock +0 -89
  239. data/spec/fixtures/repos/sqlite3/README +0 -1
  240. data/spec/fixtures/retwisj.war +0 -0
  241. data/spec/fixtures/valid_hook.rb +0 -1
  242. data/spec/git_strategy_spec.rb +0 -34
  243. data/spec/lockfile_parser_spec.rb +0 -126
  244. data/spec/maintenance_spec.rb +0 -44
  245. data/spec/multi_dependency_manager_spec.rb +0 -25
  246. data/spec/nodejs_deploy_spec.rb +0 -30
  247. data/spec/php_deploy_spec.rb +0 -81
  248. data/spec/platform_configure_spec.rb +0 -61
  249. data/spec/rails31_deploy_spec.rb +0 -172
  250. data/spec/restart_spec.rb +0 -43
  251. data/spec/rollback_spec.rb +0 -87
  252. data/spec/server_spec.rb +0 -70
  253. data/spec/services_deploy_spec.rb +0 -165
  254. data/spec/shell_spec.rb +0 -57
  255. data/spec/source/archive_spec.rb +0 -33
  256. data/spec/source/git_spec.rb +0 -44
  257. data/spec/sqlite3_deploy_spec.rb +0 -38
  258. data/spec/support/integration.rb +0 -103
  259. data/spec/support/source_doubles.rb +0 -28
  260. data/spec/support/timecop.rb +0 -5
  261. data/spec/symlink_spec.rb +0 -15
@@ -1,57 +0,0 @@
1
- require 'spec_helper'
2
- require 'tempfile'
3
- require 'timecop'
4
-
5
- describe EY::Serverside::Shell do
6
- let(:output) { StringIO.new }
7
-
8
- if "".respond_to?(:force_encoding)
9
- it "status works for ut8" do
10
- shell = EY::Serverside::Shell.new(:verbose => true, :stdout => output, :stderr => output, :log_path => tmpdir.join("engineyard-serverside-#{Time.now.to_i}-#{$$}.log"), :start_time => Time.local(2008, 9, 1, 12, 10, 25))
11
- shell.status("\u2603".force_encoding("binary"))
12
- end
13
- end
14
-
15
- it "has a timestamp before each line" do
16
- time1 = Time.local(2008, 9, 1, 12, 0, 0)
17
- time2 = Time.local(2008, 9, 1, 12, 3, 5)
18
- time3 = Time.local(2008, 9, 1, 12, 10, 25)
19
-
20
- @shell = EY::Serverside::Shell.new(:verbose => true, :stdout => output, :stderr => output, :log_path => tmpdir.join("engineyard-serverside-#{Time.now.to_i}-#{$$}.log"), :start_time => time1)
21
-
22
- Timecop.freeze(time1) do
23
- @shell.debug('debug')
24
- @shell.notice('notice')
25
- end
26
- Timecop.freeze(time2) do
27
- @shell.status('STATUS')
28
- @shell.debug("multi\nline\ndebug")
29
- @shell.warning("multi\nline\nwarning")
30
- end
31
- Timecop.freeze(time3) do
32
- @shell.substatus("multi\nline\nsubstatus")
33
- end
34
-
35
- tstp_1 = "+ 00s "
36
- tstp_2 = "+ 3m 05s "
37
- tstp_3 = "+10m 25s "
38
- output.rewind
39
- expect(output.read).to eq <<-OUTPUT
40
- #{tstp_1} debug
41
-
42
- \e[1m\e[33m#{tstp_1} !> notice
43
- \e[0m
44
- \e[1m\e[37m#{tstp_2} ~> STATUS
45
- \e[0m#{tstp_2} multi
46
- #{tstp_2} line
47
- #{tstp_2} debug
48
-
49
- \e[1m\e[33m#{tstp_2} !> WARNING: multi
50
- #{tstp_2} !> line
51
- #{tstp_2} !> warning
52
- \e[0m#{tstp_3} ~ multi
53
- #{tstp_3} ~ line
54
- #{tstp_3} ~ substatus
55
- OUTPUT
56
- end
57
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EY::Serverside::Source::Archive do
4
- before do
5
- allow_any_instance_of(described_class).to receive(:runner) { RunnerDouble }
6
- end
7
-
8
- context "source" do
9
- let(:shell) { ShellDouble.new }
10
- subject {
11
- described_class.new(shell,
12
- :uri => "http://server.com/app.war",
13
- :repository_cache => TMPDIR)
14
- }
15
-
16
- it "cleans cache" do
17
- expect(subject).to respond_to(:gc_repository_cache)
18
- end
19
-
20
- it "compares revisions" do
21
- expect(subject.same?("1", "1")).to be
22
- end
23
-
24
- it "understands short log message" do
25
- expect(subject).to respond_to(:short_log_message)
26
- end
27
-
28
- it "updates the cache" do
29
- subject.update_repository_cache
30
- end
31
-
32
- end
33
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EY::Serverside::Source::Git do
4
- before do
5
- allow_any_instance_of(described_class).to receive(:runner) { RunnerDouble }
6
- end
7
-
8
- it "errors when required options are not used" do
9
- expect { described_class.new(nil, {}) }.to raise_error(ArgumentError)
10
- end
11
-
12
- context "source" do
13
- let(:shell) { ShellDouble.new }
14
- subject {
15
- described_class.new(shell,
16
- :uri => "engineyard/engineyard-serverside.git",
17
- :ref => "",
18
- :repository_cache => "cache_dir")
19
- }
20
-
21
- it "creates the correct reivison file command" do
22
- expect(subject.create_revision_file_command("directory/REVISION")).to eq(
23
- "git --git-dir cache_dir/.git --work-tree cache_dir show --pretty=format:\"%H\" | head -1 > \"directory/REVISION\""
24
- )
25
- end
26
-
27
- it "runs gc" do
28
- expect(subject.gc_repository_cache.output).to eq("git --git-dir cache_dir/.git --work-tree cache_dir gc")
29
- expect(shell.messages.last).to eq("Garbage collecting cached git repository to reduce disk usage.")
30
- end
31
-
32
- it "checks if it is the same revision" do
33
- expect(subject.same?("", "")).to be
34
- end
35
-
36
- it "runs a short log message" do
37
- expect(subject.short_log_message("rev")).to eq(
38
- "git --git-dir cache_dir/.git --work-tree cache_dir log --pretty=oneline --abbrev-commit -n 1 'rev'"
39
- )
40
- end
41
-
42
- end
43
-
44
- end
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an application with sqlite3 as the only DB adapter in the Gemfile.lock" do
4
- before(:all) do
5
- @release_path = nil
6
- @shared_path = nil
7
- @framework_env = nil
8
-
9
- deploy_test_application('sqlite3')
10
- @shared_path = @deployer.config.paths.shared
11
- @release_path = @deployer.config.paths.active_release
12
- @framework_env = @deployer.config.framework_env
13
- end
14
-
15
- it 'should symlink database.sqlite3.yml' do
16
- expect(@release_path.join('config', 'database.yml')).to exist
17
- end
18
-
19
- it 'should create database.sqlite3.yml in a shared location' do
20
- expect(@shared_path.join('config', 'database.sqlite3.yml')).to exist
21
- end
22
-
23
- it 'should put a reference to a shared database in database.sqlite3.yml' do
24
- contents = @release_path.join('config', 'database.yml').read
25
- expect(contents).to include(@shared_path.join('databases', "#{@framework_env}.sqlite3").expand_path.to_s)
26
- end
27
-
28
- it 'should create the shared database' do
29
- expect(@shared_path.join('databases', "#{@framework_env}.sqlite3")).to exist
30
- end
31
-
32
- it 'should contain valid yaml config' do
33
- config = YAML.load_file(@release_path.join('config', 'database.yml'))
34
- expect(config[@framework_env]['adapter']).to eq('sqlite3')
35
- expect(config[@framework_env]['database']).to eq(@shared_path.join('databases', "#{@framework_env}.sqlite3").expand_path.to_s)
36
- end
37
-
38
- end
@@ -1,103 +0,0 @@
1
- class FullTestDeploy < EY::Serverside::Deploy
2
- attr_reader :commands
3
-
4
- class << self
5
- attr_accessor :on_create_callback
6
- end
7
-
8
- def self.realnew(servers, config, shell)
9
- on_create_callback.call(config) if on_create_callback # holy hax batman, this is insanity
10
- super
11
- end
12
-
13
- def initialize(*)
14
- super
15
- @commands = []
16
- end
17
-
18
- # passwordless sudo is neither guaranteed nor desired
19
- def sudo(cmd)
20
- run(cmd)
21
- end
22
-
23
- def run(cmd)
24
- @commands << cmd
25
- super
26
- end
27
-
28
- def restart_command
29
- Escape.shell_command(["echo", super]) + "> #{config.paths.active_release}/restart"
30
- end
31
-
32
- # we're probably running this spec under bundler, but a real
33
- # deploy does not
34
- def bundle
35
- my_env = ENV.to_hash
36
- super
37
- ensure
38
- ENV.replace(my_env)
39
- end
40
-
41
- end
42
-
43
- class EY::Serverside::Deploy
44
- class << self
45
- alias_method :realnew, :new
46
- attr_reader :config, :deployer
47
- end
48
- def self.new(servers, cfg, shell)
49
- @config = cfg
50
- @deployer = FullTestDeploy.realnew(servers, cfg, shell)
51
- end
52
- end
53
-
54
- class EY::Serverside::Source::IntegrationSpec < EY::Serverside::Source
55
- attr_reader :source_repo
56
-
57
- def initialize(*a)
58
- super
59
- @source_repo = Pathname.new(uri) if uri # doesn't exist for rollback
60
- end
61
-
62
- def update_repository_cache
63
- shell.status "Checking out #{@ref}"
64
- install_git_base
65
- copy_fixture_repo_files
66
- end
67
-
68
- def create_revision_file_command(revision_path)
69
- "echo '#{@ref}' > #{revision_path}"
70
- end
71
-
72
- def short_log_message(revision)
73
- "ref: #{revision} - Short log message"
74
- end
75
-
76
- def gc_repository_cache
77
- shell.status "Garbage collecting cached git repository to reduce disk usage."
78
- end
79
-
80
- def same?(prev, active, path)
81
- prev == active # for our tests, being the same commit is sufficient
82
- end
83
-
84
- private
85
-
86
- def install_git_base
87
- repository_cache.mkpath
88
- git_base = FIXTURES_DIR.join('gitrepo.tar.gz')
89
- shell.substatus "Test helpers copying base repo into #{repository_cache}"
90
- shell.logged_system "tar xzf #{git_base} --strip-components 1 -C #{repository_cache}"
91
- end
92
-
93
- def copy_fixture_repo_files
94
- if source_repo.exist?
95
- shell.substatus "Test helpers copying repo fixture from #{source_repo}/ to #{repository_cache}"
96
- # This uses a ruby method instead of shelling out because I was having
97
- # trouble getting cp -R to behave consistently between distros.
98
- system "rsync -aq #{source_repo}/ #{repository_cache}"
99
- else
100
- raise "Mock repo #{source_repo.inspect} does not exist. Path should be absolute. e.g. FIXTURES_DIR.join('repos','example')"
101
- end
102
- end
103
- end
@@ -1,28 +0,0 @@
1
- class ShellDouble
2
- attr_reader :messages
3
- def initialize
4
- @messages = []
5
- end
6
-
7
- def status(message)
8
- @messages << message
9
- end
10
- end
11
-
12
- class RunnerDouble
13
- def self.run(cmd, shell, server=nil)
14
- new(cmd)
15
- end
16
-
17
- def initialize(cmd)
18
- @cmd = cmd
19
- end
20
-
21
- def output
22
- @cmd
23
- end
24
-
25
- def success?
26
- true
27
- end
28
- end
@@ -1,5 +0,0 @@
1
- require 'timecop'
2
-
3
- RSpec.configure do |config|
4
- config.after(:each) { Timecop.return }
5
- end
@@ -1,15 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Deploying an application with conflicting directories" do
4
- before(:all) do
5
- deploy_test_application('public_system')
6
- end
7
-
8
- it "does not remove the repository's public/system directory" do
9
- expect(deploy_dir.join('current', 'public', 'system', 'cant_touch_this.txt')).to exist
10
- end
11
-
12
- it "warns that maintenance pages are broken" do
13
- expect(read_output).to include("remove 'public/system' from your repository")
14
- end
15
- end