shipit-engine 0.28.0 → 0.32.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.
- checksums.yaml +4 -4
- data/README.md +41 -2
- data/Rakefile +4 -2
- data/app/assets/images/archive-solid.svg +1 -0
- data/app/assets/stylesheets/_pages/_stacks.scss +76 -3
- data/app/assets/stylesheets/_structure/_main.scss +2 -1
- data/app/assets/stylesheets/merge_status.scss +0 -3
- data/app/controllers/concerns/shipit/active_model_serializers_patch.rb +13 -0
- data/app/controllers/concerns/shipit/api/cacheable.rb +1 -0
- data/app/controllers/concerns/shipit/api/paginable.rb +3 -2
- data/app/controllers/concerns/shipit/api/rendering.rb +5 -4
- data/app/controllers/concerns/shipit/authentication.rb +3 -2
- data/app/controllers/concerns/shipit/pagination.rb +2 -1
- data/app/controllers/shipit/api/base_controller.rb +11 -6
- data/app/controllers/shipit/api/ccmenu_controller.rb +2 -1
- data/app/controllers/shipit/api/commits_controller.rb +2 -1
- data/app/controllers/shipit/api/deploys_controller.rb +4 -3
- data/app/controllers/shipit/api/hooks_controller.rb +6 -5
- data/app/controllers/shipit/api/locks_controller.rb +5 -4
- data/app/controllers/shipit/api/outputs_controller.rb +2 -1
- data/app/controllers/shipit/api/pull_requests_controller.rb +7 -6
- data/app/controllers/shipit/api/release_statuses_controller.rb +3 -2
- data/app/controllers/shipit/api/rollbacks_controller.rb +33 -0
- data/app/controllers/shipit/api/stacks_controller.rb +37 -5
- data/app/controllers/shipit/api/tasks_controller.rb +6 -5
- data/app/controllers/shipit/api_clients_controller.rb +50 -0
- data/app/controllers/shipit/ccmenu_url_controller.rb +4 -3
- data/app/controllers/shipit/commit_checks_controller.rb +2 -1
- data/app/controllers/shipit/commits_controller.rb +2 -1
- data/app/controllers/shipit/deploys_controller.rb +3 -2
- data/app/controllers/shipit/github_authentication_controller.rb +4 -3
- data/app/controllers/shipit/merge_status_controller.rb +19 -14
- data/app/controllers/shipit/pull_requests_controller.rb +3 -2
- data/app/controllers/shipit/release_statuses_controller.rb +3 -2
- data/app/controllers/shipit/rollbacks_controller.rb +3 -2
- data/app/controllers/shipit/shipit_controller.rb +2 -1
- data/app/controllers/shipit/stacks_controller.rb +78 -14
- data/app/controllers/shipit/status_controller.rb +2 -1
- data/app/controllers/shipit/tasks_controller.rb +6 -5
- data/app/controllers/shipit/webhooks_controller.rb +5 -132
- data/app/helpers/shipit/chunks_helper.rb +1 -0
- data/app/helpers/shipit/deploys_helper.rb +4 -3
- data/app/helpers/shipit/github_url_helper.rb +1 -0
- data/app/helpers/shipit/merge_status_helper.rb +1 -0
- data/app/helpers/shipit/shipit_helper.rb +1 -0
- data/app/helpers/shipit/stacks_helper.rb +5 -0
- data/app/helpers/shipit/tasks_helper.rb +1 -0
- data/app/jobs/shipit/background_job.rb +4 -0
- data/app/jobs/shipit/background_job/unique.rb +4 -1
- data/app/jobs/shipit/cache_deploy_spec_job.rb +1 -0
- data/app/jobs/shipit/chunk_rollup_job.rb +4 -0
- data/app/jobs/shipit/clear_git_cache_job.rb +1 -0
- data/app/jobs/shipit/continuous_delivery_job.rb +3 -1
- data/app/jobs/shipit/create_on_github_job.rb +6 -1
- data/app/jobs/shipit/create_release_statuses_job.rb +1 -0
- data/app/jobs/shipit/deferred_touch_job.rb +4 -0
- data/app/jobs/shipit/deliver_hook_job.rb +1 -0
- data/app/jobs/shipit/destroy_job.rb +1 -0
- data/app/jobs/shipit/destroy_stack_job.rb +3 -2
- data/app/jobs/shipit/emit_event_job.rb +2 -1
- data/app/jobs/shipit/fetch_commit_stats_job.rb +1 -0
- data/app/jobs/shipit/fetch_deployed_revision_job.rb +2 -1
- data/app/jobs/shipit/github_sync_job.rb +3 -2
- data/app/jobs/shipit/{mark_deploy_healty_job.rb → mark_deploy_healthy_job.rb} +1 -0
- data/app/jobs/shipit/merge_pull_requests_job.rb +1 -0
- data/app/jobs/shipit/perform_commit_checks_job.rb +1 -0
- data/app/jobs/shipit/perform_task_job.rb +14 -5
- data/app/jobs/shipit/purge_old_deliveries_job.rb +1 -0
- data/app/jobs/shipit/reap_dead_tasks_job.rb +21 -0
- data/app/jobs/shipit/refresh_check_runs_job.rb +1 -0
- data/app/jobs/shipit/refresh_github_user_job.rb +1 -0
- data/app/jobs/shipit/refresh_pull_request_job.rb +1 -0
- data/app/jobs/shipit/refresh_statuses_job.rb +1 -0
- data/app/jobs/shipit/setup_github_hook_job.rb +1 -0
- data/app/jobs/shipit/update_estimated_deploy_duration_job.rb +1 -0
- data/app/jobs/shipit/update_github_last_deployed_ref_job.rb +6 -3
- data/app/models/concerns/shipit/deferred_touch.rb +4 -3
- data/app/models/shipit/anonymous_user.rb +5 -0
- data/app/models/shipit/api_client.rb +3 -2
- data/app/models/shipit/application_record.rb +2 -1
- data/app/models/shipit/check_run.rb +4 -3
- data/app/models/shipit/command_line_user.rb +1 -0
- data/app/models/shipit/commit.rb +31 -12
- data/app/models/shipit/commit_checks.rb +1 -0
- data/app/models/shipit/commit_deployment.rb +17 -12
- data/app/models/shipit/commit_deployment_status.rb +8 -3
- data/app/models/shipit/commit_message.rb +1 -0
- data/app/models/shipit/delivery.rb +4 -3
- data/app/models/shipit/deploy.rb +40 -10
- data/app/models/shipit/deploy_spec.rb +22 -3
- data/app/models/shipit/deploy_spec/bundler_discovery.rb +2 -1
- data/app/models/shipit/deploy_spec/capistrano_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/file_system.rb +10 -3
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/lerna_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/npm_discovery.rb +5 -4
- data/app/models/shipit/deploy_spec/pypi_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/rubygems_discovery.rb +1 -0
- data/app/models/shipit/deploy_stats.rb +58 -0
- data/app/models/shipit/duration.rb +3 -2
- data/app/models/shipit/ephemeral_commit_checks.rb +1 -0
- data/app/models/shipit/github_hook.rb +2 -1
- data/app/models/shipit/github_status.rb +3 -2
- data/app/models/shipit/hook.rb +6 -5
- data/app/models/shipit/membership.rb +3 -2
- data/app/models/shipit/output_chunk.rb +7 -2
- data/app/models/shipit/pull_request.rb +13 -7
- data/app/models/shipit/record.rb +18 -0
- data/app/models/shipit/release_status.rb +3 -2
- data/app/models/shipit/repository.rb +43 -0
- data/app/models/shipit/rollback.rb +1 -0
- data/app/models/shipit/stack.rb +109 -50
- data/app/models/shipit/status.rb +3 -2
- data/app/models/shipit/status/common.rb +7 -6
- data/app/models/shipit/status/group.rb +1 -0
- data/app/models/shipit/status/missing.rb +2 -1
- data/app/models/shipit/status/unknown.rb +2 -1
- data/app/models/shipit/task.rb +64 -9
- data/app/models/shipit/task_definition.rb +1 -0
- data/app/models/shipit/team.rb +2 -1
- data/app/models/shipit/undeployed_commit.rb +1 -0
- data/app/models/shipit/unlimited_api_client.rb +1 -0
- data/app/models/shipit/user.rb +29 -5
- data/app/models/shipit/variable_definition.rb +1 -0
- data/app/models/shipit/webhooks.rb +33 -0
- data/app/models/shipit/webhooks/handlers/check_suite_handler.rb +20 -0
- data/app/models/shipit/webhooks/handlers/handler.rb +41 -0
- data/app/models/shipit/webhooks/handlers/membership_handler.rb +46 -0
- data/app/models/shipit/webhooks/handlers/push_handler.rb +21 -0
- data/app/models/shipit/webhooks/handlers/status_handler.rb +27 -0
- data/app/serializers/concerns/shipit/conditional_attributes.rb +1 -0
- data/app/serializers/shipit/anonymous_user_serializer.rb +1 -0
- data/app/serializers/shipit/command_line_user_serializer.rb +1 -0
- data/app/serializers/shipit/commit_serializer.rb +1 -0
- data/app/serializers/shipit/deploy_serializer.rb +2 -1
- data/app/serializers/shipit/hook_serializer.rb +1 -0
- data/app/serializers/shipit/pull_request_serializer.rb +1 -0
- data/app/serializers/shipit/rollback_serializer.rb +1 -0
- data/app/serializers/shipit/short_commit_serializer.rb +1 -0
- data/app/serializers/shipit/stack_serializer.rb +7 -1
- data/app/serializers/shipit/tail_task_serializer.rb +1 -0
- data/app/serializers/shipit/task_serializer.rb +2 -17
- data/app/serializers/shipit/user_serializer.rb +6 -1
- data/app/validators/ascii_only_validator.rb +4 -3
- data/app/validators/subset_validator.rb +1 -0
- data/app/views/layouts/_head.html.erb +0 -0
- data/app/views/layouts/shipit.html.erb +6 -4
- data/app/views/shipit/_variables.html.erb +1 -1
- data/app/views/shipit/api_clients/index.html.erb +36 -0
- data/app/views/shipit/api_clients/new.html.erb +33 -0
- data/app/views/shipit/api_clients/show.html.erb +35 -0
- data/app/views/shipit/ccmenu/project.xml.builder +2 -1
- data/app/views/shipit/deploys/new.html.erb +17 -12
- data/app/views/shipit/deploys/show.html.erb +2 -2
- data/app/views/shipit/merge_status/logged_out.erb +1 -1
- data/app/views/shipit/stacks/_header.html.erb +27 -12
- data/app/views/shipit/stacks/_links.html.erb +1 -0
- data/app/views/shipit/stacks/all_tasks.html.erb +28 -0
- data/app/views/shipit/stacks/index.html.erb +7 -2
- data/app/views/shipit/stacks/settings.html.erb +19 -0
- data/app/views/shipit/stacks/statistics.html.erb +82 -0
- data/app/views/shipit/tasks/show.html.erb +1 -1
- data/config/initializers/inflections.rb +2 -1
- data/config/locales/en.yml +18 -5
- data/config/routes.rb +14 -2
- data/db/migrate/20191209231045_create_shipit_repositories.rb +12 -0
- data/db/migrate/20191209231307_add_repository_reference_to_stacks.rb +15 -0
- data/db/migrate/20191216162728_backfill_repository_data.rb +22 -0
- data/db/migrate/20191216163010_remove_repository_information_from_stacks.rb +20 -0
- data/db/migrate/20191219205202_add_archived_since_to_stacks.rb +6 -0
- data/db/migrate/20200102175621_optional_task_commits.rb +6 -0
- data/db/migrate/20200109132519_add_sha_to_commit_deployments.rb +5 -0
- data/db/migrate/20200226211925_add_index_to_tasks_status.rb +5 -0
- data/db/migrate/20200427135152_add_pull_request_head_sha_to_commit.rb +5 -0
- data/db/migrate/20200615181558_add_rollback_once_aborted_to.rb +5 -0
- data/lib/shipit.rb +18 -20
- data/lib/shipit/cast_value.rb +1 -0
- data/lib/shipit/command.rb +14 -18
- data/lib/shipit/commands.rb +5 -4
- data/lib/shipit/csv_serializer.rb +1 -0
- data/lib/shipit/deploy_commands.rb +1 -0
- data/lib/shipit/engine.rb +11 -2
- data/lib/shipit/environment_variables.rb +11 -1
- data/lib/shipit/first_parent_commits_iterator.rb +1 -0
- data/lib/shipit/flock.rb +1 -0
- data/lib/shipit/github_app.rb +60 -6
- data/lib/shipit/github_http_cache_middleware.rb +57 -0
- data/lib/shipit/null_serializer.rb +1 -0
- data/lib/shipit/octokit_check_runs.rb +3 -2
- data/lib/shipit/octokit_iterator.rb +3 -2
- data/lib/shipit/paginator.rb +3 -2
- data/lib/shipit/rollback_commands.rb +1 -0
- data/lib/shipit/same_site_cookie_middleware.rb +29 -0
- data/lib/shipit/simple_message_verifier.rb +1 -0
- data/lib/shipit/stack_commands.rb +6 -3
- data/lib/shipit/stat.rb +1 -0
- data/lib/shipit/task_commands.rb +22 -14
- data/lib/shipit/version.rb +2 -1
- data/lib/snippets/release-gem +5 -1
- data/lib/tasks/cron.rake +2 -0
- data/lib/tasks/dev.rake +3 -2
- data/lib/tasks/shipit.rake +16 -17
- data/lib/tasks/teams.rake +1 -0
- data/test/controllers/api/base_controller_test.rb +3 -2
- data/test/controllers/api/ccmenu_controller_test.rb +9 -8
- data/test/controllers/api/commits_controller_test.rb +3 -2
- data/test/controllers/api/deploys_controller_test.rb +15 -14
- data/test/controllers/api/hooks_controller_test.rb +8 -7
- data/test/controllers/api/locks_controller_test.rb +7 -6
- data/test/controllers/api/outputs_controller_test.rb +3 -2
- data/test/controllers/api/pull_requests_controller_test.rb +8 -7
- data/test/controllers/api/release_statuses_controller_test.rb +2 -1
- data/test/controllers/api/rollback_controller_test.rb +113 -0
- data/test/controllers/api/stacks_controller_test.rb +44 -15
- data/test/controllers/api/tasks_controller_test.rb +13 -12
- data/test/controllers/api_clients_controller_test.rb +104 -0
- data/test/controllers/ccmenu_controller_test.rb +4 -3
- data/test/controllers/commit_checks_controller_test.rb +4 -3
- data/test/controllers/commits_controller_test.rb +3 -2
- data/test/controllers/deploys_controller_test.rb +33 -22
- data/test/controllers/github_authentication_controller_test.rb +1 -0
- data/test/controllers/merge_status_controller_test.rb +27 -9
- data/test/controllers/pull_requests_controller_test.rb +4 -3
- data/test/controllers/release_statuses_controller_test.rb +3 -2
- data/test/controllers/rollbacks_controller_test.rb +9 -8
- data/test/controllers/stacks_controller_test.rb +64 -15
- data/test/controllers/status_controller_test.rb +1 -0
- data/test/controllers/tasks_controller_test.rb +20 -19
- data/test/controllers/webhooks_controller_test.rb +36 -9
- data/test/dummy/config/application.rb +1 -1
- data/test/dummy/config/environments/development.rb +24 -4
- data/test/dummy/config/environments/test.rb +2 -0
- data/test/dummy/db/schema.rb +25 -11
- data/test/dummy/db/seeds.rb +34 -17
- data/test/fixtures/shipit/commit_deployment_statuses.yml +4 -4
- data/test/fixtures/shipit/commit_deployments.yml +8 -8
- data/test/fixtures/shipit/commits.yml +38 -0
- data/test/fixtures/shipit/repositories.yml +27 -0
- data/test/fixtures/shipit/stacks.yml +190 -30
- data/test/fixtures/shipit/tasks.yml +66 -3
- data/test/fixtures/timeout +2 -1
- data/test/helpers/api_helper.rb +1 -0
- data/test/helpers/fixture_aliases_helper.rb +1 -0
- data/test/helpers/hooks_helper.rb +2 -1
- data/test/helpers/json_helper.rb +15 -11
- data/test/helpers/links_helper.rb +4 -3
- data/test/helpers/payloads_helper.rb +1 -0
- data/test/helpers/queries_helper.rb +3 -2
- data/test/jobs/cache_deploy_spec_job_test.rb +2 -1
- data/test/jobs/chunk_rollup_job_test.rb +1 -0
- data/test/jobs/deliver_hook_job_test.rb +2 -1
- data/test/jobs/destroy_stack_job_test.rb +10 -0
- data/test/jobs/emit_event_job_test.rb +2 -1
- data/test/jobs/fetch_commit_stats_job_test.rb +1 -0
- data/test/jobs/fetch_deployed_revision_job_test.rb +1 -0
- data/test/jobs/github_sync_job_test.rb +1 -0
- data/test/jobs/mark_deploy_healthy_job_test.rb +1 -0
- data/test/jobs/merge_pull_requests_job_test.rb +5 -4
- data/test/jobs/perform_task_job_test.rb +4 -3
- data/test/jobs/purge_old_deliveries_job_test.rb +1 -0
- data/test/jobs/reap_dead_tasks_job_test.rb +68 -0
- data/test/jobs/refresh_github_user_job_test.rb +1 -0
- data/test/jobs/refresh_status_job_test.rb +1 -0
- data/test/jobs/unique_job_test.rb +1 -0
- data/test/jobs/update_github_last_deployed_ref_job_test.rb +13 -11
- data/test/middleware/same_site_cookie_middleware_test.rb +52 -0
- data/test/models/api_client_test.rb +1 -0
- data/test/models/commit_checks_test.rb +1 -0
- data/test/models/commit_deployment_status_test.rb +34 -4
- data/test/models/commit_deployment_test.rb +9 -11
- data/test/models/commits_test.rb +99 -7
- data/test/models/delivery_test.rb +3 -2
- data/test/models/deploy_spec_test.rb +47 -42
- data/test/models/deploy_stats_test.rb +113 -0
- data/test/models/deploys_test.rb +60 -13
- data/test/models/duration_test.rb +1 -0
- data/test/models/github_hook_test.rb +1 -0
- data/test/models/hook_test.rb +20 -16
- data/test/models/membership_test.rb +1 -0
- data/test/models/output_chunk_test.rb +1 -0
- data/test/models/pull_request_test.rb +18 -11
- data/test/models/release_statuses_test.rb +1 -0
- data/test/models/rollbacks_test.rb +1 -0
- data/test/models/shipit/check_run_test.rb +1 -0
- data/test/models/shipit/repository_test.rb +77 -0
- data/test/models/shipit/wehbooks/handlers_test.rb +27 -0
- data/test/models/stacks_test.rb +110 -56
- data/test/models/status/group_test.rb +1 -0
- data/test/models/status/missing_test.rb +1 -0
- data/test/models/status_test.rb +1 -0
- data/test/models/task_definitions_test.rb +9 -8
- data/test/models/tasks_test.rb +18 -1
- data/test/models/team_test.rb +4 -2
- data/test/models/undeployed_commits_test.rb +14 -0
- data/test/models/users_test.rb +109 -1
- data/test/test_command_integration.rb +3 -2
- data/test/test_helper.rb +38 -34
- data/test/unit/anonymous_user_serializer_test.rb +14 -0
- data/test/unit/command_test.rb +12 -7
- data/test/unit/commands_test.rb +1 -0
- data/test/unit/commit_serializer_test.rb +16 -0
- data/test/unit/csv_serializer_test.rb +3 -2
- data/test/unit/deploy_commands_test.rb +14 -4
- data/test/unit/deploy_serializer_test.rb +17 -0
- data/test/unit/environment_variables_test.rb +5 -4
- data/test/unit/github_app_test.rb +165 -0
- data/test/unit/github_url_helper_test.rb +1 -0
- data/test/unit/rollback_commands_test.rb +2 -1
- data/test/unit/shipit_helper_test.rb +17 -0
- data/test/unit/shipit_test.rb +1 -0
- data/test/unit/user_serializer_test.rb +14 -0
- data/test/unit/variable_definition_test.rb +1 -0
- metadata +215 -157
- data/lib/shipit/strip_cache_control.rb +0 -40
@@ -1,33 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'test_helper'
|
2
3
|
|
3
4
|
module Shipit
|
4
5
|
class CommitDeploymentTest < ActiveSupport::TestCase
|
5
6
|
setup do
|
6
7
|
@deployment = shipit_commit_deployments(:shipit_pending_fourth)
|
7
|
-
@commit = @deployment.commit
|
8
8
|
@task = @deployment.task
|
9
9
|
@stack = @task.stack
|
10
10
|
@author = @deployment.author
|
11
11
|
end
|
12
12
|
|
13
|
-
test "there can only be one record per deploy and commit pair" do
|
14
|
-
assert_raises ActiveRecord::RecordNotUnique do
|
15
|
-
CommitDeployment.create!(task: @deployment.task, commit: @deployment.commit)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
13
|
test "creation on GitHub" do
|
20
|
-
pull_request_response = stub(head: stub(sha: '6dcb09b5b57875f334f61aebed695e2e4193db5e'))
|
21
|
-
@author.github_api.expects(:pull_request).with('shopify/shipit-engine', 7).returns(pull_request_response)
|
22
|
-
|
23
14
|
deployment_response = stub(id: 42, url: 'https://example.com')
|
24
15
|
@author.github_api.expects(:create_deployment).with(
|
25
16
|
'shopify/shipit-engine',
|
26
|
-
|
17
|
+
@deployment.sha,
|
27
18
|
auto_merge: false,
|
28
19
|
required_contexts: [],
|
29
20
|
description: "Via Shipit",
|
30
21
|
environment: @stack.environment,
|
22
|
+
payload: {
|
23
|
+
shipit: {
|
24
|
+
task_id: 4,
|
25
|
+
from_sha: 'f890fd8b5f2be05d1fedb763a3605ee461c39074',
|
26
|
+
to_sha: '467578b362bf2b4df5903e1c7960929361c3435a',
|
27
|
+
},
|
28
|
+
}.to_json,
|
31
29
|
).returns(deployment_response)
|
32
30
|
|
33
31
|
@deployment.create_on_github!
|
data/test/models/commits_test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'test_helper'
|
2
3
|
|
3
4
|
module Shipit
|
@@ -8,6 +9,12 @@ module Shipit
|
|
8
9
|
@pr.message = "Merge pull request #31 from Shopify/improve-polling\n\nSeveral improvements to polling"
|
9
10
|
@stack.reload
|
10
11
|
@commit = shipit_commits(:first)
|
12
|
+
|
13
|
+
stub_request(:get, "https://api.github.com/user/emails").to_return(
|
14
|
+
status: %w(200 OK),
|
15
|
+
body: {}.to_json,
|
16
|
+
headers: { "Content-Type" => "application/json" },
|
17
|
+
)
|
11
18
|
end
|
12
19
|
|
13
20
|
test '.create_from_github handle unknown users' do
|
@@ -62,6 +69,39 @@ module Shipit
|
|
62
69
|
refute_predicate commit, :revert?
|
63
70
|
end
|
64
71
|
|
72
|
+
test '.create_from_github truncates long messages' do
|
73
|
+
message = 'ABCDEFGHIJ' * 7000
|
74
|
+
|
75
|
+
assert_difference -> { Commit.count }, +1 do
|
76
|
+
@stack.commits.create_from_github!(
|
77
|
+
resource(
|
78
|
+
sha: '2adaad1ad30c235d3a6e7981dfc1742f7ecb1e85',
|
79
|
+
author: {},
|
80
|
+
committer: {},
|
81
|
+
commit: {
|
82
|
+
author: {
|
83
|
+
name: 'Lando Walrussian',
|
84
|
+
email: 'walrus@shopify.com',
|
85
|
+
date: Time.now,
|
86
|
+
},
|
87
|
+
committer: {
|
88
|
+
name: 'Lando Walrussian',
|
89
|
+
email: 'walrus@shopify.com',
|
90
|
+
date: Time.now,
|
91
|
+
},
|
92
|
+
message: message,
|
93
|
+
},
|
94
|
+
),
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
98
|
+
max_message_size = Shipit::Commit.columns_hash["message"].limit
|
99
|
+
commit = Commit.last
|
100
|
+
|
101
|
+
refute_predicate commit.message, :blank?
|
102
|
+
assert(commit.message.length <= Shipit::Commit.columns_hash["message"].limit) if max_message_size
|
103
|
+
end
|
104
|
+
|
65
105
|
test '.create_from_github handle PRs merged by another Shipit stacks' do
|
66
106
|
assert_difference -> { Commit.count }, +1 do
|
67
107
|
@stack.commits.create_from_github!(
|
@@ -90,6 +130,46 @@ module Shipit
|
|
90
130
|
assert_equal shipit_users(:walrus), commit.author
|
91
131
|
end
|
92
132
|
|
133
|
+
test '.create_from_github stores pull_request_head_sha' do
|
134
|
+
assert_difference -> { Commit.count }, +1 do
|
135
|
+
@stack.commits.create_from_github!(
|
136
|
+
resource(
|
137
|
+
sha: '2adaad1ad30c235d3a6e7981dfc1742f7ecb1e85',
|
138
|
+
author: {},
|
139
|
+
committer: {},
|
140
|
+
commit: {
|
141
|
+
author: {
|
142
|
+
name: 'Shipit',
|
143
|
+
email: '',
|
144
|
+
date: Time.now,
|
145
|
+
},
|
146
|
+
committer: {
|
147
|
+
name: 'Shipit',
|
148
|
+
email: '',
|
149
|
+
date: Time.now,
|
150
|
+
},
|
151
|
+
message: "Merge pull request #62 from shipit-engine/yoloshipit\n\nyoloshipit!",
|
152
|
+
},
|
153
|
+
parents: [
|
154
|
+
{ sha: "1864542e3d2f8a41916a2dec0f2b4d3c1bf4899b", url: '', html_url: '' },
|
155
|
+
{ sha: "63d7e03e517fd2ae1caeb1b7a9f21767f84d671a", url: '', html_url: '' },
|
156
|
+
],
|
157
|
+
),
|
158
|
+
)
|
159
|
+
end
|
160
|
+
|
161
|
+
commit = Commit.last
|
162
|
+
assert_equal '63d7e03e517fd2ae1caeb1b7a9f21767f84d671a', commit.pull_request_head_sha
|
163
|
+
end
|
164
|
+
|
165
|
+
test "#message= truncates the message" do
|
166
|
+
skip unless Shipit::Commit.columns_hash['message'].limit
|
167
|
+
limit = Shipit::Commit.columns_hash['message'].limit
|
168
|
+
|
169
|
+
@commit.update!(message: 'a' * limit * 2)
|
170
|
+
assert_equal limit, @commit.message.bytesize
|
171
|
+
end
|
172
|
+
|
93
173
|
test "#pull_request? detect pull request based on message format" do
|
94
174
|
assert @pr.pull_request?
|
95
175
|
refute @commit.pull_request?
|
@@ -137,7 +217,7 @@ module Shipit
|
|
137
217
|
|
138
218
|
test "updating broadcasts an update event" do
|
139
219
|
expect_event(@stack)
|
140
|
-
@commit.
|
220
|
+
@commit.update(message: "toto")
|
141
221
|
end
|
142
222
|
|
143
223
|
test "updating state to success triggers new deploy when stack has continuous deployment" do
|
@@ -184,12 +264,14 @@ module Shipit
|
|
184
264
|
committed_at: Time.now,
|
185
265
|
)
|
186
266
|
|
187
|
-
@stack.deploys.
|
267
|
+
deploy = @stack.deploys.build(
|
188
268
|
user_id: walrus.id,
|
189
269
|
since_commit: @stack.commits.first,
|
190
270
|
until_commit: new_commit,
|
191
271
|
status: 'success',
|
192
272
|
)
|
273
|
+
deploy.stubs(:pull_request_head_for_commit).returns(nil)
|
274
|
+
deploy.save!
|
193
275
|
|
194
276
|
assert_no_difference "Deploy.count" do
|
195
277
|
@commit.statuses.create!(stack_id: @stack.id, state: 'success')
|
@@ -242,7 +324,7 @@ module Shipit
|
|
242
324
|
target_url: 'http://example.com',
|
243
325
|
created_at: 1.day.ago,
|
244
326
|
)
|
245
|
-
Shipit.github.api.expects(:statuses).with(@stack.github_repo_name, @commit.sha).returns([status])
|
327
|
+
Shipit.github.api.expects(:statuses).with(@stack.github_repo_name, @commit.sha, per_page: 100).returns([status])
|
246
328
|
assert_difference '@commit.statuses.count', 1 do
|
247
329
|
@commit.refresh_statuses!
|
248
330
|
end
|
@@ -379,10 +461,10 @@ module Shipit
|
|
379
461
|
commit = shipit_commits(:second)
|
380
462
|
assert_predicate commit.status, :group?
|
381
463
|
assert_equal 3, commit.status.size
|
382
|
-
commit.stack.update!(cached_deploy_spec: DeploySpec.new('ci' => {'hide' => [
|
464
|
+
commit.stack.update!(cached_deploy_spec: DeploySpec.new('ci' => { 'hide' => [
|
383
465
|
'Travis CI',
|
384
466
|
'metrics/coveralls',
|
385
|
-
]}))
|
467
|
+
] }))
|
386
468
|
commit.reload
|
387
469
|
refute_predicate commit.status, :group?
|
388
470
|
end
|
@@ -512,7 +594,7 @@ module Shipit
|
|
512
594
|
'error' => %w(success),
|
513
595
|
}
|
514
596
|
expected_webhook_transitions.each do |initial_state, firing_states|
|
515
|
-
initial_status_attributes = {state: initial_state, description: 'abc', context: 'ci/travis'}
|
597
|
+
initial_status_attributes = { state: initial_state, description: 'abc', context: 'ci/travis' }
|
516
598
|
(expected_webhook_transitions.keys - %w(unknown)).each do |new_state|
|
517
599
|
should_fire = firing_states.include?(new_state)
|
518
600
|
action = should_fire ? 'fires' : 'does not fire'
|
@@ -531,7 +613,7 @@ module Shipit
|
|
531
613
|
end
|
532
614
|
assert_equal initial_state, commit.state
|
533
615
|
|
534
|
-
expected_status_attributes = {state: new_state, description: initial_state, context: 'ci/travis'}
|
616
|
+
expected_status_attributes = { state: new_state, description: initial_state, context: 'ci/travis' }
|
535
617
|
add_status = lambda do
|
536
618
|
attrs = expected_status_attributes.merge(created_at: 1.day.ago.to_s(:db))
|
537
619
|
commit.create_status_from_github!(OpenStruct.new(attrs))
|
@@ -767,6 +849,16 @@ module Shipit
|
|
767
849
|
assert_equal commit.deploy_requested_at, commit.created_at
|
768
850
|
end
|
769
851
|
|
852
|
+
test "#recently_pushed?" do
|
853
|
+
freeze_time do
|
854
|
+
commit = Commit.new(message: "abcd", created_at: Time.now.utc)
|
855
|
+
assert_predicate commit, :recently_pushed?
|
856
|
+
|
857
|
+
commit = Commit.new(message: "abcd", created_at: 10.minutes.ago)
|
858
|
+
refute_predicate commit, :recently_pushed?
|
859
|
+
end
|
860
|
+
end
|
861
|
+
|
770
862
|
private
|
771
863
|
|
772
864
|
def expect_event(stack)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'test_helper'
|
2
3
|
|
3
4
|
module Shipit
|
@@ -23,8 +24,8 @@ module Shipit
|
|
23
24
|
end
|
24
25
|
|
25
26
|
test "#send! post the payload and update the status to `sent`" do
|
26
|
-
headers = {'content-type' => 'text/plain', 'content-length' => '2'}
|
27
|
-
|
27
|
+
headers = { 'content-type' => 'text/plain', 'content-length' => '2' }
|
28
|
+
stub_request(:post, @delivery.url).to_return(headers: headers, body: 'OK')
|
28
29
|
|
29
30
|
assert_equal 'scheduled', @delivery.status
|
30
31
|
@delivery.send!
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'test_helper'
|
2
3
|
|
3
4
|
module Shipit
|
@@ -22,7 +23,7 @@ module Shipit
|
|
22
23
|
end
|
23
24
|
|
24
25
|
test '#supports_rollback? returns true if steps are defined' do
|
25
|
-
@spec.stubs(:load_config).returns('rollback' => {'override' => ['rm -rf /usr /lib/nvidia-current/xorg/xorg']})
|
26
|
+
@spec.stubs(:load_config).returns('rollback' => { 'override' => ['rm -rf /usr /lib/nvidia-current/xorg/xorg'] })
|
26
27
|
assert @spec.supports_rollback?
|
27
28
|
end
|
28
29
|
|
@@ -32,7 +33,7 @@ module Shipit
|
|
32
33
|
end
|
33
34
|
|
34
35
|
test '#dependencies_steps returns `dependencies.override` if present' do
|
35
|
-
@spec.stubs(:load_config).returns('dependencies' => {'override' => %w(foo bar baz)})
|
36
|
+
@spec.stubs(:load_config).returns('dependencies' => { 'override' => %w(foo bar baz) })
|
36
37
|
assert_equal %w(foo bar baz), @spec.dependencies_steps
|
37
38
|
end
|
38
39
|
|
@@ -43,7 +44,7 @@ module Shipit
|
|
43
44
|
end
|
44
45
|
|
45
46
|
test "#dependencies_steps prepend and append pre and post steps" do
|
46
|
-
@spec.stubs(:load_config).returns('dependencies' => {'pre' => ['before'], 'post' => ['after']})
|
47
|
+
@spec.stubs(:load_config).returns('dependencies' => { 'pre' => ['before'], 'post' => ['after'] })
|
47
48
|
@spec.expects(:bundler?).returns(true).at_least_once
|
48
49
|
@spec.expects(:bundle_install).returns(['bundle install'])
|
49
50
|
assert_equal ['before', 'bundle install', 'after'], @spec.dependencies_steps
|
@@ -75,7 +76,7 @@ module Shipit
|
|
75
76
|
|
76
77
|
test '#bundle_install use `dependencies.bundler.without` if present to build the --without argument' do
|
77
78
|
@spec.stubs(:gemfile_lock_exists?).returns(true)
|
78
|
-
@spec.stubs(:load_config).returns('dependencies' => {'bundler' => {'without' => %w(some custom groups)}})
|
79
|
+
@spec.stubs(:load_config).returns('dependencies' => { 'bundler' => { 'without' => %w(some custom groups) } })
|
79
80
|
command = %(
|
80
81
|
bundle install
|
81
82
|
--frozen
|
@@ -88,25 +89,25 @@ module Shipit
|
|
88
89
|
end
|
89
90
|
|
90
91
|
test '#bundle_install has --frozen option if Gemfile.lock is present' do
|
91
|
-
@spec.stubs(:load_config).returns('dependencies' => {'bundler' => {'without' => %w(some custom groups)}})
|
92
|
+
@spec.stubs(:load_config).returns('dependencies' => { 'bundler' => { 'without' => %w(some custom groups) } })
|
92
93
|
@spec.stubs(:gemfile_lock_exists?).returns(true)
|
93
94
|
assert @spec.bundle_install.last.include?('--frozen')
|
94
95
|
end
|
95
96
|
|
96
97
|
test '#bundle_install does not have --frozen option if Gemfile.lock is not present' do
|
97
|
-
@spec.stubs(:load_config).returns('dependencies' => {'bundler' => {'without' => %w(some custom groups)}})
|
98
|
+
@spec.stubs(:load_config).returns('dependencies' => { 'bundler' => { 'without' => %w(some custom groups) } })
|
98
99
|
@spec.stubs(:gemfile_lock_exists?).returns(false)
|
99
100
|
refute @spec.bundle_install.last.include?('--frozen')
|
100
101
|
end
|
101
102
|
|
102
103
|
test '#bundle_install does not have --frozen if overridden in shipit.yml' do
|
103
|
-
@spec.stubs(:load_config).returns('dependencies' => {'bundler' => {'frozen' => false}})
|
104
|
+
@spec.stubs(:load_config).returns('dependencies' => { 'bundler' => { 'frozen' => false } })
|
104
105
|
@spec.stubs(:gemfile_lock_exists?).returns(true)
|
105
106
|
refute @spec.bundle_install.last.include?('--frozen')
|
106
107
|
end
|
107
108
|
|
108
109
|
test '#deploy_steps returns `deploy.override` if present' do
|
109
|
-
@spec.stubs(:load_config).returns('deploy' => {'override' => %w(foo bar baz)})
|
110
|
+
@spec.stubs(:load_config).returns('deploy' => { 'override' => %w(foo bar baz) })
|
110
111
|
assert_equal %w(foo bar baz), @spec.deploy_steps
|
111
112
|
end
|
112
113
|
|
@@ -161,7 +162,7 @@ module Shipit
|
|
161
162
|
end
|
162
163
|
|
163
164
|
test "#deploy_steps prepend and append pre and post steps" do
|
164
|
-
@spec.stubs(:load_config).returns('deploy' => {'pre' => ['before'], 'post' => ['after']})
|
165
|
+
@spec.stubs(:load_config).returns('deploy' => { 'pre' => ['before'], 'post' => ['after'] })
|
165
166
|
@spec.expects(:bundler?).returns(true).at_least_once
|
166
167
|
@spec.expects(:capistrano?).returns(true)
|
167
168
|
assert_equal ['before', 'bundle exec cap $ENVIRONMENT deploy', 'after'], @spec.deploy_steps
|
@@ -175,7 +176,7 @@ module Shipit
|
|
175
176
|
end
|
176
177
|
|
177
178
|
test '#rollback_steps returns `rollback.override` if present' do
|
178
|
-
@spec.stubs(:load_config).returns('rollback' => {'override' => %w(foo bar baz)})
|
179
|
+
@spec.stubs(:load_config).returns('rollback' => { 'override' => %w(foo bar baz) })
|
179
180
|
assert_equal %w(foo bar baz), @spec.rollback_steps
|
180
181
|
end
|
181
182
|
|
@@ -186,7 +187,7 @@ module Shipit
|
|
186
187
|
end
|
187
188
|
|
188
189
|
test "#rollback_steps prepend and append pre and post steps" do
|
189
|
-
@spec.stubs(:load_config).returns('rollback' => {'pre' => ['before'], 'post' => ['after']})
|
190
|
+
@spec.stubs(:load_config).returns('rollback' => { 'pre' => ['before'], 'post' => ['after'] })
|
190
191
|
@spec.expects(:bundler?).returns(true).at_least_once
|
191
192
|
@spec.expects(:capistrano?).returns(true)
|
192
193
|
assert_equal ['before', 'bundle exec cap $ENVIRONMENT deploy:rollback', 'after'], @spec.rollback_steps
|
@@ -255,14 +256,14 @@ module Shipit
|
|
255
256
|
end
|
256
257
|
|
257
258
|
test '#machine_env returns an environment hash' do
|
258
|
-
@spec.stubs(:load_config).returns('machine' => {'environment' => {'GLOBAL' => '1'}})
|
259
|
-
assert_equal({'GLOBAL' => '1'}, @spec.machine_env)
|
259
|
+
@spec.stubs(:load_config).returns('machine' => { 'environment' => { 'GLOBAL' => '1' } })
|
260
|
+
assert_equal({ 'GLOBAL' => '1' }, @spec.machine_env)
|
260
261
|
end
|
261
262
|
|
262
263
|
test '#load_config can grab the env-specific shipit.yml file' do
|
263
264
|
config = {}
|
264
265
|
config.expects(:exist?).returns(true)
|
265
|
-
config.expects(:read).returns({'dependencies' => {'override' => %w(foo bar baz)}}.to_yaml)
|
266
|
+
config.expects(:read).returns({ 'dependencies' => { 'override' => %w(foo bar baz) } }.to_yaml)
|
266
267
|
spec = DeploySpec::FileSystem.new('.', 'staging')
|
267
268
|
spec.expects(:file).with('shipit.staging.yml', root: true).returns(config)
|
268
269
|
assert_equal %w(foo bar baz), spec.dependencies_steps
|
@@ -274,7 +275,7 @@ module Shipit
|
|
274
275
|
|
275
276
|
config = {}
|
276
277
|
config.expects(:exist?).returns(true)
|
277
|
-
config.expects(:read).returns({'dependencies' => {'override' => %w(foo bar baz)}}.to_yaml)
|
278
|
+
config.expects(:read).returns({ 'dependencies' => { 'override' => %w(foo bar baz) } }.to_yaml)
|
278
279
|
|
279
280
|
spec = DeploySpec::FileSystem.new('.', 'staging')
|
280
281
|
spec.expects(:file).with('shipit.staging.yml', root: true).returns(not_config)
|
@@ -352,16 +353,16 @@ module Shipit
|
|
352
353
|
'blocking' => [],
|
353
354
|
},
|
354
355
|
'machine' => {
|
355
|
-
'environment' => {'BUNDLE_PATH' => @spec.bundle_path.to_s},
|
356
|
+
'environment' => { 'BUNDLE_PATH' => @spec.bundle_path.to_s },
|
356
357
|
'directory' => nil,
|
357
358
|
'cleanup' => true,
|
358
359
|
},
|
359
|
-
'review' => {'checklist' => [], 'monitoring' => [], 'checks' => []},
|
360
|
+
'review' => { 'checklist' => [], 'monitoring' => [], 'checks' => [] },
|
360
361
|
'status' => {
|
361
362
|
'context' => nil,
|
362
363
|
'delay' => 0,
|
363
364
|
},
|
364
|
-
'dependencies' => {'override' => []},
|
365
|
+
'dependencies' => { 'override' => [] },
|
365
366
|
'plugins' => {},
|
366
367
|
'deploy' => {
|
367
368
|
'override' => nil,
|
@@ -369,7 +370,7 @@ module Shipit
|
|
369
370
|
'max_commits' => 8,
|
370
371
|
'interval' => 0,
|
371
372
|
},
|
372
|
-
'rollback' => {'override' => nil},
|
373
|
+
'rollback' => { 'override' => nil },
|
373
374
|
'fetch' => nil,
|
374
375
|
'tasks' => {},
|
375
376
|
}
|
@@ -381,11 +382,11 @@ module Shipit
|
|
381
382
|
end
|
382
383
|
|
383
384
|
test "#deploy_variables returns an array of VariableDefinition instances" do
|
384
|
-
@spec.stubs(:load_config).returns('deploy' => {'variables' => [{
|
385
|
+
@spec.stubs(:load_config).returns('deploy' => { 'variables' => [{
|
385
386
|
'name' => 'SAFETY_DISABLED',
|
386
387
|
'title' => 'Set to 1 to do dangerous things',
|
387
388
|
'default' => 0,
|
388
|
-
}]})
|
389
|
+
}] })
|
389
390
|
|
390
391
|
assert_equal 1, @spec.deploy_variables.size
|
391
392
|
variable_definition = @spec.deploy_variables.first
|
@@ -393,13 +394,13 @@ module Shipit
|
|
393
394
|
end
|
394
395
|
|
395
396
|
test "task definitions don't prepend bundle exec by default" do
|
396
|
-
@spec.expects(:load_config).returns('tasks' => {'restart' => {'steps' => %w(foo)}})
|
397
|
+
@spec.expects(:load_config).returns('tasks' => { 'restart' => { 'steps' => %w(foo) } })
|
397
398
|
definition = @spec.find_task_definition('restart')
|
398
399
|
assert_equal ['foo'], definition.steps
|
399
400
|
end
|
400
401
|
|
401
402
|
test "task definitions don't bundle exec before serialization" do
|
402
|
-
@spec.expects(:discover_task_definitions).returns('restart' => {'steps' => %w(foo)})
|
403
|
+
@spec.expects(:discover_task_definitions).returns('restart' => { 'steps' => %w(foo) })
|
403
404
|
@spec.expects(:bundler?).returns(true).at_least_once
|
404
405
|
|
405
406
|
cached_spec = DeploySpec.load(DeploySpec.dump(@spec))
|
@@ -418,18 +419,18 @@ module Shipit
|
|
418
419
|
module TestTaskDiscovery
|
419
420
|
def discover_task_definitions
|
420
421
|
{
|
421
|
-
'config_task' => {'steps' => %w(bar)},
|
422
|
+
'config_task' => { 'steps' => %w(bar) },
|
422
423
|
}.merge!(super)
|
423
424
|
end
|
424
425
|
end
|
425
426
|
|
426
427
|
# Include the module in our new test class
|
427
|
-
DuplicateCustomizedDeploySpec.include
|
428
|
+
DuplicateCustomizedDeploySpec.include(TestTaskDiscovery)
|
428
429
|
|
429
430
|
# Setup the spec as we would normally, but use the customized version
|
430
431
|
@spec = DuplicateCustomizedDeploySpec.new(@app_dir, 'env')
|
431
432
|
@spec.stubs(:load_config).returns(
|
432
|
-
'tasks' => {'config_task' => {'steps' => %w(foo)}},
|
433
|
+
'tasks' => { 'config_task' => { 'steps' => %w(foo) } },
|
433
434
|
)
|
434
435
|
tasks = @spec.task_definitions
|
435
436
|
|
@@ -448,18 +449,18 @@ module Shipit
|
|
448
449
|
module TestTaskDiscovery
|
449
450
|
def discover_task_definitions
|
450
451
|
{
|
451
|
-
'module_task' => {'steps' => %w(bar)},
|
452
|
+
'module_task' => { 'steps' => %w(bar) },
|
452
453
|
}.merge(super)
|
453
454
|
end
|
454
455
|
end
|
455
456
|
|
456
457
|
# Include the module in our new test class
|
457
|
-
CustomizedDeploySpec.include
|
458
|
+
CustomizedDeploySpec.include(TestTaskDiscovery)
|
458
459
|
|
459
460
|
# Setup the spec as we would normally, but use the customized version
|
460
461
|
@spec = CustomizedDeploySpec.new(@app_dir, 'env')
|
461
462
|
@spec.stubs(:load_config).returns(
|
462
|
-
'tasks' => {'config_task' => {'steps' => %w(foo)}},
|
463
|
+
'tasks' => { 'config_task' => { 'steps' => %w(foo) } },
|
463
464
|
'kubernetes' => {
|
464
465
|
'namespace' => 'foo',
|
465
466
|
'context' => 'bar',
|
@@ -484,7 +485,7 @@ module Shipit
|
|
484
485
|
|
485
486
|
test "task definitions returns an array of VariableDefinition instances" do
|
486
487
|
@spec.expects(:load_config).returns('tasks' =>
|
487
|
-
{'restart' =>
|
488
|
+
{ 'restart' =>
|
488
489
|
{
|
489
490
|
'variables' => [
|
490
491
|
{
|
@@ -499,8 +500,7 @@ module Shipit
|
|
499
500
|
},
|
500
501
|
],
|
501
502
|
'steps' => %w(foo),
|
502
|
-
}
|
503
|
-
})
|
503
|
+
} })
|
504
504
|
|
505
505
|
assert_equal 2, @spec.task_definitions.first.variables.size
|
506
506
|
variable_definition = @spec.task_definitions.first.variables.first
|
@@ -512,7 +512,7 @@ module Shipit
|
|
512
512
|
end
|
513
513
|
|
514
514
|
test "#review_checklist returns an array" do
|
515
|
-
@spec.expects(:load_config).returns('review' => {'checklist' => %w(foo bar)})
|
515
|
+
@spec.expects(:load_config).returns('review' => { 'checklist' => %w(foo bar) })
|
516
516
|
assert_equal %w(foo bar), @spec.review_checklist
|
517
517
|
end
|
518
518
|
|
@@ -521,13 +521,13 @@ module Shipit
|
|
521
521
|
end
|
522
522
|
|
523
523
|
test "#review_monitoring returns an array of hashes" do
|
524
|
-
@spec.expects(:load_config).returns('review' => {'monitoring' => [
|
525
|
-
{'image' => 'http://example.com/foo.png', 'width' => 200, 'height' => 400},
|
526
|
-
{'iframe' => 'http://example.com/', 'width' => 200, 'height' => 400},
|
527
|
-
]})
|
524
|
+
@spec.expects(:load_config).returns('review' => { 'monitoring' => [
|
525
|
+
{ 'image' => 'http://example.com/foo.png', 'width' => 200, 'height' => 400 },
|
526
|
+
{ 'iframe' => 'http://example.com/', 'width' => 200, 'height' => 400 },
|
527
|
+
] })
|
528
528
|
assert_equal [
|
529
|
-
{'image' => 'http://example.com/foo.png', 'width' => 200, 'height' => 400},
|
530
|
-
{'iframe' => 'http://example.com/', 'width' => 200, 'height' => 400},
|
529
|
+
{ 'image' => 'http://example.com/foo.png', 'width' => 200, 'height' => 400 },
|
530
|
+
{ 'iframe' => 'http://example.com/', 'width' => 200, 'height' => 400 },
|
531
531
|
], @spec.review_monitoring
|
532
532
|
end
|
533
533
|
|
@@ -540,12 +540,12 @@ module Shipit
|
|
540
540
|
end
|
541
541
|
|
542
542
|
test "#hidden_statuses is an array even if the value is a string" do
|
543
|
-
@spec.expects(:load_config).returns('ci' => {'hide' => 'ci/circleci'})
|
543
|
+
@spec.expects(:load_config).returns('ci' => { 'hide' => 'ci/circleci' })
|
544
544
|
assert_equal %w(ci/circleci), @spec.hidden_statuses
|
545
545
|
end
|
546
546
|
|
547
547
|
test "#hidden_statuses is an array even if the value is present" do
|
548
|
-
@spec.expects(:load_config).returns('ci' => {'hide' => %w(ci/circleci ci/jenkins)})
|
548
|
+
@spec.expects(:load_config).returns('ci' => { 'hide' => %w(ci/circleci ci/jenkins) })
|
549
549
|
assert_equal %w(ci/circleci ci/jenkins), @spec.hidden_statuses
|
550
550
|
end
|
551
551
|
|
@@ -677,7 +677,7 @@ module Shipit
|
|
677
677
|
|
678
678
|
test "#file is impacted by `machine.directory`" do
|
679
679
|
subdir = '/foo/bar'
|
680
|
-
@spec.stubs(:load_config).returns('machine' => {'directory' => subdir})
|
680
|
+
@spec.stubs(:load_config).returns('machine' => { 'directory' => subdir })
|
681
681
|
assert_instance_of Pathname, @spec.file('baz')
|
682
682
|
assert_equal File.join(@app_dir, subdir, 'baz'), @spec.file('baz').to_s
|
683
683
|
end
|
@@ -1084,5 +1084,10 @@ module Shipit
|
|
1084
1084
|
)
|
1085
1085
|
assert_nil @spec.max_divergence_age
|
1086
1086
|
end
|
1087
|
+
|
1088
|
+
test "serialised deploy specs are normalised" do
|
1089
|
+
stack = shipit_stacks(:shipit)
|
1090
|
+
assert_equal stack.cached_deploy_spec_before_type_cast, DeploySpec.dump(stack.cached_deploy_spec)
|
1091
|
+
end
|
1087
1092
|
end
|
1088
1093
|
end
|