From e71ac70c3187dab27a4c1d8459fcf3fcae4776c2 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Thu, 8 Feb 2024 15:55:00 +1100 Subject: [PATCH 1/3] Align `as_json` method (use args instead of kwargs) --- app/models/concerns/attr_encrypted_support.rb | 7 ++++--- app/models/deploy.rb | 4 ++-- plugins/env/app/models/environment_variable_group.rb | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/models/concerns/attr_encrypted_support.rb b/app/models/concerns/attr_encrypted_support.rb index 6ef24a622f..0a158b4912 100644 --- a/app/models/concerns/attr_encrypted_support.rb +++ b/app/models/concerns/attr_encrypted_support.rb @@ -11,14 +11,15 @@ def self.included(base) base.extend ClassMethods end - def as_json(except: [], **options) - except += [ + def as_json(options = {}) + options[:except] ||= [] + options[:except] += [ :encryption_key_sha, *self.class.encrypted_attributes.keys.flat_map do |column| [column, :"encrypted_#{column}_iv", :"encrypted_#{column}"] end ] - super(except: except, **options) + super(options) end private diff --git a/app/models/deploy.rb b/app/models/deploy.rb index e49f4dc5be..aefed6b292 100644 --- a/app/models/deploy.rb +++ b/app/models/deploy.rb @@ -231,8 +231,8 @@ def csv_line ] end - def as_json(methods: []) - hash = super(methods: [:status, :url, :production, :commit] + methods) + def as_json(options = {}) + hash = super({methods: [:status, :url, :production, :commit] + options.fetch(:methods, [])}) hash["summary"] = summary_for_timeline hash end diff --git a/plugins/env/app/models/environment_variable_group.rb b/plugins/env/app/models/environment_variable_group.rb index eb684e7261..ecacd6292b 100644 --- a/plugins/env/app/models/environment_variable_group.rb +++ b/plugins/env/app/models/environment_variable_group.rb @@ -22,7 +22,8 @@ def variable_names environment_variables.sort_by(&:id).map(&:name).uniq end - def as_json(methods: [], **options) + def as_json(options = {}) + methods = options.delete(:methods) || [] super({methods: [:variable_names] + methods}.merge(options)) end From 8f2fcf317a78116c44f1ab354ee48d8794b3eb94 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Fri, 9 Feb 2024 12:47:16 +1100 Subject: [PATCH 2/3] Tests: use keyword arguments for Ruby 3 compatibility --- plugins/datadog/test/models/datadog_deploy_event_test.rb | 4 ++-- plugins/datadog/test/models/datadog_monitor_test.rb | 4 ++-- test/controllers/integrations/travis_controller_test.rb | 2 +- test/lib/samson/form_builder_test.rb | 4 ++-- test/lib/samson/secrets/vault_client_wrapper_test.rb | 2 +- test/models/image_builder_test.rb | 2 +- test/test_helper.rb | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/datadog/test/models/datadog_deploy_event_test.rb b/plugins/datadog/test/models/datadog_deploy_event_test.rb index b96853a074..72cf58b1c0 100644 --- a/plugins/datadog/test/models/datadog_deploy_event_test.rb +++ b/plugins/datadog/test/models/datadog_deploy_event_test.rb @@ -7,8 +7,8 @@ let(:deploy) { deploys(:succeeded_test) } describe '.deliver' do - def deliver(*args) - DatadogDeployEvent.deliver(deploy, *args) + def deliver(**args) + DatadogDeployEvent.deliver(deploy, **args) end def expected_body(overrides = {}) diff --git a/plugins/datadog/test/models/datadog_monitor_test.rb b/plugins/datadog/test/models/datadog_monitor_test.rb index 5cea5e7dd6..1ad6b6ed12 100644 --- a/plugins/datadog/test/models/datadog_monitor_test.rb +++ b/plugins/datadog/test/models/datadog_monitor_test.rb @@ -66,7 +66,7 @@ def assert_datadog_timeout(&block) end it "shows Alert when groups are alerting" do - assert_datadog alerting_groups do + assert_datadog(**alerting_groups) do monitor.state(groups).must_equal "Alert" end end @@ -110,7 +110,7 @@ def assert_datadog_timeout(&block) it "produces no extra sql queries" do stage = stages(:test_production) # preload assert_sql_queries 1 do # group-stage and groups - assert_datadog alerting_groups do + assert_datadog(**alerting_groups) do monitor.state(stage.deploy_groups) end end diff --git a/test/controllers/integrations/travis_controller_test.rb b/test/controllers/integrations/travis_controller_test.rb index 7e06d6e57d..a5e57be59a 100644 --- a/test/controllers/integrations/travis_controller_test.rb +++ b/test/controllers/integrations/travis_controller_test.rb @@ -6,7 +6,7 @@ describe Integrations::TravisController do extend IntegrationsControllerTestHelper - def post(_action, options) + def post(_action, **options) options[:params][:payload] = options[:params][:payload].to_json super end diff --git a/test/lib/samson/form_builder_test.rb b/test/lib/samson/form_builder_test.rb index 0e0e796d89..b6f162e88c 100644 --- a/test/lib/samson/form_builder_test.rb +++ b/test/lib/samson/form_builder_test.rb @@ -172,9 +172,9 @@ def fake_erb_rendering # NOTE: ideally don't use a plugin model, but we need something with accepts_nested_attributes_for describe '#fields_for_many' do - def render(*args) + def render(*args, **kwargs) project.rollbar_dashboards_settings.build # TODO: this does not get rendered - builder.fields_for_many(*args) do |p| + builder.fields_for_many(*args, **kwargs) do |p| p.text_field :base_url, placeholder: 'thing!' end end diff --git a/test/lib/samson/secrets/vault_client_wrapper_test.rb b/test/lib/samson/secrets/vault_client_wrapper_test.rb index 56a787807d..cfd22bc3d3 100644 --- a/test/lib/samson/secrets/vault_client_wrapper_test.rb +++ b/test/lib/samson/secrets/vault_client_wrapper_test.rb @@ -14,7 +14,7 @@ it 'calls Vault::Client initialize with other arguments' do client_args = {versioned_kv: true, use_ssl: true, timeout: 543, ssl_timeout: 345} - client = Samson::Secrets::VaultClientWrapper.new(client_args) + client = Samson::Secrets::VaultClientWrapper.new(**client_args) client.instance_variable_get(:@ssl_verify).must_equal true client.instance_variable_get(:@timeout).must_equal 543 diff --git a/test/models/image_builder_test.rb b/test/models/image_builder_test.rb index 6520e585c8..2fd889da2c 100644 --- a/test/models/image_builder_test.rb +++ b/test/models/image_builder_test.rb @@ -20,7 +20,7 @@ def call(options = {}) defaults = {tag_as_latest: false, dockerfile: 'Dockerfile', tag: 'tag', cache_from: 'cache'} - ImageBuilder.build_image("foo", build, executor, defaults.merge(options)) + ImageBuilder.build_image("foo", build, executor, **defaults.merge(options)) end it "builds and pushes" do diff --git a/test/test_helper.rb b/test/test_helper.rb index 7205a490a7..8e7b1faa97 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -343,8 +343,8 @@ def warden # catch warden throw ... which would normally go into warden middleware and then be an unauthorized response prepend(Module.new do - def process(*args) - catch(:warden) { return super } + def process(...) + catch(:warden) { return super(...) } response.status = :unauthorized response.body = ":warden caught in test_helper.rb" response From de800250dba26c2ae2a374e88a73e858e05c14ab Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Sun, 11 Feb 2024 12:09:31 +1100 Subject: [PATCH 3/3] Tests: use kwargs in CSV tests for Ruby 3 compatibility --- test/presenters/user_csv_presenter_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/presenters/user_csv_presenter_test.rb b/test/presenters/user_csv_presenter_test.rb index 6ee308860f..a23425d95a 100644 --- a/test/presenters/user_csv_presenter_test.rb +++ b/test/presenters/user_csv_presenter_test.rb @@ -33,14 +33,14 @@ def csv_completeness_test(options = {}, expected = {}) meta_rows = 3 - UserCsvPresenter.to_csv(options).split("\n").size.must_equal expected + meta_rows - UserCsvPresenter.to_csv(options).split("\n")[-2].split(",")[-1].to_i.must_equal expected + UserCsvPresenter.to_csv(**options).split("\n").size.must_equal expected + meta_rows + UserCsvPresenter.to_csv(**options).split("\n")[-2].split(",")[-1].to_i.must_equal expected end # on updating #csv_line this test helper may need to be updated # This tests the optimized logic against the non-optimized logic. def csv_accuracy_test(options = {}) - actual = CSV.parse(UserCsvPresenter.to_csv(options)) + actual = CSV.parse(UserCsvPresenter.to_csv(**options)) actual.shift actual.pop(2) actual.each do |csv_row|