shipit-engine 0.38.0 → 0.40.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 (323) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +48 -4
  3. data/Rakefile +2 -1
  4. data/app/assets/javascripts/shipit/continuous_delivery_schedule.js.coffee +15 -0
  5. data/app/controllers/concerns/shipit/active_model_serializers_patch.rb +1 -0
  6. data/app/controllers/concerns/shipit/api/cacheable.rb +1 -0
  7. data/app/controllers/concerns/shipit/api/paginable.rb +3 -2
  8. data/app/controllers/concerns/shipit/api/rendering.rb +1 -0
  9. data/app/controllers/concerns/shipit/authentication.rb +1 -0
  10. data/app/controllers/concerns/shipit/pagination.rb +3 -2
  11. data/app/controllers/shipit/api/base_controller.rb +12 -10
  12. data/app/controllers/shipit/api/ccmenu_controller.rb +2 -1
  13. data/app/controllers/shipit/api/commits_controller.rb +2 -3
  14. data/app/controllers/shipit/api/deploys_controller.rb +6 -1
  15. data/app/controllers/shipit/api/hooks_controller.rb +4 -3
  16. data/app/controllers/shipit/api/locks_controller.rb +1 -0
  17. data/app/controllers/shipit/api/merge_requests_controller.rb +6 -5
  18. data/app/controllers/shipit/api/outputs_controller.rb +1 -0
  19. data/app/controllers/shipit/api/release_statuses_controller.rb +2 -1
  20. data/app/controllers/shipit/api/rollbacks_controller.rb +1 -0
  21. data/app/controllers/shipit/api/stacks_controller.rb +15 -14
  22. data/app/controllers/shipit/api/tasks_controller.rb +6 -5
  23. data/app/controllers/shipit/api_clients_controller.rb +6 -7
  24. data/app/controllers/shipit/ccmenu_url_controller.rb +3 -2
  25. data/app/controllers/shipit/commit_checks_controller.rb +2 -1
  26. data/app/controllers/shipit/commits_controller.rb +1 -0
  27. data/app/controllers/shipit/continuous_delivery_schedules_controller.rb +42 -0
  28. data/app/controllers/shipit/deploys_controller.rb +6 -5
  29. data/app/controllers/shipit/github_authentication_controller.rb +6 -0
  30. data/app/controllers/shipit/merge_requests_controller.rb +1 -0
  31. data/app/controllers/shipit/merge_status_controller.rb +30 -26
  32. data/app/controllers/shipit/release_statuses_controller.rb +1 -0
  33. data/app/controllers/shipit/repositories_controller.rb +4 -7
  34. data/app/controllers/shipit/rollbacks_controller.rb +2 -1
  35. data/app/controllers/shipit/shipit_controller.rb +1 -0
  36. data/app/controllers/shipit/stacks_controller.rb +27 -31
  37. data/app/controllers/shipit/status_controller.rb +1 -0
  38. data/app/controllers/shipit/tasks_controller.rb +3 -1
  39. data/app/controllers/shipit/webhooks_controller.rb +2 -1
  40. data/app/helpers/shipit/api_clients_helper.rb +1 -0
  41. data/app/helpers/shipit/chunks_helper.rb +3 -1
  42. data/app/helpers/shipit/deploys_helper.rb +7 -3
  43. data/app/helpers/shipit/github_url_helper.rb +5 -4
  44. data/app/helpers/shipit/merge_status_helper.rb +1 -0
  45. data/app/helpers/shipit/shipit_helper.rb +11 -10
  46. data/app/helpers/shipit/stacks_helper.rb +10 -11
  47. data/app/helpers/shipit/tasks_helper.rb +2 -1
  48. data/app/jobs/shipit/background_job/unique.rb +3 -2
  49. data/app/jobs/shipit/background_job.rb +9 -1
  50. data/app/jobs/shipit/cache_deploy_spec_job.rb +2 -1
  51. data/app/jobs/shipit/chunk_rollup_job.rb +1 -0
  52. data/app/jobs/shipit/clear_git_cache_job.rb +1 -0
  53. data/app/jobs/shipit/continuous_delivery_job.rb +5 -0
  54. data/app/jobs/shipit/create_on_github_job.rb +1 -0
  55. data/app/jobs/shipit/create_release_statuses_job.rb +2 -0
  56. data/app/jobs/shipit/deferred_touch_job.rb +1 -0
  57. data/app/jobs/shipit/deliver_hook_job.rb +1 -0
  58. data/app/jobs/shipit/destroy_job.rb +1 -0
  59. data/app/jobs/shipit/destroy_repository_job.rb +1 -0
  60. data/app/jobs/shipit/destroy_stack_job.rb +36 -15
  61. data/app/jobs/shipit/emit_event_job.rb +1 -0
  62. data/app/jobs/shipit/fetch_commit_stats_job.rb +1 -0
  63. data/app/jobs/shipit/fetch_deployed_revision_job.rb +1 -0
  64. data/app/jobs/shipit/github_sync_job.rb +4 -2
  65. data/app/jobs/shipit/mark_deploy_healthy_job.rb +1 -0
  66. data/app/jobs/shipit/perform_commit_checks_job.rb +1 -0
  67. data/app/jobs/shipit/perform_task_job.rb +1 -0
  68. data/app/jobs/shipit/process_merge_requests_job.rb +2 -0
  69. data/app/jobs/shipit/purge_old_deliveries_job.rb +1 -0
  70. data/app/jobs/shipit/reap_dead_tasks_job.rb +1 -0
  71. data/app/jobs/shipit/refresh_check_runs_job.rb +1 -0
  72. data/app/jobs/shipit/refresh_github_user_job.rb +1 -0
  73. data/app/jobs/shipit/refresh_merge_request_job.rb +1 -0
  74. data/app/jobs/shipit/refresh_statuses_job.rb +1 -0
  75. data/app/jobs/shipit/setup_github_hook_job.rb +1 -0
  76. data/app/jobs/shipit/update_estimated_deploy_duration_job.rb +1 -0
  77. data/app/jobs/shipit/update_github_last_deployed_ref_job.rb +6 -7
  78. data/app/models/concerns/shipit/deferred_touch.rb +5 -2
  79. data/app/models/shipit/anonymous_user.rb +4 -5
  80. data/app/models/shipit/api_client.rb +5 -3
  81. data/app/models/shipit/application_record.rb +1 -0
  82. data/app/models/shipit/check_run.rb +7 -6
  83. data/app/models/shipit/command_line_user.rb +4 -5
  84. data/app/models/shipit/commit.rb +46 -32
  85. data/app/models/shipit/commit_checks.rb +4 -2
  86. data/app/models/shipit/commit_deployment.rb +7 -5
  87. data/app/models/shipit/commit_deployment_status.rb +5 -3
  88. data/app/models/shipit/commit_message.rb +2 -0
  89. data/app/models/shipit/continuous_delivery_schedule.rb +84 -0
  90. data/app/models/shipit/delivery.rb +5 -4
  91. data/app/models/shipit/deploy.rb +46 -26
  92. data/app/models/shipit/deploy_spec/bundler_discovery.rb +3 -1
  93. data/app/models/shipit/deploy_spec/capistrano_discovery.rb +1 -0
  94. data/app/models/shipit/deploy_spec/file_system.rb +48 -17
  95. data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +4 -3
  96. data/app/models/shipit/deploy_spec/lerna_discovery.rb +32 -31
  97. data/app/models/shipit/deploy_spec/npm_discovery.rb +18 -13
  98. data/app/models/shipit/deploy_spec/pypi_discovery.rb +5 -4
  99. data/app/models/shipit/deploy_spec/rubygems_discovery.rb +1 -0
  100. data/app/models/shipit/deploy_spec.rb +25 -30
  101. data/app/models/shipit/deploy_stats.rb +6 -1
  102. data/app/models/shipit/duration.rb +5 -3
  103. data/app/models/shipit/ephemeral_commit_checks.rb +8 -7
  104. data/app/models/shipit/github_hook.rb +1 -0
  105. data/app/models/shipit/github_status.rb +1 -0
  106. data/app/models/shipit/hook.rb +9 -7
  107. data/app/models/shipit/membership.rb +1 -0
  108. data/app/models/shipit/merge_request.rb +26 -16
  109. data/app/models/shipit/output_chunk.rb +1 -0
  110. data/app/models/shipit/provisioning_handler.rb +1 -0
  111. data/app/models/shipit/pull_request.rb +2 -2
  112. data/app/models/shipit/record.rb +1 -0
  113. data/app/models/shipit/release_status.rb +4 -3
  114. data/app/models/shipit/repository.rb +12 -11
  115. data/app/models/shipit/review_stack.rb +3 -1
  116. data/app/models/shipit/review_stack_provisioning_queue.rb +2 -2
  117. data/app/models/shipit/rollback.rb +2 -0
  118. data/app/models/shipit/stack.rb +71 -60
  119. data/app/models/shipit/status/common.rb +1 -0
  120. data/app/models/shipit/status/group.rb +5 -3
  121. data/app/models/shipit/status/missing.rb +2 -1
  122. data/app/models/shipit/status/unknown.rb +1 -0
  123. data/app/models/shipit/status.rb +5 -4
  124. data/app/models/shipit/task.rb +40 -31
  125. data/app/models/shipit/task_definition.rb +10 -7
  126. data/app/models/shipit/task_execution_strategy/default.rb +13 -13
  127. data/app/models/shipit/team.rb +13 -12
  128. data/app/models/shipit/undeployed_commit.rb +8 -3
  129. data/app/models/shipit/unlimited_api_client.rb +2 -2
  130. data/app/models/shipit/user.rb +23 -16
  131. data/app/models/shipit/variable_definition.rb +2 -1
  132. data/app/models/shipit/webhooks/handlers/check_suite_handler.rb +1 -0
  133. data/app/models/shipit/webhooks/handlers/handler.rb +1 -0
  134. data/app/models/shipit/webhooks/handlers/membership_handler.rb +1 -0
  135. data/app/models/shipit/webhooks/handlers/pull_request/assigned_handler.rb +10 -10
  136. data/app/models/shipit/webhooks/handlers/pull_request/closed_handler.rb +1 -1
  137. data/app/models/shipit/webhooks/handlers/pull_request/edited_handler.rb +10 -10
  138. data/app/models/shipit/webhooks/handlers/pull_request/label_capturing_handler.rb +2 -2
  139. data/app/models/shipit/webhooks/handlers/pull_request/labeled_handler.rb +2 -2
  140. data/app/models/shipit/webhooks/handlers/pull_request/reopened_handler.rb +1 -1
  141. data/app/models/shipit/webhooks/handlers/pull_request/review_stack_adapter.rb +3 -3
  142. data/app/models/shipit/webhooks/handlers/pull_request/unlabeled_handler.rb +1 -1
  143. data/app/models/shipit/webhooks/handlers/push_handler.rb +2 -1
  144. data/app/models/shipit/webhooks/handlers/status_handler.rb +1 -0
  145. data/app/models/shipit/webhooks.rb +3 -2
  146. data/app/serializers/concerns/shipit/conditional_attributes.rb +1 -0
  147. data/app/serializers/shipit/anonymous_user_serializer.rb +1 -0
  148. data/app/serializers/shipit/command_line_user_serializer.rb +1 -0
  149. data/app/serializers/shipit/commit_serializer.rb +2 -1
  150. data/app/serializers/shipit/deploy_serializer.rb +1 -0
  151. data/app/serializers/shipit/hook_serializer.rb +1 -0
  152. data/app/serializers/shipit/merge_request_serializer.rb +2 -1
  153. data/app/serializers/shipit/rollback_serializer.rb +1 -0
  154. data/app/serializers/shipit/short_commit_serializer.rb +1 -0
  155. data/app/serializers/shipit/stack_serializer.rb +4 -3
  156. data/app/serializers/shipit/tail_task_serializer.rb +4 -1
  157. data/app/serializers/shipit/task_serializer.rb +1 -0
  158. data/app/serializers/shipit/user_serializer.rb +1 -0
  159. data/app/validators/ascii_only_validator.rb +4 -3
  160. data/app/validators/subset_validator.rb +1 -0
  161. data/app/views/shipit/_variables.html.erb +1 -1
  162. data/app/views/shipit/ccmenu/project.xml.builder +2 -1
  163. data/app/views/shipit/continuous_delivery_schedules/show.html.erb +59 -0
  164. data/app/views/shipit/merge_status/failure.html.erb +1 -1
  165. data/app/views/shipit/missing_settings.html.erb +1 -1
  166. data/app/views/shipit/stacks/_settings_form.erb +1 -0
  167. data/config/initializers/inflections.rb +1 -0
  168. data/config/locales/en.yml +1 -0
  169. data/config/routes.rb +21 -18
  170. data/config/secrets.development.example.yml +1 -1
  171. data/config/secrets.development.shopify.yml +1 -1
  172. data/db/migrate/20240821003007_add_continuous_delivery_schedules.rb +13 -0
  173. data/db/migrate/20250207203053_embiggen_github_ids.rb +8 -0
  174. data/lib/shipit/cast_value.rb +1 -0
  175. data/lib/shipit/command.rb +29 -9
  176. data/lib/shipit/commands.rb +4 -2
  177. data/lib/shipit/csv_serializer.rb +3 -0
  178. data/lib/shipit/deploy_commands.rb +2 -1
  179. data/lib/shipit/engine.rb +6 -5
  180. data/lib/shipit/environment_variables.rb +2 -0
  181. data/lib/shipit/first_parent_commits_iterator.rb +2 -3
  182. data/lib/shipit/flock.rb +11 -9
  183. data/lib/shipit/github_app.rb +14 -16
  184. data/lib/shipit/github_http_cache_middleware.rb +1 -0
  185. data/lib/shipit/null_serializer.rb +1 -0
  186. data/lib/shipit/octokit_check_runs.rb +2 -3
  187. data/lib/shipit/octokit_iterator.rb +2 -0
  188. data/lib/shipit/paginator.rb +1 -0
  189. data/lib/shipit/rollback_commands.rb +2 -1
  190. data/lib/shipit/same_site_cookie_middleware.rb +1 -0
  191. data/lib/shipit/simple_message_verifier.rb +1 -0
  192. data/lib/shipit/stack_commands.rb +35 -27
  193. data/lib/shipit/stat.rb +1 -0
  194. data/lib/shipit/task_commands.rb +7 -6
  195. data/lib/shipit/version.rb +2 -1
  196. data/lib/shipit.rb +30 -17
  197. data/lib/tasks/cron.rake +2 -1
  198. data/lib/tasks/dev.rake +3 -2
  199. data/lib/tasks/shipit.rake +3 -2
  200. data/lib/tasks/teams.rake +3 -2
  201. data/test/controllers/api/base_controller_test.rb +1 -0
  202. data/test/controllers/api/ccmenu_controller_test.rb +4 -3
  203. data/test/controllers/api/commits_controller_test.rb +1 -0
  204. data/test/controllers/api/deploys_controller_test.rb +26 -1
  205. data/test/controllers/api/hooks_controller_test.rb +6 -5
  206. data/test/controllers/api/locks_controller_test.rb +1 -0
  207. data/test/controllers/api/merge_requests_controller_test.rb +1 -0
  208. data/test/controllers/api/outputs_controller_test.rb +1 -0
  209. data/test/controllers/api/release_statuses_controller_test.rb +4 -3
  210. data/test/controllers/api/rollback_controller_test.rb +3 -2
  211. data/test/controllers/api/stacks_controller_test.rb +13 -12
  212. data/test/controllers/api/tasks_controller_test.rb +7 -6
  213. data/test/controllers/api_clients_controller_test.rb +10 -10
  214. data/test/controllers/ccmenu_controller_test.rb +1 -0
  215. data/test/controllers/commit_checks_controller_test.rb +1 -0
  216. data/test/controllers/commits_controller_test.rb +9 -8
  217. data/test/controllers/continuous_delivery_schedules_controller_test.rb +66 -0
  218. data/test/controllers/deploys_controller_test.rb +4 -2
  219. data/test/controllers/github_authentication_controller_test.rb +6 -4
  220. data/test/controllers/merge_requests_controller_test.rb +1 -0
  221. data/test/controllers/merge_status_controller_test.rb +5 -4
  222. data/test/controllers/release_statuses_controller_test.rb +1 -0
  223. data/test/controllers/repositories_controller_test.rb +6 -5
  224. data/test/controllers/rollbacks_controller_test.rb +3 -2
  225. data/test/controllers/stacks_controller_test.rb +8 -6
  226. data/test/controllers/status_controller_test.rb +1 -0
  227. data/test/controllers/tasks_controller_test.rb +13 -5
  228. data/test/controllers/webhooks_controller_test.rb +10 -9
  229. data/test/dummy/config/application.rb +2 -1
  230. data/test/dummy/config/initializers/0_load_development_secrets.rb +2 -2
  231. data/test/dummy/config/secrets.development.json +3 -0
  232. data/test/dummy/config/secrets.test.json +21 -0
  233. data/test/dummy/db/schema.rb +33 -6
  234. data/test/fixtures/shipit/commits.yml +7 -7
  235. data/test/fixtures/shipit/stacks.yml +4 -10
  236. data/test/fixtures/shipit/tasks.yml +3 -3
  237. data/test/helpers/api_helper.rb +2 -3
  238. data/test/helpers/fixture_aliases_helper.rb +1 -0
  239. data/test/helpers/hooks_helper.rb +1 -0
  240. data/test/helpers/json_helper.rb +4 -3
  241. data/test/helpers/links_helper.rb +2 -1
  242. data/test/helpers/payloads_helper.rb +1 -0
  243. data/test/helpers/queries_helper.rb +4 -3
  244. data/test/jobs/cache_deploy_spec_job_test.rb +3 -2
  245. data/test/jobs/chunk_rollup_job_test.rb +3 -2
  246. data/test/jobs/deliver_hook_job_test.rb +1 -0
  247. data/test/jobs/destroy_repository_job_test.rb +1 -0
  248. data/test/jobs/destroy_stack_job_test.rb +12 -0
  249. data/test/jobs/emit_event_job_test.rb +1 -0
  250. data/test/jobs/fetch_commit_stats_job_test.rb +1 -0
  251. data/test/jobs/fetch_deployed_revision_job_test.rb +1 -0
  252. data/test/jobs/github_sync_job_test.rb +22 -21
  253. data/test/jobs/mark_deploy_healthy_job_test.rb +1 -0
  254. data/test/jobs/perform_task_job_test.rb +3 -3
  255. data/test/jobs/process_merge_requests_job_test.rb +7 -6
  256. data/test/jobs/purge_old_deliveries_job_test.rb +1 -0
  257. data/test/jobs/reap_dead_tasks_job_test.rb +1 -0
  258. data/test/jobs/refresh_github_user_job_test.rb +1 -0
  259. data/test/jobs/refresh_status_job_test.rb +1 -0
  260. data/test/jobs/shipit/background_job_test.rb +35 -0
  261. data/test/jobs/shipit/continuous_delivery_job_test.rb +31 -0
  262. data/test/jobs/unique_job_test.rb +3 -1
  263. data/test/jobs/update_github_last_deployed_ref_job_test.rb +1 -0
  264. data/test/middleware/same_site_cookie_middleware_test.rb +2 -2
  265. data/test/models/api_client_test.rb +1 -0
  266. data/test/models/commit_checks_test.rb +2 -1
  267. data/test/models/commit_deployment_status_test.rb +2 -2
  268. data/test/models/commit_deployment_test.rb +4 -3
  269. data/test/models/commits_test.rb +72 -70
  270. data/test/models/delivery_test.rb +3 -2
  271. data/test/models/deploy_spec_test.rb +113 -109
  272. data/test/models/deploy_stats_test.rb +1 -0
  273. data/test/models/deploys_test.rb +65 -56
  274. data/test/models/duration_test.rb +1 -1
  275. data/test/models/github_hook_test.rb +1 -0
  276. data/test/models/hook_test.rb +7 -4
  277. data/test/models/membership_test.rb +1 -0
  278. data/test/models/merge_request_test.rb +26 -20
  279. data/test/models/release_statuses_test.rb +2 -1
  280. data/test/models/rollbacks_test.rb +4 -3
  281. data/test/models/shipit/check_run_test.rb +16 -15
  282. data/test/models/shipit/continuous_delivery_schedule_test.rb +109 -0
  283. data/test/models/shipit/deploy_spec/file_system_test.rb +54 -10
  284. data/test/models/shipit/pull_request_test.rb +9 -9
  285. data/test/models/shipit/repository_test.rb +3 -2
  286. data/test/models/shipit/review_stack_provisioning_queue_test.rb +2 -2
  287. data/test/models/shipit/{stacks_test.rb → stack_test.rb} +48 -34
  288. data/test/models/shipit/webhooks/handlers/pull_request/closed_handler_test.rb +36 -34
  289. data/test/models/shipit/webhooks/handlers/pull_request/label_capturing_handler_test.rb +28 -28
  290. data/test/models/shipit/webhooks/handlers/pull_request/labeled_handler_test.rb +42 -42
  291. data/test/models/shipit/webhooks/handlers/pull_request/opened_handler_test.rb +33 -33
  292. data/test/models/shipit/webhooks/handlers/pull_request/reopened_handler_test.rb +37 -37
  293. data/test/models/shipit/webhooks/handlers/pull_request/review_stack_adapter_test.rb +1 -1
  294. data/test/models/shipit/webhooks/handlers/pull_request/unlabeled_handler_test.rb +44 -42
  295. data/test/models/shipit/webhooks/handlers_test.rb +1 -0
  296. data/test/models/status/group_test.rb +3 -2
  297. data/test/models/status/missing_test.rb +1 -0
  298. data/test/models/status_test.rb +2 -1
  299. data/test/models/task_definitions_test.rb +7 -6
  300. data/test/models/tasks_test.rb +5 -4
  301. data/test/models/team_test.rb +5 -4
  302. data/test/models/undeployed_commits_test.rb +10 -9
  303. data/test/models/users_test.rb +29 -20
  304. data/test/test_command_integration.rb +1 -1
  305. data/test/test_helper.rb +12 -10
  306. data/test/unit/anonymous_user_serializer_test.rb +1 -0
  307. data/test/unit/command_test.rb +10 -1
  308. data/test/unit/commands_test.rb +1 -0
  309. data/test/unit/commit_serializer_test.rb +1 -0
  310. data/test/unit/csv_serializer_test.rb +3 -2
  311. data/test/unit/deploy_commands_test.rb +33 -23
  312. data/test/unit/deploy_serializer_test.rb +1 -0
  313. data/test/unit/environment_variables_test.rb +2 -1
  314. data/test/unit/github_app_test.rb +11 -10
  315. data/test/unit/github_apps_test.rb +19 -18
  316. data/test/unit/github_url_helper_test.rb +1 -0
  317. data/test/unit/line_buffer_test.rb +1 -1
  318. data/test/unit/rollback_commands_test.rb +2 -1
  319. data/test/unit/shipit_helper_test.rb +1 -0
  320. data/test/unit/shipit_test.rb +47 -1
  321. data/test/unit/user_serializer_test.rb +1 -0
  322. data/test/unit/variable_definition_test.rb +4 -3
  323. metadata +61 -47
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -66,8 +67,8 @@ module Shipit
66
67
  deploy_stack = runnable_deploy.stack
67
68
 
68
69
  Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock).twice
69
- .raises(Shipit::Command::TimedOut, 'Deploy timed out')
70
- .then.raises(Shipit::Command::Error, "Second command error failure")
70
+ .raises(Shipit::Command::TimedOut, 'Deploy timed out')
71
+ .then.raises(Shipit::Command::Error, "Second command error failure")
71
72
 
72
73
  perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
73
74
  runnable_deploy.enqueue
@@ -90,8 +91,8 @@ module Shipit
90
91
  deploy_stack = runnable_deploy.stack
91
92
 
92
93
  Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock).twice
93
- .raises(Shipit::Command::Error, 'Deploy failed')
94
- .then.raises(Shipit::Command::Error, "Second deploy failed")
94
+ .raises(Shipit::Command::Error, 'Deploy failed')
95
+ .then.raises(Shipit::Command::Error, "Second deploy failed")
95
96
 
96
97
  perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
97
98
  runnable_deploy.enqueue
@@ -114,8 +115,8 @@ module Shipit
114
115
  deploy_stack = runnable_deploy.stack
115
116
 
116
117
  Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock).twice
117
- .raises(StandardError, 'Deploy failed')
118
- .then.raises(StandardError, "Second deploy failed")
118
+ .raises(StandardError, 'Deploy failed')
119
+ .then.raises(StandardError, "Second deploy failed")
119
120
 
120
121
  perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
121
122
  runnable_deploy.enqueue
@@ -138,7 +139,7 @@ module Shipit
138
139
  runnable_deploy.update!(retry_attempt: 0, max_retries: 0)
139
140
 
140
141
  Shipit::Deploy.any_instance.expects(:acquire_git_cache_lock)
141
- .raises(Shipit::Command::TimedOut, 'Deploy timed out')
142
+ .raises(Shipit::Command::TimedOut, 'Deploy timed out')
142
143
 
143
144
  perform_enqueued_jobs(only: Shipit::PerformTaskJob) do
144
145
  runnable_deploy.enqueue
@@ -157,8 +158,8 @@ module Shipit
157
158
  DeploySpec.any_instance.expects(:retries_on_rollback).returns(1)
158
159
 
159
160
  Shipit::Command.any_instance.expects(:run).twice
160
- .raises(Shipit::Command::TimedOut, 'Rollback timed out')
161
- .then.raises(Shipit::Command::Error, "Second command error failure")
161
+ .raises(Shipit::Command::TimedOut, 'Rollback timed out')
162
+ .then.raises(Shipit::Command::Error, "Second command error failure")
162
163
 
163
164
  first_rollback = nil
164
165
 
@@ -185,8 +186,8 @@ module Shipit
185
186
  DeploySpec.any_instance.expects(:retries_on_rollback).returns(0)
186
187
 
187
188
  Shipit::Command.any_instance.expects(:run).once
188
- .raises(Shipit::Command::TimedOut, 'Rollback timed out')
189
- .then.raises(Shipit::Command::Error, "Second command error failure")
189
+ .raises(Shipit::Command::TimedOut, 'Rollback timed out')
190
+ .then.raises(Shipit::Command::Error, "Second command error failure")
190
191
 
191
192
  first_rollback = nil
192
193
 
@@ -208,7 +209,7 @@ module Shipit
208
209
 
209
210
  deploy = stack.deploys.create!(
210
211
  since_commit: first,
211
- until_commit: third,
212
+ until_commit: third
212
213
  )
213
214
 
214
215
  assert_equal 13, deploy.additions
@@ -222,7 +223,7 @@ module Shipit
222
223
 
223
224
  deploy = stack.deploys.new(
224
225
  since_commit: first,
225
- until_commit: last,
226
+ until_commit: last
226
227
  )
227
228
 
228
229
  commits = deploy.commits
@@ -239,7 +240,7 @@ module Shipit
239
240
 
240
241
  deploy = stack.deploys.new(
241
242
  since_commit: first,
242
- until_commit: last,
243
+ until_commit: last
243
244
  )
244
245
 
245
246
  assert_equal [4, 3, 2], deploy.commits.pluck(:id)
@@ -260,7 +261,7 @@ module Shipit
260
261
 
261
262
  expect_event(deploy)
262
263
  deploy.status = 'running'
263
- expect_hook(:deploy, deploy.stack, status: 'success', deploy: deploy, stack: deploy.stack) do
264
+ expect_hook(:deploy, deploy.stack, status: 'success', deploy:, stack: deploy.stack) do
264
265
  deploy.complete!
265
266
  end
266
267
  end
@@ -280,7 +281,7 @@ module Shipit
280
281
 
281
282
  expect_event(deploy)
282
283
  deploy.status = 'running'
283
- expect_hook(:deploy, deploy.stack, status: 'failed', deploy: deploy, stack: deploy.stack) do
284
+ expect_hook(:deploy, deploy.stack, status: 'failed', deploy:, stack: deploy.stack) do
284
285
  deploy.failure!
285
286
  end
286
287
  end
@@ -300,7 +301,7 @@ module Shipit
300
301
 
301
302
  expect_event(deploy)
302
303
  deploy.status = 'running'
303
- expect_hook(:deploy, deploy.stack, status: 'error', deploy: deploy, stack: deploy.stack) do
304
+ expect_hook(:deploy, deploy.stack, status: 'error', deploy:, stack: deploy.stack) do
304
305
  deploy.error!
305
306
  end
306
307
  end
@@ -320,7 +321,7 @@ module Shipit
320
321
 
321
322
  expect_event(deploy)
322
323
  deploy.status = 'pending'
323
- expect_hook(:deploy, deploy.stack, status: 'running', deploy: deploy, stack: deploy.stack) do
324
+ expect_hook(:deploy, deploy.stack, status: 'running', deploy:, stack: deploy.stack) do
324
325
  deploy.run!
325
326
  end
326
327
  end
@@ -339,7 +340,7 @@ module Shipit
339
340
  shipit = shipit_stacks(:shipit)
340
341
  deploy = shipit.deploys.build(
341
342
  since_commit: shipit.commits.first,
342
- until_commit: shipit.commits.last,
343
+ until_commit: shipit.commits.last
343
344
  )
344
345
  deploy.stubs(:merge_request_head_for_commit).returns(nil)
345
346
 
@@ -436,6 +437,7 @@ module Shipit
436
437
  @deploy = shipit_deploys(:shipit_running)
437
438
  @deploy.ping
438
439
  @deploy.pid = 42
440
+ @deploy.env = { 'CUSTOM_VAR' => 'value' }
439
441
  @deploy.abort!(rollback_once_aborted: true, aborted_by: @user)
440
442
 
441
443
  assert_difference -> { @stack.rollbacks.count }, 1 do
@@ -443,6 +445,9 @@ module Shipit
443
445
  @deploy.aborted!
444
446
  end
445
447
  end
448
+
449
+ rollback = @stack.rollbacks.last
450
+ assert_equal({ 'CUSTOM_VAR' => 'value' }, rollback.env)
446
451
  end
447
452
 
448
453
  test "transitioning to aborted schedule a rollback to the designated deploy if set" do
@@ -450,6 +455,7 @@ module Shipit
450
455
  @deploy = shipit_deploys(:shipit_running)
451
456
  @deploy.ping
452
457
  @deploy.pid = 42
458
+ @deploy.env = { 'CUSTOM_VAR' => 'value' }
453
459
  @deploy.abort!(rollback_once_aborted: true, rollback_once_aborted_to: @rollback_to, aborted_by: @user)
454
460
 
455
461
  assert_difference -> { @stack.rollbacks.count }, 1 do
@@ -457,6 +463,9 @@ module Shipit
457
463
  @deploy.aborted!
458
464
  end
459
465
  end
466
+
467
+ rollback = @stack.rollbacks.last
468
+ assert_equal({ 'CUSTOM_VAR' => 'value' }, rollback.env)
460
469
  end
461
470
 
462
471
  test "transitioning to aborted locks the stack if a rollback is scheduled" do
@@ -513,18 +522,18 @@ module Shipit
513
522
 
514
523
  def create_test_stack(repository: Shipit::Repository.find_or_create_by!(owner: "shopify-test", name: "shipit-engine-test"))
515
524
  Shipit::Stack.create(
516
- repository: repository,
525
+ repository:,
517
526
  environment: 'production',
518
527
  branch: "master",
519
528
  merge_queue_enabled: true,
520
529
  created_at: "2019-01-01 00:00:00",
521
- updated_at: "2019-01-02 10:10:10",
530
+ updated_at: "2019-01-02 10:10:10"
522
531
  )
523
532
  end
524
533
 
525
534
  def create_test_commit(stack_id:, user_id:)
526
535
  Shipit::Commit.new(
527
- stack_id: stack_id,
536
+ stack_id:,
528
537
  author_id: user_id,
529
538
  sha: SecureRandom.hex(20),
530
539
  additions: 2,
@@ -532,27 +541,27 @@ module Shipit
532
541
  committer_id: user_id,
533
542
  message: "Some commit message.",
534
543
  authored_at: "2019-01-02 10:11:10",
535
- committed_at: "2019-01-02 10:11:10",
544
+ committed_at: "2019-01-02 10:11:10"
536
545
  )
537
546
  end
538
547
 
539
548
  def create_test_status(commit_id:, stack_id:, state: "success")
540
549
  Shipit::Status.new(
541
550
  description: "Description for commit #{commit_id}",
542
- stack_id: stack_id,
543
- commit_id: commit_id,
544
- state: state,
551
+ stack_id:,
552
+ commit_id:,
553
+ state:
545
554
  )
546
555
  end
547
556
 
548
557
  def create_test_deploy(stack_id:, user_id:, since_commit_id:, until_commit_id: since_commit_id)
549
558
  Shipit::Deploy.new(
550
- stack_id: stack_id,
551
- user_id: user_id,
552
- since_commit_id: since_commit_id,
553
- until_commit_id: until_commit_id,
559
+ stack_id:,
560
+ user_id:,
561
+ since_commit_id:,
562
+ until_commit_id:,
554
563
  status: "success",
555
- type: "Shipit::Deploy",
564
+ type: "Shipit::Deploy"
556
565
  )
557
566
  end
558
567
 
@@ -567,13 +576,13 @@ module Shipit
567
576
  def generate_commits(amount:, stack_id:, user_id:, validate:)
568
577
  commit_ids = []
569
578
  amount.times do
570
- commit = create_test_commit(stack_id: stack_id, user_id: user_id)
579
+ commit = create_test_commit(stack_id:, user_id:)
571
580
  commit.save
572
581
  commit.reload
573
582
  commit_ids << commit.id
574
583
  end
575
584
 
576
- if validate then assert_generated_record_ids_are_sequential(commit_ids) end
585
+ assert_generated_record_ids_are_sequential(commit_ids) if validate
577
586
  commit_ids
578
587
  end
579
588
 
@@ -585,11 +594,11 @@ module Shipit
585
594
  stack_id = test_stack.id
586
595
 
587
596
  # Create valid commit history for the stack. We need several commits to deploy and roll back through.
588
- commit_ids = generate_commits(amount: 4, stack_id: stack_id, user_id: user_id, validate: true)
589
- commit_ids.each { |commit_id| create_test_status(commit_id: commit_id, stack_id: stack_id, state: "success").save }
597
+ commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
598
+ commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
590
599
 
591
600
  # Three deploys of commits 1-2, 2-3 and 3-4 respectively. Reverting last should result in Deploy 3 (commit 3) being latest.
592
- 3.times { |index| create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[index], until_commit_id: commit_ids[index + 1]).save }
601
+ 3.times { |index| create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[index], until_commit_id: commit_ids[index + 1]).save }
593
602
 
594
603
  # Get the reference with Rails-mutated field values.
595
604
  commit3 = Shipit::Commit.second_to_last
@@ -621,7 +630,7 @@ module Shipit
621
630
  running_deploy = shipit_deploys(:shipit_running)
622
631
  rollback_to = shipit_deploys(:shipit_pending)
623
632
 
624
- final_rollback = running_deploy.trigger_revert(rollback_to: rollback_to)
633
+ final_rollback = running_deploy.trigger_revert(rollback_to:)
625
634
 
626
635
  assert_equal "Shipit::Rollback", final_rollback.type
627
636
  assert_equal 4, final_rollback.until_commit_id
@@ -635,8 +644,8 @@ module Shipit
635
644
  stack_id = test_stack.id
636
645
 
637
646
  # Create valid commit history for the stack. We need several commits to deploy and roll back through.
638
- commit_ids = generate_commits(amount: 4, stack_id: stack_id, user_id: user_id, validate: true)
639
- commit_ids.each { |commit_id| create_test_status(commit_id: commit_id, stack_id: stack_id, state: "success").save }
647
+ commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
648
+ commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
640
649
 
641
650
  # We want the following order of Deploys:
642
651
  # 1. Success (commits 1-2)
@@ -645,10 +654,10 @@ module Shipit
645
654
  # 4. Running (commits 3-4)
646
655
  # 5. Reversion of the running deploy to the last successful deploy. (-> commits 1-2, i.e. the successful deploy.)
647
656
 
648
- deploy1 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
657
+ deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
649
658
  deploy1.save
650
659
 
651
- deploy2 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
660
+ deploy2 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
652
661
  deploy2.status = "faulty"
653
662
  deploy2.save
654
663
 
@@ -658,7 +667,7 @@ module Shipit
658
667
 
659
668
  assert_equal commit_ids[1], test_stack.last_deployed_commit.id
660
669
 
661
- deploy3 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
670
+ deploy3 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
662
671
  deploy3.status = "running"
663
672
  deploy3.rollback_once_aborted = false
664
673
  deploy3.save
@@ -693,8 +702,8 @@ module Shipit
693
702
  stack_id = test_stack.id
694
703
 
695
704
  # Create valid commit history for the stack. We need several commits to deploy and roll back through.
696
- commit_ids = generate_commits(amount: 4, stack_id: stack_id, user_id: user_id, validate: true)
697
- commit_ids.each { |commit_id| create_test_status(commit_id: commit_id, stack_id: stack_id, state: "success").save }
705
+ commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
706
+ commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
698
707
 
699
708
  # We want the following order of Deploys:
700
709
  # 1. Success (commits 1-2)
@@ -703,14 +712,14 @@ module Shipit
703
712
  # 4. Reversion of the running deploy to the last successful deploy. (-> commits 1-2, i.e. the successful deploy.)
704
713
  # If the revert functionality doesn't restrict to deploys and rollbacks, then commit 3 will be latest deployed when the reversion is done.
705
714
 
706
- deploy1 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
715
+ deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
707
716
  deploy1.save
708
717
 
709
- deploy2 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
718
+ deploy2 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
710
719
  deploy2.type = "Shipit::Fake"
711
720
  deploy2.save
712
721
 
713
- deploy3 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
722
+ deploy3 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
714
723
  deploy3.status = "running"
715
724
  deploy3.rollback_once_aborted = false
716
725
  deploy3.save
@@ -744,8 +753,8 @@ module Shipit
744
753
  stack_id = test_stack.id
745
754
 
746
755
  # Create valid commit history for the stack. We need several commits to deploy and roll back through.
747
- commit_ids = generate_commits(amount: 4, stack_id: stack_id, user_id: user_id, validate: true)
748
- commit_ids.each { |commit_id| create_test_status(commit_id: commit_id, stack_id: stack_id, state: "success").save }
756
+ commit_ids = generate_commits(amount: 4, stack_id:, user_id:, validate: true)
757
+ commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
749
758
 
750
759
  # We want the following order of Deploys:
751
760
  # 1. Success (commits 1-2)
@@ -754,13 +763,13 @@ module Shipit
754
763
  # 4. Reversion of the running deploy to the last successful deploy of the same stack. (-> commits 1-2, i.e. the successful deploy.)
755
764
  # If the revert functionality doesn't restrict to the correct stack, then commit 3 will be latest deployed when the reversion is done.
756
765
 
757
- deploy1 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
766
+ deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
758
767
  deploy1.save
759
768
 
760
- deploy2 = create_test_deploy(stack_id: other_stack.id, user_id: user_id, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
769
+ deploy2 = create_test_deploy(stack_id: other_stack.id, user_id:, since_commit_id: commit_ids[1], until_commit_id: commit_ids[2])
761
770
  deploy2.save
762
771
 
763
- deploy3 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
772
+ deploy3 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[2], until_commit_id: commit_ids[3])
764
773
  deploy3.status = "running"
765
774
  deploy3.rollback_once_aborted = false
766
775
  deploy3.save
@@ -788,9 +797,9 @@ module Shipit
788
797
  test_stack.reload
789
798
  stack_id = test_stack.id
790
799
 
791
- commit_ids = generate_commits(amount: 2, stack_id: stack_id, user_id: user_id, validate: true)
792
- commit_ids.each { |commit_id| create_test_status(commit_id: commit_id, stack_id: stack_id, state: "success").save }
793
- deploy1 = create_test_deploy(stack_id: stack_id, user_id: user_id, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
800
+ commit_ids = generate_commits(amount: 2, stack_id:, user_id:, validate: true)
801
+ commit_ids.each { |commit_id| create_test_status(commit_id:, stack_id:, state: "success").save }
802
+ deploy1 = create_test_deploy(stack_id:, user_id:, since_commit_id: commit_ids[0], until_commit_id: commit_ids[1])
794
803
  deploy1.save
795
804
 
796
805
  rollback = deploy1.trigger_revert
@@ -1093,7 +1102,7 @@ module Shipit
1093
1102
  template_task = shipit_tasks(:shipit_pending)
1094
1103
  deploy = template_task.stack.deploys.build(
1095
1104
  since_commit: template_task.since_commit,
1096
- until_commit: template_task.until_commit,
1105
+ until_commit: template_task.until_commit
1097
1106
  )
1098
1107
 
1099
1108
  expected_delta = deploy.commits.select(&:pull_request?).size + 1
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -7,7 +8,6 @@ module Shipit
7
8
  assert_equal Duration.new(1), Duration.new(1)
8
9
  assert Duration.new(2) > Duration.new(1)
9
10
  assert Duration.new(2) > 1
10
- assert 1 < Duration.new(2)
11
11
  end
12
12
 
13
13
  test "can be added to a Time instance" do
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -21,11 +22,11 @@ module Shipit
21
22
  end
22
23
 
23
24
  test "#events is accessible as an array" do
24
- assert_equal %w(deploy rollback), @hook.events
25
+ assert_equal %w[deploy rollback], @hook.events
25
26
  end
26
27
 
27
28
  test "#events can only contain a defined set of values" do
28
- @hook.events = %w(foo)
29
+ @hook.events = %w[foo]
29
30
  refute @hook.valid?
30
31
  assert_equal ["Events is not a strict subset of #{Hook::EVENTS.inspect}"], @hook.errors.full_messages
31
32
  end
@@ -82,7 +83,7 @@ module Shipit
82
83
  test ".emit calls #deliver on internal hooks" do
83
84
  original_receivers = Shipit.internal_hook_receivers
84
85
  FakeReceiver = Module.new
85
- FakeReceiver.expects(:deliver).with(:deploy, @stack, 'foo' => 42)
86
+ FakeReceiver.expects(:deliver).with(:deploy, @stack, { 'foo' => 42 })
86
87
 
87
88
  Shipit.internal_hook_receivers << FakeReceiver
88
89
  Hook.emit(:deploy, @stack, 'foo' => 42)
@@ -93,7 +94,9 @@ module Shipit
93
94
  test ".emit calls no internal hooks if there are no internal_hook_receivers" do
94
95
  original_receivers = Shipit.internal_hook_receivers
95
96
  Shipit.internal_hook_receivers = nil
96
- Hook.emit(:deploy, @stack, 'foo' => 42)
97
+ assert_nothing_raised do
98
+ Hook.emit(:deploy, @stack, 'foo' => 42)
99
+ end
97
100
  ensure
98
101
  Shipit.internal_hook_receivers = original_receivers
99
102
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -82,38 +83,38 @@ module Shipit
82
83
  merged_at: nil,
83
84
  head: stub(
84
85
  ref: 'super-branch',
85
- sha: head_sha,
86
+ sha: head_sha
86
87
  ),
87
88
  base: stub(
88
- ref: 'default-branch',
89
- sha: base_sha,
90
- ),
91
- ),
89
+ ref: 'default-branch',
90
+ sha: base_sha
91
+ )
92
+ )
92
93
  )
93
94
 
94
95
  author = stub(
95
96
  id: 1234,
96
97
  login: 'bob',
97
98
  name: 'Bob the Builder',
98
- email: 'bob@bob.com',
99
+ email: 'bob@bob.com'
99
100
  )
100
101
 
101
102
  [head_sha, base_sha].each do |sha|
102
103
  Shipit.github.api.expects(:commit).with(@stack.github_repo_name, sha).returns(
103
104
  stub(
104
- sha: sha,
105
- author: author,
105
+ sha:,
106
+ author:,
106
107
  committer: author,
107
108
  commit: stub(
108
109
  message: 'Great feature',
109
110
  author: stub(date: 1.day.ago),
110
- committer: stub(date: 1.day.ago),
111
+ committer: stub(date: 1.day.ago)
111
112
  ),
112
113
  stats: stub(
113
114
  additions: 24,
114
- deletions: 5,
115
- ),
116
- ),
115
+ deletions: 5
116
+ )
117
+ )
117
118
  )
118
119
  end
119
120
 
@@ -122,24 +123,26 @@ module Shipit
122
123
  description: nil,
123
124
  context: 'default',
124
125
  target_url: 'http://example.com',
125
- created_at: 1.day.ago,
126
+ created_at: 1.day.ago
126
127
  )])
127
128
 
128
- Shipit.github.api.expects(:check_runs).with(@stack.github_repo_name, head_sha).returns(stub(
129
+ response = stub(rels: {}, data: stub(
129
130
  check_runs: [stub(
130
- id: 123456,
131
+ id: 123_456,
131
132
  name: 'check run',
132
133
  conclusion: 'success',
133
134
  output: stub(
134
- title: 'a test checkrun',
135
+ title: 'a test checkrun'
135
136
  ),
136
137
  details_url: 'http://example.com',
137
138
  html_url: 'http://example.com',
138
139
  completed_at: Time.now,
139
- started_at: 1.minute.ago,
140
+ started_at: 1.minute.ago
140
141
  )]
141
142
  ))
142
143
 
144
+ Shipit.github.api.expects(:last_response).returns(response)
145
+ Shipit.github.api.expects(:check_runs).with(@stack.github_repo_name, head_sha, per_page: 100).returns(response.data)
143
146
  merge_request.refresh!
144
147
 
145
148
  assert_predicate merge_request, :mergeable?
@@ -243,7 +246,10 @@ module Shipit
243
246
  end
244
247
 
245
248
  test "status transitions emit hooks" do
246
- job = assert_enqueued_with(job: EmitEventJob) do
249
+ expected_args = lambda do |job_args|
250
+ job_args.first[:event] == 'merge'
251
+ end
252
+ job = assert_enqueued_with(job: EmitEventJob, args: expected_args) do
247
253
  @pr.reject!('merge_conflict')
248
254
  end
249
255
  params = job.arguments.first
@@ -284,8 +290,8 @@ module Shipit
284
290
  @pr.base_ref = 'default-branch'
285
291
  Shipit.github.api.expects(:compare).with(@stack.github_repo_name, @pr.base_ref, @pr.head.sha).returns(
286
292
  stub(
287
- behind_by: 10,
288
- ),
293
+ behind_by: 10
294
+ )
289
295
  )
290
296
  spec = { 'merge' => { 'max_divergence' => { 'commits' => 1 } } }
291
297
  @pr.stack.cached_deploy_spec = DeploySpec.new(spec)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -10,7 +11,7 @@ module Shipit
10
11
  'pending',
11
12
  context: 'shipit/canaries',
12
13
  target_url: 'https://example.com/deploys/42',
13
- description: 'Deploy started',
14
+ description: 'Deploy started'
14
15
  ).returns(resource(id: 42))
15
16
 
16
17
  @status = shipit_release_statuses(:to_be_created)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'test_helper'
3
4
 
4
5
  module Shipit
@@ -36,13 +37,13 @@ module Shipit
36
37
  author: reverted_commit.author,
37
38
  committer: reverted_commit.committer,
38
39
  authored_at: Time.zone.now,
39
- committed_at: Time.zone.now,
40
+ committed_at: Time.zone.now
40
41
  )
41
42
 
42
43
  expected = [
43
44
  ['Revert "Merge pull request #7 from shipit-engine/yoloshipit"', false, nil],
44
45
  ["whoami", false, nil],
45
- ['fix all the things', false, nil],
46
+ ['fix all the things', false, nil]
46
47
  ]
47
48
  assert_equal(expected, @stack.undeployed_commits.map { |c| [c.title, c.locked?, c.lock_author_id] })
48
49
 
@@ -55,7 +56,7 @@ module Shipit
55
56
  ['Revert "Merge pull request #7 from shipit-engine/yoloshipit"', false, nil],
56
57
  ["whoami", true, user_id],
57
58
  ['fix all the things', true, user_id],
58
- ['yoloshipit!', true, user_id],
59
+ ['yoloshipit!', true, user_id]
59
60
  ]
60
61
 
61
62
  assert_equal(expected, @stack.undeployed_commits.map { |c| [c.title, c.locked?, c.lock_author_id] })